`
ming_fanglin
  • 浏览: 220983 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android双缓冲技术 .

 
阅读更多
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();
		}
	}
}
1
1
分享到:
评论
3 楼 烧伤的火柴 2011-11-03  
书上有
2 楼 烧伤的火柴 2011-11-03  
1 楼 差点忘了 2011-10-14  
先贴出View类代码 然后呢

相关推荐

    android SurfaceView双缓冲Demo

    这是一个android SurfaceView双缓冲Demo,希望对大家理解android SurfaceView双缓冲有所帮助。

    android双缓冲技术实例详解

    为了更容易的了解双缓冲技术,下面介绍用View实现双缓冲的方法。 在此需要说明一下,双缓冲的核心技术就是先通过setBitmap方法将要绘制的所有的图形绘制到一个Bitmap上,然后再来调用drawBitmap方法绘制出这个Bitmap...

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

    拿Android 游戏开发来说,界面贞每次都是全部重画的,也就说画了新的,旧的就没了,所以需要使用双缓冲技术保存之前的内容。 如何实现双缓冲?使用一个Bitmap对象保留之前的画布即可。 package ...

    播放PCM音频数据的双缓冲用法

    播放PCM音频数据的双缓冲用法

    Android应用源码之VIEW双缓冲与SurfaceView比较.zip项目安卓应用源码下载

    Android应用源码之VIEW双缓冲与SurfaceView比较.zip项目安卓应用源码下载Android应用源码之VIEW双缓冲与SurfaceView比较.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司...

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

    本文实例为大家分享了Android实现画板的具体代码,采用的技术是双缓冲技术,供大家参考,具体内容如下 1.双缓冲技术的概念 所谓的双缓冲技术其实很简单,当程序需要在指定的View上进行绘制时,程序并不需要直接绘制...

    android 双缓存画图demo

    当数据量很大时,绘图可能需要几秒钟甚至更长的时间,而且有时还会出现闪烁现象,为了解决这些问题,可采用双缓冲技术来绘图。  双缓冲即在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存中的这个...

    基于Android植物大战僵尸.doc

    摘要 手机游戏,顾名思义...创建游戏的实现方法,需要使用到SurfaceView游戏框架,它主要是用来开发复杂的游戏,在要求程序执行效率很高时,例如对速度要求很高,还可以使用双缓冲来显示。 关键词:手机 安卓 Java语

    Android应用开发揭秘pdf高清版

    5.2.10 双缓冲技术 5.2.11 全屏显示 5.2.12 获得屏幕属性 5.3 动画实现 5.3.1 Tween动画 5.3.2 Frame动画 5.3.3 GIF动画播放 5.4 小结 第6章 Android数据存储 6.1 Android数据存储初探 6.2 数据存储之Shared ...

    Android游戏开发之旅.doc

    主要从控制方法(按键、轨迹球、触屏、重力感应、摄像头、话筒气流、光线亮度)、图形View(高效绘图技术如双缓冲)、音效(游戏音乐)以及最后的OpenGL ES(Java层)和NDK的OpenGL和J2ME游戏移植到Android方法,当然还有...

    android之简易绘图板

    android实现的超简单的绘图板,没有使用双缓冲技术

    android开发揭秘PDF

    5.2.10 双缓冲技术 5.2.11 全屏显示 5.2.12 获得屏幕属性 5.3 动画实现 5.3.1 Tween动画 5.3.2 Frame动画 5.3.3 GIF动画播放 5.4 小结 第6章 Android数据存储 6.1 Android数据存储初探 6.2 数据存储之Shared ...

    《Android应用开发揭秘》附带光盘代码.

     5.2.10 双缓冲技术  5.2.11 全屏显示  5.2.12 获得屏幕属性  5.3 动画实现  5.3.1 Tween动画  5.3.2 Frame动画  5.3.3 GIF动画播放  5.4 小结  第6章 Android数据存储  6.1 Android数据存储初探  6.2 ...

    模拟技术中的SurfaceView的双缓冲使用Android

    Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的...

    Android实时流媒体监控的关键技术研究

    在对Android操作系统进行深入分析的基础之上,提出了一个基于Android的流媒体监控方案,此方案通过移植X264开源库,实现了Android视频的H.264编码,并通过双缓冲文件搭建流媒体服务器对实时视频流进行发布。...

    《Android应用开发揭秘》源码

     5.2.10 双缓冲技术  5.2.11 全屏显示  5.2.12 获得屏幕属性  5.3 动画实现  5.3.1 Tween动画  5.3.2 Frame动画  5.3.3 GIF动画播放  5.4 小结  第6章 Android数据存储  6.1 Android数据存储初探  6.2 ...

Global site tag (gtag.js) - Google Analytics