今天學(xué)習(xí)了scroller的使用,整理一下知識點(diǎn)衡楞。
1.每一個view都有 scrollto()和scrollby()的方法用于控件的滑動充岛,這種方法直接調(diào)用顯得很生硬,沒有滑動的過程拒贱。
2.scrollto()和scrollby()的方法的區(qū)別宛徊,scrollby 是相對當(dāng)前位置的相對移動佛嬉,scrollto 是相對于初始位置的絕對滑動,所以調(diào)用多次scrollto()方法無效闸天,調(diào)用多次scrollby()方法有效暖呕,實(shí)際上scroll by的內(nèi)部也是調(diào)用scroll to 的方法,只是參數(shù)值上多加上了一個偏移量(和初始位置的距離)
3.scrollto()的使用參數(shù)上是反的苞氮,例如你使用:scroll(20湾揽,10),會在x軸上的負(fù)方向(左)移動20px笼吟,會在y軸上的負(fù)方向(下)移動10px库物,這就尷尬了,為什么呢贷帮,因?yàn)橹匦掠?jì)算控件位置時(shí)戚揭,是x減去20,y減去10 撵枢,而不是正常邏輯上的加民晒。
4.scrollto()滑動的是控件的內(nèi)容,而不是view的本身锄禽,什么是控件的內(nèi)容镀虐?舉個例子:textview里的字是textview的內(nèi)容,viewgroup里子控件是控件的內(nèi)容沟绪, 發(fā)生滾動時(shí)刮便,滾動的是控件的內(nèi)容。不信的話你可以把空間設(shè)置背景色绽慈,調(diào)用scrollto()方法恨旱,可以看出結(jié)果。
5.scroller的使用:scroller是用于平滑的讓控件滑動坝疼,它更像一個插值器搜贤,根據(jù)滑動時(shí)間關(guān)系不斷計(jì)算view當(dāng)前應(yīng)該在什么位置,再調(diào)用scrollto滑動到此處钝凶。比如 a滑到b 要100px仪芒,我要在10秒中滑動結(jié)束,(假設(shè)滑動是勻速的)耕陷,那么第一秒掂名,scroller計(jì)算出view 應(yīng)該滑動到10px處,用scrollto方法滑到10px處哟沫,再重繪饺蔑,第二秒,scroller計(jì)算出view 應(yīng)該滑動到20px處嗜诀,用scrollto方法滑到20px處猾警,再重繪...一直到滑動結(jié)束孔祸。就像是楨動畫一樣。