自定义View,创建一个小圆点,单击可以拖动
来源:互联网 发布:算法导论适合初学者吗 编辑:程序博客网 时间:2024/05/21 07:48
<?xml version="1.0" encoding="utf-8"?><LinearLayout 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.xx.viewview.MainActivity">//这里定义的是自定义的那个View继承的VIew的类 <com.xx.viewview.NewView//这里是你自定义VIew的包名+类名 android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>//自定义一个自定义View的类,继承View,在activity_main布局中应用public class NewView extends View { //画笔 private Paint paint; //圆的半径 private float mRadius = 50f; //圆的圆心的X坐标 private float paintx = mRadius; //圆的圆心的Y坐标 private float painty = mRadius; //判断是否可以移动 true是可以移动 private boolean moveable; public NewView(Context context) { super(context); } public NewView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); //创建一个画笔 paint = new Paint(); //这是画笔的颜色 paint.setColor(Color.RED); paint.setAntiAlias(true); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //根据圆心的坐标来绘制圆心的位置,而圆心的坐标在我们触摸屏幕的时候被我们修改了 canvas.drawCircle(paintx, painty, mRadius, paint); } //要单点拖动,保证手指在圆上的时候才移动,我们需要判断触摸的位置 @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN://按下的事件 float x = event.getX();//你当前点击的位置的X轴坐标 float y = event.getY();//你当前点击的位置的Y轴的坐标 /** 在手机屏幕边缘是有一层物理边缘,所以圆心的位置减去半径,总会和屏幕边缘有一点距离 * x > paintx - mRadius 判断当前你点击的位置,是否大于 圆心的位置减去半径,如果大于则 * 证明你当前点击的位置在圆的左边缘里面,同时又不能超出圆的右边缘 * x < paintx + mRadius 就是判断你当前点的X的位置有没有超出圆的右边缘, * 如果你点击的X位置小于 圆心的位置+圆的半径,则证明没有抄错圆的右边缘 * * 同理判断Y轴 * y > painty -mRadius 判断当前你点击的位置的Y轴,大于 圆心减去半径, * 则证明你点击的位置超过了圆的上边缘,同时不能超出圆的下边缘, * 所以 判断 y < painty + mRadius 你点击的位置y轴不超过圆的下边缘,所以当前的Y轴位置 * 小于 圆心的位置加半径,则证明你点击的Y轴没有超过原的下边缘 * * 就是判断你当前的位置在没在这个圆里面,如果在这个圆里面就可以拖动,在圆的外面不能拖动 * */ if (x > paintx - mRadius && x < paintx + mRadius && y > painty - mRadius && y < painty + mRadius) { //判断你触摸的位置如果在圆里面,让moveable变成true可以拖动 moveable = true; Toast.makeText(getContext(), "我按下了", Toast.LENGTH_SHORT).show(); } else { moveable = false; } break; case MotionEvent.ACTION_MOVE://移动的事件 //如果是true的话可以移动, //重新设置一下圆心的位置,把圆心的位置(paintx,painty) //设置成我们当前触摸的位置(event.getX(),event.getY()) if (moveable) { paintx = event.getX(); painty = event.getY(); //去重新绘制一个圆,会重新走onDraw()方法 invalidate(); Toast.makeText(getContext(), "我移动了", Toast.LENGTH_SHORT).show(); } break; case MotionEvent.ACTION_UP://抬起的事件 Toast.makeText(getContext(), "我抬起来了", Toast.LENGTH_SHORT).show(); break; } return true; }}
阅读全文
0 0
- 自定义View,创建一个小圆点,单击可以拖动
- 自定义View,绘制一个圆形,并可以单击拖动
- 自定义view 实现小圆点拖动
- 自定义view 小圆点随手指滑动
- view实现自定义小圆点滑动
- 自定义view画一个圆点击可以拖动
- 自定义view拖动远点案例
- 自定义View三个小圆
- 自定义View,一个小圆绕着一个大圆动
- 自定义小圆点
- 自定义小圆点详解
- 一个可以拖动的自定义Gridview代码
- android开发自定义View,可以自由拖动的控件
- 自定义view画圆,并且圆可以随意拖动
- 可以拖动的 view
- 自定义小圆点并移动
- Android 自定义View 实现QQ红点拖动删除效果
- Android从零开搞系列:自定义View(13)新消息小圆点效果
- 《Drools7.0.0.Final规则引擎教程》第4章 4.5RHS语法
- 从github上下载的code文件夹图标上有个绿色对勾
- UML核心元素
- [bzoj2820]YY的GCD 莫比乌斯反演
- qq第三方登陆和回传头像
- 自定义View,创建一个小圆点,单击可以拖动
- libmali-xlnx_git.bb:do_fetch) failed with exit code '1'
- Android Studio之通过AndroidManifes.xml添加权限
- Python学习笔记(3)——Taking a Vacation
- MyBatis jdbcType类型
- 爬动的蠕虫
- hdu 6070 二分答案+线段树
- C++虚函数,纯虚函数的继承
- Libigl实现CPU间的并行