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

 更新时间:2016年07月14日 15:48:05   投稿:lqh  
这篇文章主要介绍了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双缓冲技术实现画板应用实例,有需要的朋友可以参考下。

相关文章

  • Android实现垂直跑马灯效果

    Android实现垂直跑马灯效果

    这篇文章主要为大家详细介绍了Android实现垂直跑马灯效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • 初学Android之网络封装实例

    初学Android之网络封装实例

    大家好,本篇文章主要讲的是初学Android之网络封装实例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • 一文详解Android中Okio输入输出流

    一文详解Android中Okio输入输出流

    在 OkHttp 的源码中,我们经常能看到 Okio 的身影,所以这篇文章文章我们将对Okio进行一个详细的讲解,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2023-07-07
  • Android开发组件flutter的20个常用技巧示例总结

    Android开发组件flutter的20个常用技巧示例总结

    这篇文章主要为大家介绍了Android开发组件flutter的20个常用技巧示例总结,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • android post请求接口demo

    android post请求接口demo

    这篇文章主要为大家详细介绍了android post请求接口测试代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • Android开发之MediaPlayer多媒体(音频,视频)播放工具类

    Android开发之MediaPlayer多媒体(音频,视频)播放工具类

    这篇文章主要介绍了Android开发之MediaPlayer多媒体(音频,视频)播放工具类,涉及Android针对音频文件的读取、播放、暂停、继续等操作实现技巧,需要的朋友可以参考下
    2017-12-12
  • Android Bugreport实现原理深入分析

    Android Bugreport实现原理深入分析

    这篇文章主要介绍了Android Bugreport实现原理,Bugreport主要用于分析手机的状态,在应用开发中,程序的调试分析是日常生产中进程会进行的工作,Bugreport就是很常用的工具,需要的朋友可以参考下
    2024-05-05
  • Android Studio中使用SQLite的操作方法

    Android Studio中使用SQLite的操作方法

    这篇文章主要介绍了Android Studio中使用SQLite的操作方法的相关资料,需要的朋友可以参考下
    2023-06-06
  • Android编程简单设置ListView分割线的方法

    Android编程简单设置ListView分割线的方法

    这篇文章主要介绍了Android编程简单设置ListView分割线的方法,涉及Android布局简单操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • Android中的Launch Mode详情

    Android中的Launch Mode详情

    这篇文章主要介绍了Android中的Launch Mode详情,文章围绕主题的相关资料展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06

最新评论