《Android开发艺术》读书笔记(View的事件体系)
来源:互联网 发布:sql 修改字段内容 编辑:程序博客网 时间:2024/05/16 19:26
《Android开发艺术》是今年上半年的读书计划之一, 本文是第三章”View的事件体系”的总结。
View基础知识
- View是Android所有控件的基类,ViewGroup即是一组View。
- View的参数位置, 由四个顶点的坐标确定: top, left, right, bottom.(坐标是相对于View的父容器);Android3.0以后增加了x, y(左上角的坐标) translationX, translationY(左上角相对于父容器的偏移量)。
- MotionEvent, 手指接触屏幕后所产生的一系列事件: Action_Down–> Action_Move –> …(move) –> Action_UP; 点击时的坐标getX/getY(相对于父容器), getRawX/getRawY(相对于手机屏幕)。
- TouchSlop, 系统识别最小的滑动距离(当距离小于该值, 不认为是进行滑动): ViewConfiguration.get(getContext()).getScaledTouchSlop().
- VelocityTracker 追踪手指在滑动过程中的速度。
VelocityTracker velocityTracker = VelocityTracker.obtion();
获取的值表示1000ms View移动的像素值。 当不需要使用时,需要调用clear方法进行回收内存:
velocityTracker.addMovement(event);
velocityTracker.computeCurrentVelocity(1000) //1000表示1000ms
velocityTracker.clear();
velocityTracker.recycle(); - GestureDetector, 辅助检测用户的单机, 滑动,长按,双击等行为。用户的触摸行为是在onTouchEvent事件中处理, 所以,需要使用GestureDetector的话, 在onTouchEvent方法中添加如下实现:
boolean consume = mGestureDetector.onTouchEvent(event);
- Scoller, 弹性滑动对象。 View的scrollTo/scrollBy的方法是瞬间完成移动, 用户体验不佳; 所以使用弹性滑动Scroll, 可以在制定事件完成滑动:
scroller.startScroll(scrollX, 0, delta, 0, 1000); // 1000ms内水平滑向destX
View的滑动
- scrollTo/scrollBy ,只能将view的内容进行移动, 并不能将view本身进行移动。mScrollX参数代表View左边缘和View内容左边缘的距离; mScrollY同理
- 动画,使用translate方法。注意动画也不能改变View的位置, 所以,点击事件并不会在新位置触发。
- 布局参数, 通过改变布局参数MarginLayoutParams。
- 滑动方式对比:
scrollTo/scrollBy: 操作简单,适合对View内容的滑动;
动画: 操作简单,适用于没有交互的View和实现复杂的动画效果;
改变布局参数:操作复杂, 适用于有交互的View。
弹性滑动
- Scroller, 通过源码分析, Scroller通过invalidate方法实现View的弹性滑动,确切的说是computeScroll方法, 具体流程: View重绘–>draw()–>computeScroll()–>getScrollX()–>scrollTo()滑动;–>postInvalidate() 二次重绘制, 如此反复, 直到过程结束。
- 动画, 略
- 延时策略, 使用Handler或View的postDelay方法, 或者线程的sleep方法。 同样在每次执行过程中实现scrollTo方法, 实现每次滑动一点, 然后整体出现弹性滑动的效果。
View的事件分发机制
未完待续……
1 0
- 《Android开发艺术》读书笔记(View的事件体系)
- 《Android开发艺术探索》读书笔记--part3 View的事件体系
- Android开发艺术探索读书笔记-View的事件体系(一)
- Android开发艺术探索读书笔记-View的事件体系(二)
- View事件体系(Android开发艺术探索读书笔记)
- View的事件体系 - Android开发艺术探索读书笔记(第三章)
- Android开发艺术探索 读书笔记 第三章 View事件体系
- 《Android开发艺术》之View的事件体系(上)
- 读书笔记-Android开发艺术探索-第3章-View的事件体系
- 《Android开发艺术探索》读书笔记 (3) 第3章 View的事件体系
- 【读书笔记】【Android 开发艺术探索】第3章 View 的事件体系
- Android开发艺术探索读书笔记(第3章 View的事件体系)
- Android 开发艺术探索读书笔记 第三章 View的事件体系
- 读书笔记:Android开发艺术探索之第3章 View的事件体系
- 《Android开发艺术探索》读书笔记-第三章 View的事件体系
- [Andorid开发艺术探索 读书笔记]View的事件体系(一)
- [Andorid开发艺术探索 读书笔记]View的事件体系(二)
- [Andorid开发艺术探索 读书笔记]View的事件体系(三)
- [List和HashMap—练习]——统计学生成绩,并打印
- HDU 2108 Shape of HDU [凸包.判断凸包]
- 使用的gogs不能使用ssh的方式连接
- java二维码的生成上篇
- Struts2 OGNL 表达式
- 《Android开发艺术》读书笔记(View的事件体系)
- C++函数指针
- Oracle SQL 性能优化粗略总结
- (C语言打印图形题5)编程,输入n,输出如下例(n=4)所示的高和上底均为n的等腰梯形。
- HDU1372&POJ2243Knight Moves(BFS呀,转换一下)
- 问题 C: 01字串
- Struts2的标签之UI标签
- Redis安装包安装流程及学习总结
- php效率高写法