Android中的SurfaceView类就是双缓冲机制。因此,开发游戏时尽量使用SurfaceView而不要使用View,这样的话效率较高,而且SurfaceView的功能也更加完善。为了更容易的了解双缓冲技术,下面介绍用View实现双缓冲的方法。
先概述一下,双缓冲的核心技术就是先通过setBitmap方法将要绘制的所有的图形会知道一个Bitmap上,然后再来调用drawBitmap方法绘制出这个Bitmap,显示在屏幕上。具体的实现代码如下:
先贴出View类代码:
package com.lbz.pack.test;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Bitmap.Config;
import android.graphics.drawable.BitmapDrawable;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
public class GameView extends View implements Runnable
{
/* 声明Bitmap对象 */
Bitmap mBitQQ = null;
Paint mPaint = null;
/* 创建一个缓冲区 */
Bitmap mSCBitmap = null;
/* 创建Canvas对象 */
Canvas mCanvas = null;
public GameView(Context context)
{
super(context);
/* 装载资源 */
mBitQQ = ((BitmapDrawable) getResources().getDrawable(R.drawable.qq)).getBitmap();
/* 创建屏幕大小的缓冲区 */
mSCBitmap=Bitmap.createBitmap(320, 480, Config.ARGB_8888);
/* 创建Canvas */
mCanvas = new Canvas();
/* 设置将内容绘制在mSCBitmap上 */
mCanvas.setBitmap(mSCBitmap);
mPaint = new Paint();
/* 将mBitQQ绘制到mSCBitmap上 */
mCanvas.drawBitmap(mBitQQ, 0, 0, mPaint);
/* 开启线程 */
new Thread(this).start();
}
public void onDraw(Canvas canvas)
{
super.onDraw(canvas);
/* 将mSCBitmap显示到屏幕上 */
canvas.drawBitmap(mSCBitmap, 0, 0, mPaint);
}
// 触笔事件
public boolean onTouchEvent(MotionEvent event)
{
return true;
}
// 按键按下事件
public boolean onKeyDown(int keyCode, KeyEvent event)
{
return true;
}
// 按键弹起事件
public boolean onKeyUp(int keyCode, KeyEvent event)
{
return false;
}
public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event)
{
return true;
}
/**
* 线程处理
*/
public void run()
{
while (!Thread.currentThread().isInterrupted())
{
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{
Thread.currentThread().interrupt();
}
//使用postInvalidate可以直接在线程中更新界面
postInvalidate();
}
}
}
分享到:
相关推荐
**双缓冲技术** 双缓冲是一种图形绘制优化技术,主要应用于需要频繁更新视图的场景。在Android的View系统中,双缓冲能够有效避免屏幕闪烁,提高用户体验。当UI需要更新时,它首先在后台缓冲区进行绘制,完成后一次...
总之,理解和掌握双缓冲技术以及SurfaceView的使用,对于Android开发者来说至关重要,它们可以帮助我们编写出更流畅、响应更快的应用程序,提升用户体验。源码分析是一个很好的学习途径,可以从实践中理解这些理论...
总之,通过双缓冲技术和合理的内存管理,我们可以有效地解决Android中因大量图片加载导致的内存溢出问题,提高应用的稳定性和性能。同时,要时刻关注应用的内存使用情况,通过内存分析工具进行监控和优化,确保应用...
为了更容易的了解双缓冲技术,下面介绍用View实现双缓冲的方法。 在此需要说明一下,双缓冲的核心技术就是先通过setBitmap方法将要绘制的所有的图形绘制到一个Bitmap上,然后再来调用drawBitmap方法绘制出这个Bitmap...
双缓冲技术是解决这个问题的一种有效方法。 双缓冲技术,简单来说,就是为了解决在连续快速绘制时画面闪烁的问题。在ListView中应用双缓冲,主要是为了提高滚动时的流畅性。通常,我们会创建两个缓冲区:一个用于...
在给定的“Android高级应用源码-DrawPanel双缓冲实现画板.zip”压缩包中,包含了一个实现画板功能的示例项目,它利用了Android的双缓冲技术来优化绘图性能和用户体验。下面我们将深入探讨这个项目中的关键技术点。 ...
首先,我们来了解一下双缓冲技术。在Android的View绘制过程中,双缓冲是一种优化策略,它通过使用两个缓冲区来减少画面闪烁。当一个缓冲区正在被绘图时,另一个缓冲区则显示在屏幕上。一旦绘图完成,两个缓冲区的...
为了确保音频播放的流畅性和减少延迟,开发者通常会采用双缓冲技术。本文将详细介绍在Windows环境下如何使用双缓冲来播放PCM(Pulse Code Modulation,脉冲编码调制)音频数据。 #### 二、PCM音频数据介绍 PCM是一...
在Android应用开发中,理解和掌握视图(View)的双缓冲技术以及如何与SurfaceView进行比较是至关重要的。本文将深入探讨这两个主题,并通过源码分析来揭示它们的工作原理。 首先,我们来了解一下双缓冲技术。在图形...
**双缓冲技术** 双缓冲是一种优化图形绘制的方法,广泛应用于Android的View系统中。它主要解决的是屏幕闪烁问题。在单缓冲模式下,图形的绘制和显示是同步进行的,当画面快速更新时,用户可能会看到未完成的图像...
拿Android 游戏开发来说,界面贞每次都是全部重画的,也就说画了新的,旧的就没了,所以需要使用双缓冲技术保存之前的内容。 如何实现双缓冲?使用一个Bitmap对象保留之前的画布即可。 package ...
【Android 双缓冲技术实现画板】 在Android开发中,为提高图形绘制的效率和避免闪烁,常常会采用双缓冲技术。本篇文章将详细介绍如何在Android中利用双缓冲技术实现一个自定义的画板功能。 1. **双缓冲技术概念** ...
Android应用源码之VIEW双缓冲与SurfaceView比较.zip项目安卓应用源码下载Android应用源码之VIEW双缓冲与SurfaceView比较.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司...
标题提到的"VIEW双缓冲与SurfaceView比较"是Android系统中处理复杂图形动画时的两种重要技术。本文将深入探讨这两种技术,以及它们在实际开发中的应用场景和优缺点。 首先,让我们来理解一下双缓冲(Double ...
双缓冲是一种图形渲染技术,它使用两个缓冲区交替存储图像数据。在加载新图片时,先加载到一个缓冲区,完成后再切换到另一个缓冲区显示,同时将旧缓冲区释放。这种方法可以避免屏幕闪烁,提高显示的连贯性。在图片...