Android中View的基础知识
2016-09-09 18:17
281 查看
View的界限
View就是我们看到的界面,有四个界限范围分别是, Top/Left, Bottom/Right,坐标系从左上到右下。这四个值可以通过任何View的子类调用getTop()/get...得到。但是坑爹的是这些不能在生命周期函数里调用,否则都返回0,因为绘制还没完成呢,可以放在button的onclicklistener中。
事件的种类
分为MotionEvent和TouchSlop,分为ACTION_DOWN, ACTION_MOVE, ACTION_UP。MotionEvent是点击之后的event可以通过getX()/getY()/getRawX()/getRawY()来得到点击的位置,区别是一个是相对当前View的,一个是相对手机屏幕左上角的。
TouchSlop是系统能识别出的最小滑动距离。可以通过
VelocityTracker用开跟踪划动过程中的速度
GestureDetector用来检测用户的单击、滑动、长按、双击行为。
Scroller用来弹性滑动对象。
划动的方式
划动的方式主要有3中,分别是通过View本身提供的scrollTo/scrollBy方法。第二种是通过动画给View施加平移效果。第三种是通过改变view的LayoutParams使得View重新布局从而实现滑动。第一种,scrollTo/scrollBy只是改变View的内容而不是View本身的位置,View本身的位置是不变的(getScrollX是改变的,但是getTop/getLeft/getBottom/getRight不变)。
有点是操作简单,适合对View的内容进行滑动。
第二种是动画,优点是操作简单,适用于没有交互的view和实现复杂的动画效果。
第三种是改变布局参数,优点是适用于有交互的View,缺点是操作稍微复杂。
事件分发机制
点击事件的分发就是对MotionEvent事件的分发过程,由三个主要的方法共同完成:dispatchTouchEvent(), onInterceptTouchEvent(), onTouchEvent()只要点击事件传递到了当前view,dispatchTouchEvent方法一定会被调用他们之间的关系可以用下图表示:
@Override public boolean dispatchTouchEvent(MotionEvent event) { boolean consume = false; if (onInterceptTouchEvent(event)){ consume = onTouchEvent(event); } else { consume = child.dispatchTouchEvent(event); } return consume; }
对于ViewLayout来说,处理的顺序是:
MainActivity-dispatchTouchEvent-ACTION_DOWN
CustomLayout-dispatchTouchEvent-ACTION_DOWN
CustomLayout-onInterceptTouchEvent-ACTION_DOWN
CustomButton-dispatchTouchEvent-ACTION_DOWN
CustomButton-onTouch-ACTION_DOWN
CustomButton-onTouchEvent-ACTION_DOWN
MainActivity-dispatchTouchEvent-ACTION_UP
CustomLayout-dispatchTouchEvent-ACTION_UP
CustomLayout-onInterceptTouchEvent-ACTION_UP
CustomButton-dispatchTouchEvent-ACTION_UP
CustomButton-onTouch-ACTION_UP
CustomButton-onTouchEvent-ACTION_UP
CustomButton--onClick
对View来说,处理的顺序是:
MainActivity-dispatchTouchEvent-ACTION_DOWN
CustomButton-dispatchTouchEvent-ACTION_DOWN
CustomButton-onTouch-ACTION_DOWN
CustomButton-onTouchEvent-ACTION_DOWN
MainActivity-dispatchTouchEvent-ACTION_UP
CustomButton-dispatchTouchEvent-ACTION_UP
CustomButton-onTouch-ACTION_UP
CustomButton-onTouchEvent-ACTION_UP
CustomButton--onClick
详情请参考:http://blog.csdn.net/lanhuzi9999/article/details/26515421
相关文章推荐
- [Android基础知识] 之十一: View类的原理与使用
- Android自定义View——基础知识篇
- Android RecyclerView 基础知识详解
- Android自定义view之基础知识
- Android自定义View——基础知识篇
- Android控件之WebView(基础知识)
- android 自定义view基础知识
- Android-View事件体系之View的基础知识
- 【Android基础知识】ViewPager基本使用
- Android View 基础知识
- Android基础知识之控件系列(1)——TextView及自定义动态TextView
- Android自定义View总结(一)基础知识与实例
- Android View学习笔记(一):View基础知识
- Android中的RecyclerView: 基础知识
- android 自定义view 前的基础知识
- Android中的RecyclerView: 基础知识
- 【Android基础知识】ViewStub的使用
- Android View系列一: View基础知识
- Android --View基础知识
- Android 艺术开发探索读后感-view基础知识