简单进阶随手指移动的View
来源:互联网 发布:南风知我意2txt书包网 编辑:程序博客网 时间:2024/04/29 17:06
因为公司新开项目,好久没空更新博客,今天稍微练练手写了一个简单的小Demo,手指移动View。是很简单,所谓难点只是需要清楚控件TouchEvent的几个Action的了解及控件位置X坐标Y坐标和偏移量的计算。
我们自定义一个class 继承View ,然后重写onTouchEvent方法,看下代码:
@Override public boolean onTouchEvent(MotionEvent event) { int x = (int) event.getX(); int y = (int) event.getY(); switch (event.getAction()){ case MotionEvent.ACTION_DOWN://监听手指按下的动作 lastX = x;//记录刚按下屏幕的x坐标 lastY = y;//记录刚按下屏幕的y坐标 break; case MotionEvent.ACTION_MOVE://监听手指移动的动作 int offsetX = x - lastX;//算出x轴的偏移量 int offsetY = y - lastY;//算出y轴的偏移量 layout(getLeft()+offsetX,getTop()+offsetY,getRight()+offsetX,getBottom()+offsetY);//根据偏移量重新定位View的位置 break; } return true; }
完整的代码如下:
public class CustomView extends View { private static final String TAG = "CustomView"; private int lastX; private int lastY; public CustomView(Context context) { super(context); } public CustomView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } @Override public boolean onTouchEvent(MotionEvent event) { int x = (int) event.getX(); int y = (int) event.getY(); switch (event.getAction()){ case MotionEvent.ACTION_DOWN://监听手指按下的动作 lastX = x;//记录刚按下屏幕的x坐标 lastY = y;//记录刚按下屏幕的y坐标 break; case MotionEvent.ACTION_MOVE://监听手指移动的动作 int offsetX = x - lastX;//算出x轴的偏移量 int offsetY = y - lastY;//算出y轴的偏移量 layout(getLeft()+offsetX,getTop()+offsetY,getRight()+offsetX,getBottom()+offsetY);//根据偏移量重新定位View的位置 break; } return true; }}
该有的注释已经注释上去了。
我们直接在布局文件引用上这个控件:
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.jstacc.energy.blogtest.MainActivity"> <com.blogtest.CustomView android:layout_width="50dp" android:layout_height="50dp" android:background="@color/colorPrimary"/></android.support.constraint.ConstraintLayout>
看下效果:
阅读全文
0 0
- 简单进阶随手指移动的View
- 自定义View:点、图片随手指而移动的View
- android:View随手指的移动而移动
- XMG View随手指移动
- 自定义随机颜色的圆形小球view随手指移动
- 自定义view实现随手移动的圆球
- 自定义View(板块随手指移动)
- android中view随手指移动
- 自定义view圆并随手指移动
- 一个随手指移动的自定义View和一个随手指移动的ImageView(附源码)
- UIView随手指的移动
- 简单实现自定义View随手指拖动
- 最简单圆随手指移动
- 自定义view实现随手指移动的小球及画轨迹
- Android自实现activity之间切换,view随手指移动
- 利用重写onTouchEvent方法实现view随手指移动效果
- 每日一结:Android View随手指移动 CoordinatorLayout
- 自定义View重写onTouchCount,实现圆形随手指移动
- Pinpoint 应用性能管理(APM)平台
- LeetCode-119. Pascal's Triangle II
- 在csdsn上的微博开通了
- Java中创建对象的5种方式 &&new关键字和newInstance()方法的区别
- 大数据24小时:工业大数据产业应用联盟成立,微软投资5000万美元应对全球气候问题
- 简单进阶随手指移动的View
- 为什么要使用交叉编译
- 数据结果第八周项目4--稀疏矩阵的三元组表示的实现及应用
- postgreSQL 日期函数 Extract
- Rails:filter
- MYSQL浮点数float精度问题
- 使用Anaconda 查看 IPYNB文件,以及将文件复制在pycharm下
- 从零编程基础小白到专业数据分析师,你需要走多远
- 京东物流系统架构演进中的最佳实践