摘要:一由此看出,是在的基礎上,是針對初始位置,是針對當前位置的初始位置的位置是再次調用,的位置仍然是是的初始位置的位置是再次調用,的位置仍然是是是滑動的計時工具類,仍需依靠調用實現的移動定義了一個計時器,在指定時間內,由到由到每次調用,是否在指
一.scrollTo,scrollBy
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(); } } }
public void scrollBy(int x, int y) { scrollTo(mScrollX + x, mScrollY + y); }
由此看出,scrollBy是在scrollTo的基礎上, scrollTo是針對初始位置,scrollBy是針對當前位置
View的初始位置(0,0), scrllTo(100,100), View的位置是(100,100),再次調用scrllTo(100,100), View的位置仍然是是(100,100)
View的初始位置(0,0), scrllBy(100,100), View的位置是(100,100),再次調用scrllBy(100,100), View的位置仍然是是(200,200)
2.Scroller
startScroll(startX, startY, dx, dy, duration)
computeScrollOffset
View.computeScroll()
Scroller是滑動的計時工具類,仍需依靠調用scrollTo實現View的移動
startScroll定義了一個計時器,在指定時間內,x由startX到dx,y由startY到dy;
computeScrollOffset() 每次調用,是否在指定時間內,如在,根據時間設置Scorller.mCurrX,mCurrY;
computeScroll是View的空方法,在draw中調用,也就是會被不停的調用,所以重寫computeScroll,調用computeScrollOffset,獲取mCurrX,mCurrY,設置scrollTo,完成移動;
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/70774.html
摘要:內部是調用效果是移動的內容,因此需要在的父控件中調用。和的情況相似,手機屏幕向下移動,為正值手機屏幕向上移動,為負值。 目錄介紹 8.0.0.1 簡述Android的事件分發機制?dispatchTouchEvent方法的作用是什么?說下View和ViewGroup分發事件? 8.0.0.2 onInterceptTouchEvent方法作用是什么?onTouchEvent的方法的作...
摘要:滑動抖動問題分析向上滾動無法被外部中斷和子的聯動時通過實現的,使用的繼承了。當產生的向上的沒有結束時,又送來向下的,抖動就產生了。反射獲取私有的屬性,考慮以后變量名修改的問題及一下版本可能是及以上版本然后在攔截事件里處理邏輯。 目錄介紹 01.CoordinatorLayout滑動抖動問題描述 02.滑動抖動問題分析 03.自定義AppBarLayout.Behavior說明 04....
閱讀 1756·2023-04-25 16:28
閱讀 691·2021-11-23 09:51
閱讀 1475·2019-08-30 15:54
閱讀 1159·2019-08-30 15:53
閱讀 2827·2019-08-30 15:53
閱讀 3422·2019-08-30 15:43
閱讀 3263·2019-08-30 11:18
閱讀 3281·2019-08-26 10:25