关于view跟随手指滑动

转载 :https://www.jianshu.com/p/026b125a5875

https://www.cnblogs.com/hubing/p/4621849.html

Android中的坐标系:分为两种,第一种是Android坐标系,第二种是View坐标系。

先看第一种坐标系,Android坐标系。它是将屏幕左上角的顶点作为Android坐标系的原点,这个原点向右是X轴正方向,向下是Y轴正方向。

getRawX()个getRawY()方法获得的 坐标也是Android坐标系的坐标。


第二种坐标系是View坐标系,与第一种坐标系是共同存在的。    view坐标。

中间的实心矩形,我们当做是触摸点。

getRawX()获得的是点击事件距离整个屏幕左边的距离,也叫作绝对坐标;

       getRawY()获得是点击事件距离整个屏幕距离整个屏幕定边的距离,也就是绝对坐标;

       getX(): 获取点击事件距离控件左边的距离,也就是视图坐标;

       getY():获取点击事件距离控件顶部的距离,也就是视图坐标;

       getTop():获取View自身顶边到其父控件顶边的距离。

       getLeft():获取View自身左边到其父布局左边的距离。

      getRight():获取View自身右边到其父布局左边的距离。

       getBottom():获取View自身底边到其父布局顶边的距离。

另外介绍两个方法: getWidth()和getHeight()方法;分别是获取View的宽和高度。其实这个方法内部也就是坐标点之间的距离。

View的滑动:当点击事件传到View时,系统记下触摸点的坐标,手指一动后记录下移动后的触摸点的坐标并算出偏移量,通过偏移量来修改View的坐标。另外实现View滑动的方法有很多,今天我们先说一下layout();

我们知道View的绘制过程中,会调用layout(),而layout()方法内部会调用onLayout()方法来显示位置。所以我们只要修改了View的top,bottom,right,left属性就可以控制View的坐标。

我们看下View的onTouchEvent


首先我们获取了手指触摸点的横坐标和纵坐标。在手指按下的时候赋值;当触摸移动的时候记录移动的偏移量,调用layout方法重新摆放位置。

直接在布局中可以使用这个自定义的View,运行之后我们在手机屏幕上可以拖动此view到任何的位置。

PS: 这里最好是做一下限制,将View距离父控件左边的位置大于等于0;而距离父控件顶部也是大于等于0;距离父控件左边小于等于屏幕宽度;距离父控件顶部小于等于屏幕的高度;不然这个view可以滑动到屏幕外,就不是我们想要看到的效果了。



 

猜你喜欢

转载自blog.csdn.net/yanxiangxue/article/details/105676309
今日推荐