双缓冲技术实现Android 画板应用
程序员文章站
2024-03-05 19:58:43
什么是双缓冲技术?双缓冲技术就是当用户操作界面完成后,会有一个缓冲区保存用户操作的结果。
为什么要使用双缓冲技术?拿android 游戏开发来说,界面贞每次都是全部重画的...
什么是双缓冲技术?双缓冲技术就是当用户操作界面完成后,会有一个缓冲区保存用户操作的结果。
为什么要使用双缓冲技术?拿android 游戏开发来说,界面贞每次都是全部重画的,也就说画了新的,旧的就没了,所以需要使用双缓冲技术保存之前的内容。
如何实现双缓冲?使用一个bitmap对象保留之前的画布即可。
package com.example.phonegaptest; import android.content.context; import android.graphics.bitmap; import android.graphics.bitmap.config; import android.graphics.canvas; import android.graphics.color; import android.graphics.paint; import android.graphics.path; import android.util.attributeset; import android.view.motionevent; import android.view.view; public class drawview extends view { float prex; float prey; private path path; public paint paint = null; final int view_width = 320; final int view_height = 480; bitmap cachebitmap = null; canvas cachecanvas = null; public drawview(context context, attributeset set) { super(context, set); cachebitmap = bitmap.createbitmap(view_width, view_height, config.argb_8888); cachecanvas = new canvas(); path = new path(); cachecanvas.setbitmap(cachebitmap); paint = new paint(paint.dither_flag); paint.setcolor(color.red); paint.setstyle(paint.style.stroke); paint.setstrokewidth(1); paint.setantialias(true); paint.setdither(true); } @override public boolean ontouchevent(motionevent event) { float x = event.getx(); float y = event.gety(); switch (event.getaction()) { case motionevent.action_down: path.moveto(x, y); prex = x; prey = y; break; case motionevent.action_move: path.quadto(prex, prey, x, y); prex = x; prey = y; break; case motionevent.action_up: cachecanvas.drawpath(path, paint); path.reset(); break; } invalidate(); return true; } @override protected void ondraw(canvas canvas) { super.ondraw(canvas); paint bmppaint = new paint(); canvas.drawbitmap(cachebitmap, 0, 0, bmppaint); canvas.drawpath(path, paint); } }
以上就是对android双缓冲技术实现画板应用实例,有需要的朋友可以参考下。