我是靠谱客的博主 欢喜小懒猪,最近开发中收集的这篇文章主要介绍Android 通过触摸动态地在屏幕上画矩形,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  需求概述:

  在屏幕上用手指画出一个区域,返回所圈的区域坐标。

  技术实现:

  自定义View,设置画笔及对应参数,在onTouchEvent()回调函数里,对触摸事件进行判断。画出矩形图形。

  代码:

  自定义View:

 1 public class GameView extends View
{
 2
//
声明Paint对象
 3
private Paint mPaint = null;
 4
private int StrokeWidth = 5;
 5
private Rect rect = new Rect(0,0,0,0);//手动绘制矩形
 6
 7
public GameView(Context context){
 8
super(context);
 9
//构建对象
10
mPaint = new Paint();
11 
mPaint.setColor(Color.RED);
12
//开启线程
13
// new Thread(this).start();
14 
}
15 
@Override
16
protected void onDraw(Canvas canvas) {
17
super.onDraw(canvas);
18
//设置无锯齿
19
mPaint.setAntiAlias(true);
20
canvas.drawARGB(50,255,227,0);
21 
mPaint.setStyle(Paint.Style.STROKE);
22 
mPaint.setStrokeWidth(StrokeWidth);
23 
mPaint.setColor(Color.GREEN);
24
mPaint.setAlpha(100);
25
// 绘制绿色实心矩形
26
canvas.drawRect(100, 200, 400, 200 + 400, mPaint);
27 
mPaint.setColor(Color.RED);
28 
canvas.drawRect(rect,mPaint);
29 
}
30 
@Override
31
public boolean onTouchEvent(MotionEvent event) {
32
int x = (int)event.getX();
33
int y = (int)event.getY();
34
switch (event.getAction()){
35
case MotionEvent.ACTION_DOWN:
36
rect.right+=StrokeWidth;
37
rect.bottom+=StrokeWidth;
38 
invalidate(rect);
39
rect.left = x;
40
rect.top = y;
41
rect.right =rect.left;
42
rect.bottom = rect.top;
43
44
case MotionEvent.ACTION_MOVE:
45
Rect old =
46
new Rect(rect.left,rect.top,rect.right+StrokeWidth,rect.bottom+StrokeWidth);
47
rect.right = x;
48
rect.bottom = y;
49 
old.union(x,y);
50 
invalidate(old);
51
break;
52
53
case MotionEvent.ACTION_UP:
54
break;
55
default:
56
break;
57 
}
58
return
true;//处理了触摸信息,消息不再传递
59 
}
60
61 }

调用时,只需要在onCreate()函数里,直接添加就可以:

1
super.onCreate(savedInstanceState);
2 
setContentView(R.layout.activity_main);
3
4
gameView = new GameView(this);
5
addContentView(gameView);

根据需要可以在自定义类中,加入返回圈定范围的函数。

ps:需要注意的是,在手指移动的时候,屏幕需要更新矩形时,原理上删除原来矩形,画上新矩形。但是由于空心矩形边厚度的存在,

会出现遗留的情况,此时要减去border厚度,可以解决上述问题。

Rect old = new Rect(rect.left,rect.top,rect.right+StrokeWidth,rect.bottom+StrokeWidth);

 效果图:

 

转载于:https://www.cnblogs.com/xueyudlut/p/7162358.html

最后

以上就是欢喜小懒猪为你收集整理的Android 通过触摸动态地在屏幕上画矩形的全部内容,希望文章能够帮你解决Android 通过触摸动态地在屏幕上画矩形所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部