在Android开发中,创建一个能够跟随手指拖动并自动贴边的View是一个常见的需求,尤其在自定义控件或者交互式界面设计时。本实例演示了如何实现这一功能,通过自定义一个`DragView`继承自`ImageView`,并实现了`View.OnTouchListener`接口来处理触摸事件。 我们来看看`DragView`类的关键属性和方法: 1. `screenWidth` 和 `screenHeight`:存储屏幕的宽度和高度,用于判断View是否已经到达边界。 2. `lastX` 和 `lastY`:记录上一次触摸位置的X和Y坐标。 3. `left` 和 `top`:记录View当前的左边界和上边界。 4. `startX` 和 `endX`:记录拖动的起始X坐标和结束X坐标,用于判断拖动方向。 5. `isMoved`:标记View是否已经被移动过,用于触发边界贴边逻辑。 6. `onDragViewClickListener`:自定义监听器,当View拖动到边界并自动贴边时触发回调。 `DragView`的构造函数中,获取了屏幕尺寸,并在初始化方法`init()`中设置了触摸监听器`setOnTouchListener(this)`,并在`post`中调整了初始的View布局参数,使其位于屏幕底部右侧。 在`onTouch`方法中,处理了触摸事件的各个阶段: 1. `ACTION_DOWN`:记录首次触摸的X和Y坐标,以及起始X坐标。 2. `ACTION_MOVE`:计算当前手指相对于上次触摸位置的位移(dx和dy),然后更新View的位置。同时,通过检查`left`和`right`边界,防止View超出屏幕范围。 接下来是贴边逻辑的关键部分,当View被拖动并且已经移动过(`isMoved = true`): - 如果View的左边界小于0,将View的左边界设置为0,这样View会自动贴到屏幕的左侧边缘。 - 如果View的右边界大于屏幕宽度,将View的右边界设置为屏幕宽度,这样View会自动贴到屏幕的右侧边缘。 此外,`DragView`还定义了一个接口`onDragViewClickListener`,可以用来监听View贴边后的点击事件。用户可以通过`setOnDragViewClickListener`方法设置监听器,当View在贴边后被点击时,会触发`onDragViewClick()`方法。 通过这样的实现,我们可以在Android应用中创建一个可以自由拖动并自动贴边的View,提高用户的交互体验。这个实例代码可以作为基础,开发者可以根据实际需求进行扩展,例如添加更多的边界判断,或者支持垂直方向的贴边等。
- 宅宅狼2020-09-21什么破玩意
- 粉丝: 10
- 资源: 930
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助