View滑动效果常用属性详解
在自定义View,以及属性动画中常用到以下属性:
scrollX/scrollY,translationX/translationY,x/y,LayoutParams
1.scrollX/scrollY
对于这两个属性,View中提供了很多公有方法对其进行设置:
1、setScrollX(int value)/setScrollY(int value);
//对应的也有getScrollX()/getScrollY()方法
2、scrollTo(int x, int y);
3、scrollBy(int x, int y);
通过源代码我们发现以上方法最终调用的都是scrollTo(int x,int y)
方法:
public void setScrollX(int value) {
scrollTo(value, mScrollY);
}
public void setScrollY(int value) {
scrollTo(mScrollX, value);
}
public void scrollBy(int x, int y) {
scrollTo(mScrollX + x, mScrollY + y);
}
其中需要注意的是scrollBy与scrollTo的区别在于:scrollBy设置的是相对值,scrollTo设置的是绝对值。
ScrollTo方法滑动的是View里面的内容
在这里我们创建一个类ScrollView继承自TextView并重载里面的onTouchEvent方法,为了便于观察在这里我们只处理x方向的滑动,同时将模拟器的布局边界打开。
public class ScrollView extends TextView {
...
//用于保存上一次点击事件的x坐标
private float lastX;
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastX = event.getX();
break;
case MotionEvent.ACTION_MOVE:
float currX = event.getX();
scrollBy((int) (lastX - currX), 0);
lastX = currX;
break;
}
return true;
}
...
}
在布局文件中使用ScrollView类
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android