欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

双缓冲技术实现Android 画板应用

程序员文章站 2024-03-04 16:07:11
什么是双缓冲技术?双缓冲技术就是当用户操作界面完成后,会有一个缓冲区保存用户操作的结果。 为什么要使用双缓冲技术?拿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双缓冲技术实现画板应用实例,有需要的朋友可以参考下。