日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android Scroller的使用方法

瀏覽:22日期:2022-09-18 16:14:05

本文實例為大家分享了Android Scroller的使用方法,供大家參考,具體內容如下

1、scrollTo和ScrollBy

View類定義了兩個用于滾動View內容的方法:scrollTo和scrollBy:

/** * Set the scrolled position of your view. This will cause a call to * {@link #onScrollChanged(int, int, int, int)} and the view will be * invalidated. * @param x the x position to scroll to * @param y the y position to scroll to */public void scrollTo(int x, int y) { if (mScrollX != x || mScrollY != y) {int oldX = mScrollX;int oldY = mScrollY;mScrollX = x;mScrollY = y;invalidateParentCaches();onScrollChanged(mScrollX, mScrollY, oldX, oldY);if (!awakenScrollBars()) { postInvalidateOnAnimation();} }}/** * Move the scrolled position of your view. This will cause a call to * {@link #onScrollChanged(int, int, int, int)} and the view will be * invalidated. * @param x the amount of pixels to scroll by horizontally * @param y the amount of pixels to scroll by vertically */public void scrollBy(int x, int y) { scrollTo(mScrollX + x, mScrollY + y);}

可以看到scrollBy傳入的x和y參數實際上是X方向和Y方向的滾動距離的增量,最終還是調用了scrollTo方法。而scrollTo方法中做了一些刷新和通知操作,最重要的是對mScrollX和mScrollY進行了賦值。

在View的draw方法中,我們可以看到如下代碼:

int sx = 0;int sy = 0;if (!drawingWithRenderNode) { computeScroll(); sx = mScrollX; sy = mScrollY;}...if (offsetForScroll) { canvas.translate(mLeft - sx, mTop - sy);}

也就是說,mScrollX和mScrollY最終是用在了內容繪制的地方,其mLeft和mTop本身都沒有因為scrollTo發生變化。scrollTo作用在View的內容上,而不是View本身。

2、 computeScroll

在上面的View的draw方法的節選中我們看到在對mScrollX和mScrollY取值之前,調用了computeScroll方法。computeScroll方法聲明如下:

/** * Called by a parent to request that a child update its values for mScrollX * and mScrollY if necessary. This will typically be done if the child is * animating a scroll using a {@link android.widget.Scroller Scroller} * object. */public void computeScroll() {}

根據注釋,computeScroll的典型用法是與Scroller結合使用實現內容/字節點的滾動動畫。

3、Scroller的使用

Scroller事實上并不直接操作View的滾動,而是根據設置來計算當前X和Y方向的距離。Scroller的一般使用步驟:

1、初始化Scroller,可以指定插值器,不指定則使用默認的ViscousFluidInterpolator2、調用Scroller#startScroll方法,開始在一段時間內不斷計算X和Y方向的滾動3、通知View刷新4、在View#computeScroll中通過scrollTo實現真正的滾動操作5、通知View刷新

其中在滾動執行完成之前4和5會不斷地循環,直至scroller.computeScrollOffset()返回false。

class ScrollableLinearLayout @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : LinearLayout(context, attrs, defStyleAttr) { private val scroller = Scroller(context, BounceInterpolator()) override fun computeScroll() {if(scroller.computeScrollOffset()) { // 真正實現滾動操作的地方 scrollTo(scroller.currX, scroller.currY) // 刷新 invalidate()} } fun scroll() {// 調用Scroller的startScrollif(scrollX == 0) { scroller.startScroll(scrollX, scrollY, /*dx*/ -500, /*dy*/ 0, /*duration*/ 300)} else { scroller.startScroll(scrollX, scrollY, 500, 0, 300)}// 刷新invalidate() }}

xml布局:

<?xml version='1.0' encoding='utf-8'?><LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' xmlns:app='http://schemas.android.com/apk/res-auto' xmlns:tools='http://schemas.android.com/tools' android:layout_width='match_parent' android:layout_height='match_parent' android:orientation='vertical' tools:context='.scroller.activity.ScrollerSampleActivity'> <com.sahooz.customviewdemo.scroller.view.ScrollableLinearLayoutandroid: android:layout_width='match_parent'android:layout_height='200dp'android:gravity='center_vertical'android:orientation='vertical'android:background='#FFAAAA'><Button android: android:layout_width='wrap_content' android:layout_height='wrap_content' android:text='Scroll' /> </com.sahooz.customviewdemo.scroller.view.ScrollableLinearLayout></LinearLayout>

Activity

class ScrollerSampleActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_scroller_sample)val btnScroll = findViewById<Button>(R.id.btnScroll)btnScroll.setOnClickListener { findViewById<ScrollableLinearLayout>(R.id.sll).scroll()} }}

運行結果:

Android Scroller的使用方法

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲免费中文| 久久久久国产精品一区三寸| 欧美日一区二区三区在线观看国产免| 欧美午夜不卡| 久久国产日本精品| 91精品韩国| 免播放器亚洲一区| 国产视频网站一区二区三区| 日韩av中文字幕一区二区三区| 精品免费av| 日韩三区在线| 亚洲成人精品| 只有精品亚洲| 日韩成人免费| 亚洲黑丝一区二区| 欧美精品福利| 国产精品日韩久久久| 精品在线99| 国产日韩欧美| 国产美女久久| 免费在线小视频| 国产一区亚洲| 日韩成人av影视| 国产一区调教| 日韩精品高清不卡| 黄色在线观看www| 一级成人国产| 欧美日本二区| 日韩成人综合| 国产日韩三级| 中文在线免费视频| 妖精视频成人观看www| 日本免费在线视频不卡一不卡二| 国产suv精品一区二区四区视频| av在线日韩| 亚洲精品少妇| 欧美特黄a级高清免费大片a级| 亚洲一区导航| av资源中文在线天堂| 亚洲婷婷丁香| 日韩国产一区二区三区| 四虎精品一区二区免费| 久久久久.com| 亚洲一区二区免费看| 国产精品一区二区av日韩在线| 久久精品国产亚洲夜色av网站| 亚洲精品无播放器在线播放| 新版的欧美在线视频| 日韩高清一区在线| 久久久91麻豆精品国产一区| 91高清一区| 欧美日韩中出| 亚洲一区黄色| 福利欧美精品在线| 日韩精品1区2区3区| 久久国产日本精品| 精品一区二区三区视频在线播放 | 老鸭窝毛片一区二区三区| 精品国产一区二| 亚洲精品国产精品粉嫩| 激情欧美日韩一区| 成人午夜网址| 欧美激情福利| 男人的天堂久久精品| 亚洲不卡系列| 福利在线一区| 精品一区二区三区免费看| 欧美视频久久| 只有精品亚洲| 亚洲深夜影院| 亚洲性图久久| 欧美sss在线视频| 福利精品在线| 欧美激情综合| 国产精品115| 国产精品3区| 亚洲资源网站| 亚洲综合电影一区二区三区| 国产一区精品福利| 久久国内精品| 亚久久调教视频| 日韩影院免费视频| 黄色成人在线网址| 黄色亚洲大片免费在线观看| 99精品美女| bbw在线视频| 午夜一区在线| av一区二区高清| 视频二区不卡| 国产一区二区三区亚洲| 国产精久久一区二区| 国产精品亚洲四区在线观看 | 亚洲欧美日韩在线观看a三区| 久久亚洲专区| 久久婷婷亚洲| 欧美 日韩 国产精品免费观看| 日韩免费一区| 久久精品观看| 亚洲国产一区二区三区在线播放| 九九综合在线| 99在线精品视频在线观看| 亚洲免费中文| 日本91福利区| 国产亚洲精aa在线看| 日韩**一区毛片| 日本va欧美va欧美va精品| 久久狠狠久久| 日本一区二区高清不卡| 性感美女一区二区在线观看| 日韩在线观看中文字幕| 国产美女高潮在线观看| 国产一区二区视频在线看| 麻豆视频在线观看免费网站黄 | 久久久久久久久99精品大| 亚洲v在线看| 国产亚洲精品自拍| 蜜桃视频第一区免费观看| 欧美在线91| 成人国产精品一区二区网站| 亚洲无线一线二线三线区别av| 中文在线一区| 国产欧美精品| 91看片一区| 免播放器亚洲一区| 麻豆精品在线| 亚洲五月婷婷| 日韩av黄色在线| 91一区二区| 久久亚洲一区| 久久久免费人体| 色天使综合视频| 蜜桃久久av一区| 蜜桃久久久久| 国产一区欧美| 欧美精品国产| 日韩成人亚洲| 亚洲精品影院在线观看| 久久精品国产99国产精品| 欧美va天堂在线| 欧美在线91| 婷婷精品进入| 国产精品久久久久久久久久妞妞 | 国产视频亚洲| 欧美1区2区3| 在线成人直播| 精品一区免费| 欧美一级专区| 美女视频黄免费的久久| av亚洲一区二区三区| 亚洲精品视频一二三区| 亚洲精品永久免费视频| 热久久久久久久| 国产精品久久观看| 一级成人国产| 日韩欧美一区免费| 日韩精品视频网站| 久久精品国产68国产精品亚洲| 亚洲无线观看| www.九色在线| 日韩一区二区三区免费视频| 国产在线看片免费视频在线观看| 亚洲免费资源| 欧美1级日本1级| 成人在线视频免费看| 日韩成人午夜精品| 国产精品毛片| 日韩在线看片| 精品国产亚洲一区二区在线观看| 久久午夜影院| 石原莉奈一区二区三区在线观看| 美腿丝袜亚洲三区| 亚洲资源在线| 97人人精品| 欧美日韩1区2区3区| 亚洲精品一二三区区别| 国产在线一区不卡| 国产亚洲第一伦理第一区| 9色精品在线| 91精品一区二区三区综合| 国产福利一区二区精品秒拍| 视频一区在线播放| 激情偷拍久久| 成人午夜精品| 福利在线免费视频| 精品视频国产| 日韩精品91亚洲二区在线观看| 中文在线不卡| 99精品在线免费在线观看| 蜜桃久久久久| 久久不见久久见国语| 日韩av不卡在线观看| 一区二区国产在线观看| 久久精品99国产精品日本| 国产精品成人**免费视频 | 国产精品普通话对白| 丝袜av一区| 欧美日韩国产v| 偷拍精品精品一区二区三区| 精品视频自拍| 精品视频免费|