欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學(xué)堂教您入門操作android的嵌套滾動

2018-07-13 14:36:15 1567瀏覽

嵌套滾動在android操作中是google為我們提供一種新特性。從某種角度看可以理解為嵌套滾動是逆向的事件傳遞機制,接下來扣丁學(xué)堂小編就給大家講講詳細的操作方法及其原理,感興趣的小伙伴趕緊來圍觀吧。

原理如上圖所示。那么下邊我們從代碼的層面看一下實現(xiàn)。

代碼中主要涉及到了四個類:

NestedScrollingChild、NestedScrollingChildHelper、NestedScrollingParent、NestedScrollingParentHelper

先看NestedScrollingChild接口中定義的方法:

publicinterfaceNestedScrollingChild{

/**

*設(shè)置是否啟用嵌套滾動

*/

publicvoidsetNestedScrollingEnabled(booleanenabled);

/**

*判斷是否啟用嵌套滾動

*/

publicbooleanisNestedScrollingEnabled();

/**

*開始嵌套滾動

*@paramaxes標識方向,有x,y方形和默認值0

*/

publicbooleanstartNestedScroll(intaxes);

/**

*嵌套滾動結(jié)束

*/

publicvoidstopNestedScroll();

/**

*判斷父view是否支持嵌套滾動

*/

publicbooleanhasNestedScrollingParent();

/**

*分發(fā)嵌套滾動,一般再onTouch/onInterceptTouchEvent/dispatchTouchEvent中調(diào)用

*@paramdxConsumedx軸滾動的距離

*@paramdyConsumedy軸滾動的距離

*@paramdxUnconsumedx軸上未消費的距離

*@paramdyUnconsumedy軸上未消費的距離

*@paramoffsetInWindow子View的窗體偏移

*/

publicbooleandispatchNestedScroll(intdxConsumed,intdyConsumed,

intdxUnconsumed,intdyUnconsumed,int[]offsetInWindow);

/**

*滾動之前調(diào)用,進行分發(fā)預(yù)滾動事件

*/

publicbooleandispatchNestedPreScroll(intdx,intdy,int[]consumed,int[]offsetInWindow);

/**

*滑動時調(diào)用,分發(fā)滑動事件

*/

publicbooleandispatchNestedFling(floatvelocityX,floatvelocityY,booleanconsumed);

/**

*滾動之前調(diào)用,分發(fā)預(yù)滾動事件

*/

publicbooleandispatchNestedPreFling(floatvelocityX,floatvelocityY);

}

NestedScrollingParent接口中的方法均是與NestedScrollingChild中的方法一一對應(yīng)的:

publicinterfaceNestedScrollingParent{

publicbooleanonStartNestedScroll(Viewchild,Viewtarget,intnestedScrollAxes);

publicvoidonNestedScrollAccepted(Viewchild,Viewtarget,intnestedScrollAxes);

publicvoidonStopNestedScroll(Viewtarget);

publicvoidonNestedScroll(Viewtarget,intdxConsumed,intdyConsumed,

intdxUnconsumed,intdyUnconsumed);

publicvoidonNestedPreScroll(Viewtarget,intdx,intdy,int[]consumed);

publicbooleanonNestedFling(Viewtarget,floatvelocityX,

floatvelocityY,booleanconsumed);

publicbooleanonNestedPreFling(Viewtarget,floatvelocityX,floatvelocityY);

publicintgetNestedScrollAxes();

}

以上兩個類僅僅是定義了功能接口,真正的實現(xiàn)的代碼都包含在了NestedScrollingChildHelper和NestedScrollingParentHelper中。

處理流程:

1、當NestedScrollingChild(下文用Child代替)要開始滑動的時候會調(diào)用onStartNestedScroll,然后交給代理類NestedScrollingChildHelper(下文ChildHelper代替)的onStartNestedScroll請求給最近的NestedScrollingParent(下文Parent代替).

2、當ChildHelper的onStartNestedScroll方法返回true表示同意一起處理Scroll事件的時候時候,ChildHelper會通知Parent回調(diào)onNestedScrollAccepted做一些準備動作

3、當Child要開始滑動的時候,會先發(fā)送onNestedPreScroll,交給ChildHelper的onNestedPreScroll請求給Parent,告訴它我現(xiàn)在要滑動多少距離,你覺得行不行,這時候Parent根據(jù)實際情況告訴Child現(xiàn)在只允許你滑動多少距離.然后ChildHelper根據(jù)onNestedPreScroll中回調(diào)回來的信息對滑動距離做相對應(yīng)的調(diào)整.

4、在滑動的過程中Child會發(fā)送onNestedScroll通知ChildeHelpaer的onNestedScroll告知Parent當前Child的滑動情況.

5、當要進行滑行的時候,會先發(fā)送onNestedFling請求給Parent,告訴它我現(xiàn)在要滑行了,你說行不行,這時候Parent會根據(jù)情況告訴Child你是否可以滑行.

6、Child通過onNestedFling返回的Boolean值來覺得是否進行滑行.如果要滑行的話,會在滑行的時候發(fā)送onNestedFling通知告知Parent滑行情況.

7、當滑動事件結(jié)束就會child發(fā)送onStopNestedScroll通知Parent去做相關(guān)操作.

以上就是本文的全部內(nèi)容,希望對大家在學(xué)習(xí)android的道路上起到更大的幫助,也希望大家可以更多關(guān)注扣丁學(xué)堂,了解更多詳情,請登錄扣丁學(xué)堂官網(wǎng)咨詢,或者關(guān)注微信公眾號,里面有最新的扣丁學(xué)堂android教學(xué)資訊以及大量精品Android在線視頻教程等你來看!大家一起來扣丁集思廣益吧~

扣丁學(xué)堂微信公眾號



【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】



查看更多關(guān)于“Android開發(fā)技術(shù)的相關(guān)資訊>>


標簽: android在線視頻 android培訓(xùn)視頻 android入門操作

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部