【android-tips】SurfaceView的制作android游戏框架介绍

简介: (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.介绍       我们知道android游戏主要包含两方面。一方面是控制类,这个通过一些循环以及监听机制来实现。另一方面就是显示类。在现实类中最常见的就是view,view的机制比较适合刷新比较慢的应用,像是象棋之类的。本文要提到的SurfaceView是继承自view类。surfaceview

(转载请注明出处:http://blog.csdn.net/buptgshengod

1.介绍

      我们知道android游戏主要包含两方面。一方面是控制类,这个通过一些循环以及监听机制来实现。另一方面就是显示类。在现实类中最常见的就是view,view的机制比较适合刷新比较慢的应用,像是象棋之类的。本文要提到的SurfaceView是继承自view类。surfaceview的好处是可以随意控制对象的位置,大小等属性,最关键是的提供了SurfaceHolder类,使用getHolder方法获取,相关的有Canvas lockCanvas() 下面就来介绍下surfaceview的结构关系。

2.代码展示

    下面是surfaceview的架构,注意注释!
public class GameView extends SurfaceView implements SurfaceHolder.Callback
{
	SurfaceHolder surface; //新建surface对象
      public GameView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
		surface = this.getHolder();
		surface.addCallback(this);//对应SurfaceHoder.Callback接口
           }
      public void createImage(){.....}//自己建函数,用来初始化图片。bitmap对象等
      public void ondraw(){
           Canvas c =this.surface.lockCanvas();
              ……………….
           surface.unlockCanvasAndPost(c);
                   }     //自己写的函数,用canavas画出bitmap在下面的循环中调用。

//以下三个函数是自动生成的
@Override
	public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3)       
     { // TODO Auto-generated method stub
		length=arg2;//获得屏幕的高
		width=arg3;//获得屏幕宽。真的非常实用
	}

	@Override
	public void surfaceCreated(SurfaceHolder arg0) {
		// TODO Auto-generated method stub
		
		new Thread(new Repaint()).start();//一般在这里开始循环线程,而不是在构造函数中
			
	}

	@Override
	public void surfaceDestroyed(SurfaceHolder arg0) {
		// TODO Auto-generated method stub
	      isRunning=false;//结束循环
	      
	}
private class Repaint implements Runnable{
		//runnable循环线程,不停地刷新重绘
		public void run() {
			while(isRunning){
				createImage();
				ondraw();
				}

				//刷新
								try {
					Thread.sleep(50);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
	}


                                              欢迎留言讨论,have fun!
目录
相关文章
|
2月前
|
安全 Android开发 Kotlin
Android经典实战之SurfaceView原理和实践
本文介绍了 `SurfaceView` 这一强大的 UI 组件,尤其适合高性能绘制任务,如视频播放和游戏。文章详细讲解了 `SurfaceView` 的原理、与 `Surface` 类的关系及其实现示例,并强调了使用时需注意的线程安全、生命周期管理和性能优化等问题。
136 8
|
3月前
|
物联网 区块链 vr&ar
未来已来:探索区块链、物联网与虚拟现实技术的融合与应用安卓与iOS开发中的跨平台框架选择
【8月更文挑战第30天】在科技的巨轮下,新技术不断涌现,引领着社会进步。本文将聚焦于当前最前沿的技术——区块链、物联网和虚拟现实,探讨它们各自的发展趋势及其在未来可能的应用场景。我们将从这些技术的基本定义出发,逐步深入到它们的相互作用和集成应用,最后展望它们如何共同塑造一个全新的数字生态系统。
|
4月前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台框架解析
在移动应用开发的广阔舞台上,安卓和iOS一直是两大主角。随着技术的进步,开发者们渴望能有一种方式,让他们的应用能同时在这两大平台上运行,而不必为每一个平台单独编写代码。这就是跨平台框架诞生的背景。本文将探讨几种流行的跨平台框架,包括它们的优势、局限性,以及如何根据项目需求选择合适的框架。我们将从技术的深度和广度两个维度,对这些框架进行比较分析,旨在为开发者提供一个清晰的指南,帮助他们在安卓和iOS的开发旅程中,做出明智的选择。
|
5天前
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
22 1
|
2月前
|
前端开发 Java 数据库
💡Android开发者必看!掌握这5大框架,轻松打造爆款应用不是梦!🏆
在Android开发领域,框架犹如指路明灯,助力开发者加速应用开发并提升品质。本文将介绍五大必备框架:Retrofit简化网络请求,Room优化数据库访问,MVVM架构提高代码可维护性,Dagger 2管理依赖注入,Jetpack Compose革新UI开发。掌握这些框架,助你在竞争激烈的市场中脱颖而出,打造爆款应用。
251 3
|
2月前
|
编译器 Android开发 开发者
带你了解Android Jetpack库中的依赖注入框架:Hilt
本文介绍了Hilt,这是Google为Android开发的依赖注入框架,基于Dagger构建,旨在简化依赖注入过程。Hilt通过自动化的组件和注解减少了DI的样板代码,提高了应用的可测试性和可维护性。文章详细讲解了Hilt的主要概念、基本用法及原理,帮助开发者更好地理解和应用Hilt。
65 8
|
2月前
|
Android开发
Android中SurfaceView的双缓冲机制和普通View叠加问题解决办法
本文介绍了 Android 平台上的 SurfaceView,这是一种高效的图形渲染控件,尤其适用于视频播放、游戏和图形动画等场景。文章详细解释了其双缓冲机制,该机制通过前后缓冲区交换来减少图像闪烁,提升视觉体验。然而,SurfaceView 与普通 View 叠加时可能存在 Z-Order 不一致、同步问题及混合渲染难题。文中提供了使用 TextureView、调整 Z-Order 和创建自定义组合控件等多种解决方案。
102 9
|
3月前
|
设计模式 Java Android开发
探索安卓应用开发:从新手到专家的旅程探索iOS开发中的SwiftUI框架
【8月更文挑战第29天】本文旨在通过一个易于理解的旅程比喻,带领读者深入探讨安卓应用开发的各个方面。我们将从基础概念入手,逐步过渡到高级技术,最后讨论如何维护和推广你的应用。无论你是编程新手还是有经验的开发者,这篇文章都将为你提供有价值的见解和实用的代码示例。让我们一起开始这段激动人心的旅程吧!
|
3月前
|
Android开发
基于Amlogic 安卓9.0, 驱动简说(三):使用misc框架,让驱动更简单
如何使用Amlogic T972安卓9.0系统上的misc框架来简化驱动程序开发,通过misc框架自动分配设备号并创建设备文件,从而减少代码量并避免设备号冲突。
35 0
基于Amlogic 安卓9.0, 驱动简说(三):使用misc框架,让驱动更简单
|
3月前
|
存储 前端开发 Java
Android MVVM框架详解与应用
在Android开发中,随着应用复杂度的增加,如何有效地组织和管理代码成为了一个重要的问题。MVVM(Model-View-ViewModel)架构模式因其清晰的结构和高效的开发效率,逐渐成为Android开发者们青睐的架构模式之一。本文将详细介绍Android MVVM框架的基本概念、优势、实现流程以及一个实际案例。