Android 實(shí)現(xiàn)滑動(dòng)方法總結(jié)
Android 實(shí)現(xiàn)滑動(dòng)方法總結(jié)
本文對(duì)Android 滑動(dòng)提供了七種方法,對(duì)于每一種實(shí)現(xiàn)方法都進(jìn)行了詳細(xì)介紹,按照需要大家可以參考下,
1.1 用Layout方法
我們知道,當(dāng)view在繪制時(shí)會(huì)調(diào)用onlayout方法來設(shè)置顯示位置。同樣也可以通過view的left、top, right,buttom 四個(gè)屬性來控制view的坐標(biāo)。每次在ontouchevent的時(shí)候,我們都要獲取一下觸摸點(diǎn)的坐標(biāo)。
@Override public boolean onTouchEvent(MotionEvent event) { int x = (int) event.getX(); int y = (int) event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: lastX = x; lastY = y; break; case MotionEvent.ACTION_MOVE: int offsetx = (int) (x - lastX); int offsety = (int) (y - lastY); layout(getLeft() + offsetx, getTop() + offsety, getRight() + offsetx, getBottom() + offsety);
//重新獲取偏移量,在獲取絕對(duì)坐標(biāo)的時(shí)候需要非常注意,因?yàn)槿绻@里不注意的話容易獲取錯(cuò)誤的坐標(biāo) lastX = x; lastY = y; break; } return true; }
1.2 使用offsetLeftAndRight(),offsetTopAndBottom()
這個(gè)只要知道偏移量就可以使用此方法來進(jìn)行寵幸繪畫。相當(dāng)于對(duì)左右偏移和上下偏移做了一個(gè)封裝。
1.3 使用layoutparms來實(shí)現(xiàn)view的移動(dòng)
這個(gè)要注意的是必須使用父布局類型的layoutpamrs,不然這里將會(huì)出錯(cuò);當(dāng)然有更簡(jiǎn)便的方法,如果使用viewgroup.marginlayoutParams就不需要考慮父控件您的類型了。
1.4 使用scrollyTo和scrollBy來實(shí)現(xiàn)
在view 中,系統(tǒng)提供了scrollyTo和scrollyBy兩個(gè)方法來改變view的位置。這兩個(gè)方法非常好理解,scrollyto是移動(dòng)到一個(gè)指定的位置,scrollyBy是移動(dòng)的是view的一個(gè)偏移量,他實(shí)際上也調(diào)用了scrollyTo方法。他們只能改變view的內(nèi)容布局,而不能改變view本身的位置,并沒有實(shí)現(xiàn)真正意義上的滑動(dòng),他改變的是內(nèi)容的位置。如果在viewgroup中使用它移動(dòng)的是所有的子view,而在view中使用,他移動(dòng)的是view的內(nèi)容。還有就是他們的移動(dòng)都是瞬間完成的,在事件觸發(fā)時(shí)就已經(jīng)完成了。
1.5 使用scroller
通過scrooler我們可以平滑的移動(dòng)view,
1.6屬性動(dòng)畫
1.7 viewdraghelper
通過viewdragHelper我們基本可以實(shí)現(xiàn)各種動(dòng)畫操作。但是他的使用方法比較復(fù)雜:
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- Android ListView滑動(dòng)改變標(biāo)題欄背景漸變效果
- Android開發(fā)中如何解決Fragment +Viewpager滑動(dòng)頁(yè)面重復(fù)加載的問題
- Android用Scroller實(shí)現(xiàn)一個(gè)可向上滑動(dòng)的底部導(dǎo)航欄
- Android嵌套R(shí)ecyclerView左右滑動(dòng)替代自定義view
- Android實(shí)現(xiàn)探探圖片滑動(dòng)效果
- Android 頂部標(biāo)題欄隨滑動(dòng)時(shí)的漸變隱藏和漸變顯示效果
- Android使用TabLayou+fragment+viewpager實(shí)現(xiàn)滑動(dòng)切換頁(yè)面效果
- Android中Viewpager禁止滑動(dòng)的實(shí)現(xiàn)
相關(guān)文章
Android編程實(shí)現(xiàn)EditText字?jǐn)?shù)監(jiān)聽并顯示的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)EditText字?jǐn)?shù)監(jiān)聽并顯示的方法,涉及Android EditText文本框事件監(jiān)聽與響應(yīng)相關(guān)操作技巧,需要的朋友可以參考下2017-02-02另外兩種Android沉浸式狀態(tài)欄實(shí)現(xiàn)思路
這篇文章主要為大家介紹了另外兩種Android沉浸式狀態(tài)欄實(shí)現(xiàn)思路,android5.0及以后版本都支持給狀態(tài)欄著色,而目前android主流版本還是4.4,想要深入了解的朋友可以參考一下2016-01-01Android實(shí)現(xiàn)流動(dòng)的漸變色邊框效果
本文將帶大家學(xué)習(xí)一下如何利用toast中的motion_toast組件實(shí)現(xiàn)一個(gè)流動(dòng)的漸變色邊框效果,文中的示例代碼講解詳細(xì),快跟隨小編一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06詳解Android Studio3.5及使用AndroidX的一些坑
這篇文章主要介紹了詳解Android Studio3.5及使用AndroidX的一些坑,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Android TimerTask 的簡(jiǎn)單應(yīng)用及注意事項(xiàng)
這篇文章主要介紹了Android TimerTask 的簡(jiǎn)單應(yīng)用及注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下2017-06-06Android項(xiàng)目開發(fā)之UI設(shè)計(jì)器
這篇文章主要為大家詳細(xì)介紹了Android項(xiàng)目開發(fā)之UI設(shè)計(jì)器,具有一定的實(shí)用性和參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06Android Map新用法:MapFragment應(yīng)用介紹
MapView ,MapActivity 這種的局限在于,必須要繼承MapActivity,否則無法使用MapView,但是,MapFragment 這種的局限在于,必須要安裝Google Play Service ,也就是說必須是原生rom。而且sdk要在12以上2013-01-01