下拉刷新原理的話看下面的圖:

下面說一下具體的布局實現:
RelativeLayout
RelativeLayout
imageview
1RetiveLayout --最外層父布局---scrollTo方法移動的就是他,可以以此帶到所有的viewgroup移動
(對于layout采用scrollTo實際上是移動他的所有子viewGroup或view)所以還要在外面包一層
注意后期layout.scrollTo()調用的就是這個父布局
2Retivelayout--包裹所有需要移動操作的view
需要做如下處理
android:layout_height="200px"android:layout_marginTop="-200px"如上面的圖所示,把其top刷新欄給隱藏了3view 具體需要移動的view
只要靜靜的被移動就好了
2下面來露一下代碼層的操作
其實最主要的還就是調用以下TouchEvent的方法了
需要簡單說明以下montionevent的getAction的幾個類型
MotionEvent.down:step1手指按下時候就會被調用,適合記錄初始值
lastY =ev.getRawY();MotionEvent.move:step2手指移動過程中會被調用,適合處理滑動操作
offsetY=(ev.getRawY()-lastY); if(200>offsetY) { layout.scrollTo(layout.getLeft(), layout.getTop() - (int) offsetY); }MotionEvent.up:step3手指抬起的時候就會被調用,適合處理執行或撤銷的邏輯操縱
if(offsetY<70){ layout.scrollTo(layout.getLeft(), layout.getTop());} else { layout.scrollTo(layout.getLeft(), layout.getTop()-200); new Thread(new Runnable() { @Override public void run() { refreshData(); } }).start();}注意scrollTo操作是UI操作,如果需要刷新要新開一個線程4下面是關于刷新操作,就是記得結束了把下拉的標簽回彈上去
try { Thread.sleep(3000);} catch (InterruptedException e) { e.PRintStackTrace();}layout.scrollTo(layout.getLeft(), layout.getTop());
新聞熱點
疑難解答