1.1基础概念:
View是界面层控件的一种抽象,它代表了一个控件。ViewGroup也是继承View,这意味着View本身就可以是一个控件或者一组控件的集合。
1.2 View的位置参数
left ,top ,right,bottom
分别由getleft,gettop,getright,getbottom()方法获得,这是相对于父控件的位置!
![](https://img.haomeiwen.com/i9452813/87d77006195475a7.png)
Android3.0后,加入了x,y,transitionX,transitionY四个属性,分别表示view左上角的坐标和左上角相对于父控件的偏移量(这四个属性也是相对于父控件的),
x=left+transitionX;
y=top+transitionY
transitionX和transitionY默认是0,需要注意的是:在view发生平移时,top和left等值是不发生改变的,永远是最初时相对于父控件左上角的距离,transitionX和transitionY改变带动x,y的变化。
Tips:
getX() \ getY() 获取被点击 View 的 x 坐标和 y 坐标
getRawX() \ getRawY() 获取相对于手机屏幕的 x 和 y 坐标
1.3MotionEvent和TouchSlop
当我们点击屏幕是发生的一系列事件分别是ActionDown,ActionMove,ActionUp,
TouchSlop是指系统能识别的被认为是滑动的最小距离。这是一个常量,和设备相关,不同的设备可能会不同。
GestureDetector
手势监听
1.GestureDetector mDetector=new GestureDetector();
mDetector.setIsLongPressedEnable(false)//解决长按屏幕后无法拖动的情况
2、接管view的OnTouch()方法
在其中加入boolean consum=mDetector.onTouchEvent(event);
return consum;
1.4Scroller
弹性滑动对象,用于实现view的弹性滑动。我们都知道View的ScrollTo/ScrollBy方法是实现的瞬间移动,没有过渡的滑动体现,用户体验不好,并且滑动只能滑动view的内容,本身位置 不变。
而Scroller实现弹性滑动要配合View的ComputeScroll方法!
网友评论