scroller scroller=new scroller(mcontext);
//緩慢滾動到指定位置
private voidsmoothscrollto(int destx,int desty){
int scrollx=getscrollx();
int deltax=destx -scrollx();
//1000ms內滑向destx,效果就是慢慢滑動
mscroller.startscroll(scrollx,0,deltax,0,1000);
invalidate();
public void computescroll(){
if(mscroller.computescrolloffset()){
scrollto(mscroller.getcurrx(),mscroller.getcurry());
postinvalidate();
startscorll進行資料儲存
invalidate();導致view被重繪,在view重繪時draw方法會呼叫
computescroll方法獲取scroll的引數scrollx,scrolly通過scrollto方法實現滑動
接著呼叫postinvalidate方法進行第二次重繪。postinvalidate會繼續呼叫computescroll。。。
直至整個滑動過程結束
每次view重繪都會導致小幅度的滑動,而多次小幅度滑動就組成了彈性滑動。
Scoller實現view的滑動
scoller實際上只是記錄了view要滑動到的位置 之後還是呼叫view的scollto或scollby方法進行實際上的view滾動mscroller new scroller context public void startmoveanim int starty,int dy,int dura...
實現彈性滑動
方式之一 scroller 在乙個自定義的view中實現smoothscrollto和 computescroll 即可。整個過程可形容為 由scroller要求view隔一段時間重畫一次子view,讓其滑動。並重複這個過程直到滑動時間結束。過程為view 依次執行startscroll inval...
使用延時策略實現彈性滑動
延時策略。它的核心思想是通過傳送一系列延時訊息從而打到一種漸進式的效果 採用handler的乙個例項。功能 大約1000ms內將view的內容向左移動100px.private static final int message scroll to 1 private static final int...