在Android設(shè)備上不管是下拉刷新還是SlidingMenu苏遥,它們基礎(chǔ)都是滑動穆趴,從另一方面來說安卓的手機由于屏幕比較小氓奈,為了給用戶呈現(xiàn)出更多的內(nèi)容就必須用到滑動來顯示和隱藏一些內(nèi)容。通過三種方法可以實現(xiàn)View的滑動,第一種是通過View本身提供的ScrollTo/ScrollBy方法來實現(xiàn)的坦仍;第二種是通過動畫給View施加平移效果來實現(xiàn)的;第三種是通過改變View的LayoutParams使得View重新布局從而實現(xiàn)滑動叨襟。
1.使用scrollTo/scrollBy
為了實現(xiàn)View的滑動繁扎,View提供了專門的方法來實現(xiàn)這個這個功能,那就是scrollTo/scrollBy糊闽。從源碼上看梳玫,scrollBy實際上也是調(diào)用了scrollTo的方法,他實現(xiàn)了基于當(dāng)前位置的相對滑動右犹,而scrollTo則實現(xiàn)了基于所傳遞參數(shù)的絕對滑動提澎。View滑動過程中View內(nèi)部的兩個屬性mScrollX、mScrollY的改變規(guī)則念链,這兩個屬性可以通過getScrollX和getScrollY方法來分別得到盼忌。mScrollX的值總是等于View左邊緣和View內(nèi)容左邊緣的水平的距離,而mScrollY的值總是等于View上邊緣和View內(nèi)容上邊緣的豎直距離掂墓。View的邊緣是指View的四個頂點谦纱,而View內(nèi)容是指View的內(nèi)容。mSrcollX和mScrollY的單位為像素君编,并且當(dāng)View的左邊緣在View內(nèi)容左邊的右邊時候mScrollX的值為正跨嘉,當(dāng)View上邊緣在View內(nèi)容上邊的時候mScrollY的值為正。View的scrollTo和scrollBy實現(xiàn)的只是View的內(nèi)容移動啦粹,并不能將View的本身進行移動偿荷。
2.使用動畫
通過動畫我們也能夠讓一個View進行平移,而平移就是一種滑動唠椭,使用動畫來操作View跳纳,主要是操作View的translationX和translationY屬性,既可以用傳統(tǒng)View的動畫贪嫂,也可以使用屬性動畫寺庄,如果采用屬性動畫應(yīng)該在項目中采用nineoldandroids。但是采用傳統(tǒng)的View動畫不能是移動完成后的View還有點擊事件力崇,而采用屬性動畫卻可以實現(xiàn)斗塘。
3.改變布局參數(shù)
我們可以通過改變View的LayoutParams的參數(shù)來實現(xiàn)View的移動效果。
4.三種滑動的對比
scrollTo/scrollBy:簡單操作亮靴,適合對View內(nèi)容的滑動馍盟。
動畫:操作簡單,主要適用于沒有交互的View和實現(xiàn)復(fù)雜的動畫茧吊。
改變布局參數(shù):操作稍微復(fù)雜贞岭,適用于有交互的View八毯。