Android中 view的双缓冲技术
来源:互联网 发布:网络创业园 编辑:程序博客网 时间:2024/05/16 13:48
[原]Android中 view的双缓冲技术
view实现双缓冲技术
当要绘制的数据量比较大,绘图时间比较长时,重复绘图会出现闪烁现象,引起闪烁现象的主要原因是视觉反差比较大。
使用双缓冲技术可以解决这个问题,Surfaceview默认是使用双缓冲技术的。
在Android上实现双缓冲技术的步骤是:
创建一个屏幕大小(实际绘图区域)的缓冲区(Bitmap),创建一个画布(Canvas),然后设置画布的bitmap为创建好的缓冲区,
把需要绘制的图像绘制到缓冲区上。最后把缓冲区中的图像绘制到屏幕上。
具体实现代码如下:
public class DrawView4 extends View { private int screenWidth,screenHeight; public DrawView4(Context context) { super(context); DisplayMetrics dm = context.getResources().getDisplayMetrics(); screenWidth = dm.widthPixels; screenHeight = dm.heightPixels; } public Bitmap decodeBitmapFromRes(Context context, int resourceId) { BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Bitmap.Config.ARGB_8888; options.inPurgeable = true; options.inInputShareable = true; InputStream in = context.getResources().openRawResource(resourceId); return BitmapFactory.decodeStream(in, null, options); } @Override protected void onDraw(Canvas canvas) { //1. 创建缓冲画布 Canvas bufferCanvas = new Canvas(); //2. 创建缓存Bitmap Bitmap bufferBitmap = Bitmap.createBitmap(screenWidth,screenHeight, Bitmap.Config.ARGB_8888); //3. 将缓冲位图设置给缓冲画布 bufferCanvas.setBitmap(bufferBitmap); //4. 在缓冲画布上绘制真实的位图 bufferCanvas.drawBitmap(decodeBitmapFromRes(getContext(), R.drawable.ic_launcher), 0, 0, null); //5. 用屏幕的画布绘制缓冲位图 canvas.drawBitmap(bufferBitmap,0,0, null); }}
0 0
- Android中 view的双缓冲技术
- Android中 view的双缓冲技术
- Android View 双缓冲技术
- Android双缓冲技术
- Android 双缓冲技术
- Android双缓冲技术
- Android双缓冲技术
- Android双缓冲技术
- Android 双缓冲技术
- Android双缓冲技术
- android 双缓冲技术
- android 双缓冲技术
- Android双缓冲技术
- Android 双缓冲技术
- Android 双缓冲技术
- Android双缓冲技术
- Android 中View的更新介绍——多线程和双缓冲
- vc中双缓冲技术
- 获取view的controller
- android异步类AsyncTask详解
- Android studio 2.0-preview 使用问题
- 关于JS中,怎么绑定this对象(来自网络收集整理)
- 浅析Arm Linux中断Vector向量表的建立流程
- Android中 view的双缓冲技术
- 通用BaseAdapter
- vim中使用gtags
- HDU2091空心三角形
- 网站架构演化 -- 我的笔记
- 机器学习(三)--- spark学习笔记
- 第一节 麒麟系统安装+基础环境搭建(JDK+Scala)
- 【小白入门】如何安装VIM在自己的windows机上
- Java基本类型比较