一、前言
此篇文章实际上是在上篇文章SurfaceView高性能绘制(二)代码实践篇-图片绘制上,进行了一些添加更改,为了方便说明查阅单独写成一篇博文
二、修改说明
1、在自定义的MySurfaceView类里面,添加触屏事件
//7、添加触摸事件,创建DrawingItem对象
@Override
public boolean onTouchEvent(MotionEvent event) {
//监听down事件
if(event.getAction() == MotionEvent.ACTION_DOWN){
Log.v("SurfaceView@@@","点击屏幕后:"+drawingThread);
//添加图片对象
drawingThread.addItem(event.getX(),event.getY());
}
return super.onTouchEvent(event);
}
2、在绘制线程DrawingThread类里面的修改
(1)添加方法addItem,发送消息绘制
public void addItem(float x ,float y){
//obtain(Handler h, int what, int arg1, int arg2)
Message message = Message.obtain(revelver, MSG_ADD, (int)x, (int)y);
this.revelver.sendMessage(message);
}
(2)handleMessage收到消息绘制,修改如下
lockCanvas.drawColor(Color.BLACK);//清空画布。这里设置画布为黑色
// lockCanvas.drawBitmap(iconBitmap, 0, 0, paint);
lockCanvas.drawBitmap(iconBitmap, msg.arg1, msg.arg2, paint);
this.drawingHolder.unlockCanvasAndPost(lockCanvas);//解锁画布
意思把所绘制图片的坐标给传递过来了,通过Handler + Message 发送出去,然后回调得到坐标,进行图片绘制。
三、效果图、源码
(1)效果图
根据触屏绘制图片我们就这样实现了。那么如果我们要把每次绘制的图片都保持住在界面上呢,该怎么实现?
下一篇文章将讲到:SurfaceView高性能绘制(四)代码实践篇-绘制多张图片
(2)源码
https://download.csdn.net/download/yudbl/10968261
不得不吐槽一下,csdn有时候有点坑啊
1、几个月前写的博文图片,今天来看不见了。
为了安全:重要的博文备份吧,在多个热门平台写写吧,如:简书、知乎
2、现在不知道怎么搞得?csdn上传资源默认需要5分,选不了分数了
3、我用mac默认浏览器safari突然这几天登录不了,换成google才可以
4、很多时候要写博文,出现编辑器打开了,但是写不了文字