android canvas 点击事件,android Canvas 画板 和 OnTouch 事件

本文介绍如何在Android中使用Canvas和OnTouchListener实现画板功能,包括ACTION_DOWN、ACTION_MOVE和ACTION_UP事件的处理,允许用户在ImageView上进行手势绘画,并实时更新显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class MainActivity extends Activity {

ImageView image;

Button bt_save, bt_clear;

int downX, downY, moveX, moveY;

Canvas canvas;

Bitmap bitmap;

Paint paint;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

}

public void initView() {

image = (ImageView) findViewById(R.id.image);

bt_clear = (Button) findViewById(R.id.bt_clear);

bt_save = (Button) findViewById(R.id.bt_save);

image.setOnTouchListener(new MyOnTouchListener());

}

class MyOnTouchListener implements OnTouchListener {

@Override

public boolean onTouch(View v, MotionEvent event) {

switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:

System.out.println("按下了");

downX = (int) event.getX();

downY = (int) event.getY();

if (bitmap == null) {

bitmap = Bitmap.createBitmap(image.getWidth(),

image.getHeight(), Config.ARGB_4444); 创建Bitmap

canvas = new Canvas(bitmap); 给画板贴上一副画纸

paint = new Paint(); //创建画笔

paint.setStrokeWidth(5); //设置画笔粗细

paint.setColor(Color.GREEN); //画笔颜色

canvas.drawColor(Color.BLUE); //画纸颜色

image.setImageBitmap(bitmap);

}

break;

case MotionEvent.ACTION_MOVE:

moveX = (int) event.getX();

moveY = (int) event.getY();

canvas.drawLine(downX, downY, moveX, moveY, paint); //画线

downX = moveX;

downY = moveY;

image.setImageBitmap(bitmap);

System.out.println("移动");

break;

case MotionEvent.ACTION_UP:

System.out.println("松开了");

// image.setImageBitmap(bitmap);

break;

default:

break;

}

return true;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值