文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2022-06-06 08:09

关注

什么是双缓冲技术?双缓冲技术就是当用户操作界面完成后,会有一个缓冲区保存用户操作的结果。

为什么要使用双缓冲技术?拿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双缓冲技术实现画板应用实例,有需要的朋友可以参考下。

您可能感兴趣的文章:Android画板开发之添加文本文字Android画板开发之添加背景和保存画板内容为图片Android画板开发之撤销反撤销功能Android画板开发之基本画笔功能Android画板开发之橡皮擦功能Android自定义SurfaceView实现画板功能Android多媒体之画画板开发案例分享Android采用双缓冲技术实现画板android实现简单的画画板实例代码Android实现画画板案例


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯