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

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

Android Scroller的使用方法

瀏覽:25日期: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欧美极品| 欧美日韩国产v| 日韩伦理福利| 亚洲成人av观看| 日韩高清成人| 婷婷亚洲五月| 日韩影院免费视频| 日韩一区中文| 国产精品毛片视频| 国产69精品久久| 色婷婷精品视频| 欧美日韩精品一区二区视频| 欧美搞黄网站| 亚洲三级毛片| 欧美经典一区| 91综合网人人| 国产一区日韩一区| 久久xxxx| 国产精品一区三区在线观看| 丁香婷婷久久| 1024精品久久久久久久久| 在线国产日韩| 国产乱码精品一区二区三区四区| 国产精品免费精品自在线观看| 国产一区二区三区网| 久久国产日韩| 蜜桃视频一区二区| 国产精品一线| 日韩中文首页| 日本大胆欧美人术艺术动态| 日韩国产91| 97精品国产| 国产亚洲在线观看| 国产精品视频一区二区三区| 成人日韩精品| 亚洲精品四区| 精品国产中文字幕第一页| 亚洲一级二级| 国产一精品一av一免费爽爽| 亚洲啊v在线| 日韩影院在线观看| 精品中国亚洲| 奶水喷射视频一区| 欧美1区2区3| 999在线观看精品免费不卡网站| 亚洲精品大片| 欧美xxxx中国| 久色成人在线| 国产91在线精品| 麻豆精品网站| 日韩成人免费| 婷婷综合国产| 欧美成人a交片免费看| 视频在线在亚洲| 国产成人黄色| 免费一级片91| 日韩另类视频| 国产剧情一区| 久久国产高清| 成人在线超碰| 五月激激激综合网色播| 麻豆视频在线看| 青青草91视频| 伊人精品视频| 精品伊人久久久| 亚洲专区视频| 久久九九电影| 国产精品亚洲产品| 视频一区在线视频| 久久久天天操| 久久一区欧美| 深夜日韩欧美| 婷婷丁香综合| 色一区二区三区四区| 日韩av一区二区在线影视| 欧美精品一二| 精品久久久亚洲| 日韩综合小视频| 天堂网在线观看国产精品| 红杏一区二区三区| 91欧美日韩在线| 久久国产成人| 午夜久久免费观看| 97精品国产一区二区三区| 久久精品超碰| 天堂俺去俺来也www久久婷婷| 91精品成人| 欧美日韩精品免费观看视欧美高清免费大片 | 国产videos久久| 日韩国产成人精品| 噜噜噜久久亚洲精品国产品小说| 播放一区二区| 黑人精品一区| 成人国产精品久久| 精品免费av一区二区三区| 国产另类在线| 日韩影片在线观看| 蘑菇福利视频一区播放| 韩日一区二区三区| 亚洲www啪成人一区二区| 国产videos久久| 精品午夜视频| 国产一区二区久久久久| 精品一区二区三区免费看| 国产精品玖玖玖在线资源| 日韩国产在线一| 亚洲涩涩av| 免费视频最近日韩| 亚洲有吗中文字幕| 亚洲区国产区| 综合日韩在线| 蜜桃免费网站一区二区三区| 99久久婷婷| 欧美91精品| 合欧美一区二区三区| 欧美亚洲国产精品久久| 久久人人97超碰国产公开结果| 欧美天堂视频| 欧美日韩一二三四| 激情久久中文字幕| 午夜欧美视频| 水蜜桃久久夜色精品一区的特点| 尹人成人综合网| 亚洲免费激情| 免费成人av在线播放| 亚洲精品第一| 国产欧美日韩一区二区三区在线| 青青青国产精品| 国产精品啊啊啊| 精品视频高潮| 九色porny丨国产首页在线| 伊人久久高清| 亚洲成人一区| 免费在线成人网| 日本精品一区二区三区在线观看视频 | 国产欧美三级| 久久久国产精品网站| 丁香婷婷久久| 色婷婷精品视频| 欧美日韩国产免费观看| 国产亚洲一区二区手机在线观看| 成人久久一区| 亚洲综合国产| 日韩不卡一区二区| 里番精品3d一二三区| 日韩免费看片| 国产视频一区三区| 日韩国产欧美三级| 久久wwww| 99tv成人| 中文字幕中文字幕精品| 欧美精品国产一区| 激情视频网站在线播放色 | 国产精选在线| 国产精品99一区二区| 蜜桃久久av一区| 国产精品极品| 亚洲va中文在线播放免费| 好看的亚洲午夜视频在线| 亚洲18在线| 精品一区二区三区中文字幕| 九九色在线视频| 丝袜亚洲精品中文字幕一区| 日韩av在线免费观看不卡| 精品国产乱码久久久| 女主播福利一区| 久久狠狠亚洲综合| 中文另类视频| 亚洲v天堂v手机在线| 国产精品亚洲欧美日韩一区在线| 欧美aa一级| 日韩精品午夜视频| 九九精品调教| 亚欧成人精品| 亚洲黄色免费看| 中文字幕免费一区二区| 红杏一区二区三区| 免费观看在线色综合| 精品不卡一区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产精品毛片aⅴ一区二区三区| 99视频精品视频高清免费| 久久国产精品久久w女人spa| 国产精品xxxav免费视频| 免费视频国产一区| 国产精品免费精品自在线观看| 亚洲性图久久| 国产精品一区二区av日韩在线| 久久精品国产大片免费观看| 欧美精品福利| 在线一区视频| 国产精品成人a在线观看| 亚洲精品无吗| 欧美日韩中文一区二区| 国产精品久久久久av蜜臀| 99pao成人国产永久免费视频 | 91精品一区二区三区综合| 日本不卡不码高清免费观看| 成人羞羞视频播放网站|