下拉刷新原理的话看下面的图:
下面说一下具体的布局实现:
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());