自定义View 鼠标拖动圆
来源:互联网 发布:游戏租号 软件 编辑:程序博客网 时间:2024/06/04 21:16
public class MyCircleView extends View {
//画笔
private Paint mPaint;
//圆的半径
private float mRadius = 50f;
//圆的圆心的x坐标
private float pointX = mRadius;
//圆的圆心的Y坐标
private float pointY = mRadius;
//控制是否可以移动的变量 true的时候可以移动
private boolean moveable;
public MyCircleView(Context context) {
this(context, null);
}
//自定义veiw在布局中使用,必须实现的一个构造器
public MyCircleView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
//构造一个paint
mPaint = new Paint();
mPaint.setColor(Color.CYAN);
mPaint.setAntiAlias(true);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//根据圆心的坐标来绘制圆的位置的,而圆心的坐标,我们触摸屏幕的时候被我们修改了
canvas.drawCircle(pointX, pointY, mRadius, mPaint);
}
//要单点拖动,保证手指在圆上的时候才移动,我们需要判断触摸的位置
@Override
public boolean onTouchEvent(MotionEvent event) {
//手指触摸的x坐标
float touchX;
//手指触摸的y坐标
float touchY;
//event.getAction()判断事件的类型
switch (event.getAction()) {
//按下的事件
case MotionEvent.ACTION_DOWN:
touchX = event.getX();
touchY = event.getY();
if (touchX > pointX - mRadius && touchX < pointX + mRadius && touchY > pointY - mRadius && touchY < pointY + mRadius) {
moveable = true;
Toast.makeText(getContext(), "我按下了", Toast.LENGTH_LONG).show();
} else {
moveable = false;
}
break;
//移动的事件
case MotionEvent.ACTION_MOVE:
if (moveable) {
//重新设置一下圆心的位置, 把我们圆心的位置(pointX,pointY)设置成
// 当前触摸的位置(event.getX(),event.getY())
pointX = event.getX();
pointY = event.getY();
//去重新绘制, 会重新走onDraw()方法
invalidate();
}
break;
//抬起的事件
case MotionEvent.ACTION_UP:
break;
}
return true;
}
}
//画笔
private Paint mPaint;
//圆的半径
private float mRadius = 50f;
//圆的圆心的x坐标
private float pointX = mRadius;
//圆的圆心的Y坐标
private float pointY = mRadius;
//控制是否可以移动的变量 true的时候可以移动
private boolean moveable;
public MyCircleView(Context context) {
this(context, null);
}
//自定义veiw在布局中使用,必须实现的一个构造器
public MyCircleView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
//构造一个paint
mPaint = new Paint();
mPaint.setColor(Color.CYAN);
mPaint.setAntiAlias(true);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//根据圆心的坐标来绘制圆的位置的,而圆心的坐标,我们触摸屏幕的时候被我们修改了
canvas.drawCircle(pointX, pointY, mRadius, mPaint);
}
//要单点拖动,保证手指在圆上的时候才移动,我们需要判断触摸的位置
@Override
public boolean onTouchEvent(MotionEvent event) {
//手指触摸的x坐标
float touchX;
//手指触摸的y坐标
float touchY;
//event.getAction()判断事件的类型
switch (event.getAction()) {
//按下的事件
case MotionEvent.ACTION_DOWN:
touchX = event.getX();
touchY = event.getY();
if (touchX > pointX - mRadius && touchX < pointX + mRadius && touchY > pointY - mRadius && touchY < pointY + mRadius) {
moveable = true;
Toast.makeText(getContext(), "我按下了", Toast.LENGTH_LONG).show();
} else {
moveable = false;
}
break;
//移动的事件
case MotionEvent.ACTION_MOVE:
if (moveable) {
//重新设置一下圆心的位置, 把我们圆心的位置(pointX,pointY)设置成
// 当前触摸的位置(event.getX(),event.getY())
pointX = event.getX();
pointY = event.getY();
//去重新绘制, 会重新走onDraw()方法
invalidate();
}
break;
//抬起的事件
case MotionEvent.ACTION_UP:
break;
}
return true;
}
}
阅读全文
0 0
- 自定义View 鼠标拖动圆
- 自定义view画圆拖动
- 自定义View画圆,实现鼠标拖动画的圆跟着动
- 自定义View控件画圆,拖动圆
- 自定义View绘制圆,可拖动
- 初学自定义view(可拖动圆)
- 自定义View画圆及拖动
- 安卓中自定义View圆形和拖动圆、跟随手指拖动
- 自定义view,可拖动
- 可拖动自定义view
- 自定义拖动View
- 拖动自定义View
- 自定义view画圆跟着鼠标移动
- 自定义view实现单点拖动
- 自定义view画圆 单点拖动
- 鼠标拖动圆运动
- 自定义view 画一个圆 实现单点拖动
- 自定义view画圆,并且圆可以随意拖动
- CUDA 8.0 + Ubuntu 16.04 @ 双显卡笔记本(核显+独显)安装教程
- nginx(2):ubuntu下安装nginx依赖gcc,zlib,pcre,openssl
- ES5.4.1 命令
- 字符串函数
- 遇到的前端笔试题
- 自定义View 鼠标拖动圆
- Flask学习笔记 关注(follow)功能
- 多线程的应用场景
- C-S结构和B-S结构的区别
- LSD-SLAM jade 安装 catkin_make
- 基于Struts2的核心技术
- 线程
- Java 多线程死锁
- PCA降维操作及subplot子图绘制