View的滑动是Android实现自定义控件的基础,同时在开发中我们也难免会遇到View的滑动处理。其实不管是哪种滑动方式,其基本思想都是类似的:当点击事件传递到View时,系统记下触摸点的坐标,手指移动式系统记下移动后的触摸的坐标并算出偏移量,并通过偏移量来修改View的坐标。
实现View滑动有很多种方法,在这里主要介绍6种滑动方法:layout()、offsetLeftAndRight与offsetTopAndBottom、LayoutParams、动画、scrollTo与scrollBy、以及Scroller。
layout()方法
View进行绘制的时候会调用onLayout方法来设置显示的位置,因此我们同样也可以通过修改View的left、top、right、bottom这4种属性来控制View的坐标。首先我们要自定义一个View,在onTouchEvent()方法中获取触摸点的坐标,代码如下:
public boolean onTouchEvent(MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
lastX = x;
lastY = y;
break;
接下来我们在ACTION_DOWN事件中计算偏移量,在调用layout()方法重新放置这个自定义位置即可。
case MotionEvent.ACTION_MOVE:
int offsetX = x - lastX;
int offsetY = y - lastY;
layout(getLeft() + offsetX,getTop() + offsetY,
getRight() + offsetX,getBottom() + offsetY);
break;
在每次移动式都会调用layout()方法对View进行重新布局,从而达到移动View的效果。自定义SlideView的全部代码如下所示:
public class SlideView extends View {
public SlideView(Context context) {
super(context);
}
public