NestedScrollingChild接口來源

1.事件分發(fā)介紹
2.Down芯砸、up事件的分發(fā)過程
3.onTouchListener态秧、onClickListener調(diào)用時機
4.事件攔截應用
5.NestedScrollingParent
6.Behavior的使用
7.NestedScrollingChild接口來源
講完上面的NestedScrollingParent接口后隙咸,你會發(fā)現(xiàn)在Vew、ViewGroup也有相似的身影雷绢。

View類的方法

NestedScrollingChild接口

由此可以看出二者的方法時基本一致的峰弹,NestedScrollingChild接口只有方法,而View的接口里還有方法體大年。并且和NestedScrollingChildHelper中的方法基本一致换薄,以下是二者dispatchNestedScroll()方法。
NestedScrollingChildHelper

View

我們可以看出翔试,二者基本是相似的轻要。因此我推測最早開始這些方法都是在View中寫的,但是后來把這些方法抽象成了接口遏餐,并將方法提取成Helper類伦腐。
因此查看了下源碼,ViewGroup的onNestedScroll方法是在api21增加的失都,NestedScrollingParent柏蘑、NestedScrollingParentHelper接口是在api22.1新增,而NestedScrollingParent2則是在api26.1新增粹庞。
ViewGroup中的方法與NestedScrollingParent中的接口一致咳焚。
但是又一處是不太一樣的,在NestedScrollingChildhelper中調(diào)用onNestedPreScroll()方法時使用的是ViewParentCompat.onNestedScroll(),而在View中調(diào)用 mNestedScrollingParent.onNestedScroll(),即ViewGroup中的方法庞溜。

 public static void onNestedScroll(ViewParent parent, View target, int dxConsumed,
            int dyConsumed, int dxUnconsumed, int dyUnconsumed, int type) {
        if (parent instanceof NestedScrollingParent2) {
            // First try the NestedScrollingParent2 API
            ((NestedScrollingParent2) parent).onNestedScroll(target, dxConsumed, dyConsumed,
                    dxUnconsumed, dyUnconsumed, type);
        } else if (type == ViewCompat.TYPE_TOUCH) {
            // Else if the type is the default (touch), try the NestedScrollingParent API
            IMPL.onNestedScroll(parent, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed);
        }
    }

若父view實現(xiàn)的NestedScrollingParent2接口革半,則調(diào)用之,其他則調(diào)用父View實現(xiàn)的其他onNestedScroll接口流码。其中NestedScrollingParent2接口較NestedScrollingParent接口增加了一個參數(shù)NestedScrollType又官。

boolean onStartNestedScroll(@NonNull View child, @NonNull View target, @ScrollAxis int axes,
            @NestedScrollType int type);

改參數(shù)取值為:TYPE_TOUCH、TYPE_NON_TOUCH漫试,是為了解決快速滑動后Fling的傳遞問題六敬,使得滑動Fling可以在父View、子View之間傳遞驾荣。TYPE_TOUCH指用戶手指在屏幕上滑動外构,TYPE_NON_TOUCH為用戶手指離開屏幕后的滑動,即Fling播掷。
綜上审编,如果你不涉及Fling,則使用View歧匈、ViewGroup里面的函數(shù)也可實現(xiàn)滑動交互垒酬,但還是推薦實現(xiàn)接口的方法,更加清楚簡潔件炉。
現(xiàn)在新的RecyclerView勘究、NestedScrollView都是使用的接口的形式實現(xiàn),而比較老的ListView妻率、ScrollView則是使用的ViewGroup中的方法乱顾。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市宫静,隨后出現(xiàn)的幾起案子走净,更是在濱河造成了極大的恐慌,老刑警劉巖孤里,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伏伯,死亡現(xiàn)場離奇詭異,居然都是意外死亡捌袜,警方通過查閱死者的電腦和手機说搅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來虏等,“玉大人弄唧,你說我怎么就攤上這事适肠。” “怎么了候引?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵侯养,是天一觀的道長。 經(jīng)常有香客問我澄干,道長逛揩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任麸俘,我火速辦了婚禮辩稽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘从媚。我一直安慰自己逞泄,他們只是感情好,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布静檬。 她就那樣靜靜地躺著炭懊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拂檩。 梳的紋絲不亂的頭發(fā)上侮腹,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機與錄音稻励,去河邊找鬼父阻。 笑死,一個胖子當著我的面吹牛望抽,可吹牛的內(nèi)容都是我干的加矛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼煤篙,長吁一口氣:“原來是場噩夢啊……” “哼斟览!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起辑奈,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤苛茂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鸠窗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妓羊,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年稍计,在試婚紗的時候發(fā)現(xiàn)自己被綠了躁绸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖净刮,靈堂內(nèi)的尸體忽然破棺而出剥哑,到底是詐尸還是另有隱情,我是刑警寧澤庭瑰,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布星持,位于F島的核電站抢埋,受9級特大地震影響弹灭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜揪垄,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一穷吮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧饥努,春花似錦捡鱼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至溶浴,卻和暖如春乍迄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背士败。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工闯两, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谅将。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓漾狼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親饥臂。 傳聞我的和親對象是個殘疾皇子逊躁,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355