关于Android中View滑动知识的一点个人理解
来源:互联网 发布:java int 除法取整 编辑:程序博客网 时间:2024/05/17 01:49
View是Android中重要性不亚于四大组件的存在。今天主要看看Android中关于View滑动的一些小知识点
View的滑动在Android中有三种方式: 1.使用scrollTo或 scrollBy;2.使用动画;3.改变布局参数(改变LayoutParams)
下面是一个随手指在屏幕上随意滑动的小例子(Android开发艺术探索 这本书上的):
其中有一些小的细节一直没有搞明白,今天看书的时候突然明白了,记下笔记:
代码如下:
public class MoveView extends TextView {private int mLastX;private int mLastY;public MoveView(Context context, AttributeSet attrs) {super(context, attrs);}@Overridepublic boolean onTouchEvent(MotionEvent event) {boolean isIntercept = false;int rawX = (int) event.getRawX();int rawY = (int) event.getRawY();Log.e("rawX", String.valueOf(rawX));Log.e("rawY", String.valueOf(rawY));switch (event.getAction()) {case MotionEvent.ACTION_DOWN:isIntercept = true;break;case MotionEvent.ACTION_MOVE:int dx = rawX - mLastX;int dy = rawY - mLastY;Log.e("dX", String.valueOf(dx));Log.e("dY", String.valueOf(dy));Log.e("TranslationX", String.valueOf(getTranslationX()));Log.e("TranslationY", String.valueOf(getTranslationY()));int dx1 = (int) getTranslationX() + dx;int dy1 = (int) getTranslationY() + dy;setTranslationX(dx1);//此处改为dx下面改为dy后,是无法实现随手指滑动的,setTranslationY(dy1);//具体原因是因为 dx与dy是当前相对于屏幕的坐标与前一次相对于屏幕的坐标之差 //而当手指从MoveView上滑动,这个dx与dy是有一个范围的,就是MoveView左上角坐标与MoveView右下角坐标之差(可能为正也可能为负); //也就是说|dx|<=MoveView宽度 |dy|<=MoveView高度,所以改为dx及dy后,MoveView只能稍微在一个范围内移动,而无法实现全屏移动。isIntercept = true;break;case MotionEvent.ACTION_UP:isIntercept = false;break;default:break;}mLastX = rawX;mLastY = rawY;return isIntercept;}}
1 0
- 关于Android中View滑动知识的一点个人理解
- 关于JVM的一点个人的理解
- 关于Ndis驱动的一点个人理解
- 关于KMP算法的一点个人理解
- 关于SVM的一点个人理解
- 关于自定义UICollectionViewLayout的一点个人理解
- Android中View的滑动
- Android 中 View 的滑动
- Android 自定义View的一点理解
- 一点关于android的个人感受
- 关于KMP算法中前缀函数(next函数)的一点个人理解
- 关于android自定义view的一点话
- 一点关于Android事件处理的知识
- 关于android中的shape的一点知识
- android 积累一点关于fragment的知识
- 关于java中getContentPane()的一点知识
- 关于知识、技能、能力的理解?(个人理解)
- 关于DataRow和DataColumn的一点个人简单理解
- 重学 statistics, Cha10 Inference About Means and Proportions with Two Populations
- BBC之时间之旅--加来道雄
- 实现自己的C++ STL--vector容器
- 编写Java程序,打印下图所示的字母组成的菱形(且每次运行时该菱形大小可能不一)。
- Java虚拟机知识整理——虚拟机类加载的时机
- 关于Android中View滑动知识的一点个人理解
- Android ListView使用
- ios NSData转Byte 、unsigned char
- 字符串专题
- PHP CURD实现的中$_GET和$_POST用法的小问题
- sort与qsort
- 基于混沌遗传算法的无人机路径规划
- Error inflating class com.facebook.drawee.view.SimpleDraweeView问题的解决
- 重建二叉树