`
HeLinHang
  • 浏览: 141850 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Android中的2D游戏开发

 
阅读更多

开发思路:

第一个Activity中,设置游戏全屏,设置初始化ContentView,

在CcontentView中,继承SurfaceView,实现Callback和Runnable接口

重写方法,在surfaceCreated方法中启动线程,在线程中给画布画画。

 

第一个类:SurfaceViewTestActivity

 

 

package cn.edu.surfacetest;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;

public class SurfaceViewTestActivity extends Activity {
    /** Called when the activity is first created. */

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
      
        this.requestWindowFeature(Window.FEATURE_NO_TITLE); //drop the application title
        //hide the statubar(battery and flag)
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(new MySurfaceView(this));
    }
}
 

第二个类MySurfaceView:

 

 

 

package cn.edu.surfacetest;


import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.SurfaceHolder.Callback;

public class MySurfaceView extends SurfaceView implements Callback,Runnable{
	private Activity father;
	private SurfaceHolder sfh;
	private Canvas canvas;
	public MySurfaceView(Context context) {
		super(context); 
		// TODO Auto-generated constructor stub
		sfh=this.getHolder();
		sfh.addCallback(this);
		father=(Activity)context;	
	
	}	


	public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
		// TODO Auto-generated method stub
		
	}


	public void surfaceCreated(SurfaceHolder arg0) {
		// TODO Auto-generated method stub
		new Thread(this).start();
	}

	
	public void surfaceDestroyed(SurfaceHolder holder) {
		// TODO Auto-generated method stub
		
	}
	public void myDraw(){
		canvas=sfh.lockCanvas();
		Paint paint=new Paint();
		paint.setColor(Color.RED);
		Resources resource=this.getResources();
		Bitmap bitmap=BitmapFactory.decodeResource(resource, R.drawable.icon);
		Matrix matrix=new Matrix();
		matrix.setScale(1,1);
		canvas.drawBitmap(bitmap, matrix, paint);
		canvas.drawRect(10, 20, 30,40, paint);
		canvas.drawText("Hello", 20, 20, paint);
		sfh.unlockCanvasAndPost(canvas);
	}

	
	public boolean onTouchEvent(MotionEvent event) {
		// TODO Auto-generated method stub
		father.setContentView(new MySurface2((Context)father));
		return super.onTouchEvent(event);
	}

	
	public void run() {
		// TODO Auto-generated method stub
		myDraw();
		System.out.println("begin");
	}
	
}

 

第三个类MySurface2:

 

 

 

package cn.edu.surfacetest;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.SurfaceHolder.Callback;

public class MySurface2 extends SurfaceView implements Callback,Runnable{
	private SurfaceHolder sfh;
	private Canvas canvas;
	public MySurface2(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
		sfh=this.getHolder();
		sfh.addCallback(this);
	}
	
	public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
		// TODO Auto-generated method stub
		
	}

	
	public void surfaceCreated(SurfaceHolder arg0) {
		// TODO Auto-generated method stub
		new Thread(this).start();
	}

	
	public void surfaceDestroyed(SurfaceHolder holder) {
		// TODO Auto-generated method stub
		
	}
	public void myDraw(){
		canvas=sfh.lockCanvas();
		Paint paint=new Paint();
		paint.setColor(Color.GREEN);
		Resources resource=this.getResources();
		Bitmap bitmap=BitmapFactory.decodeResource(resource, R.drawable.icon);
		Matrix matrix=new Matrix();
		matrix.setScale(1,1);
		canvas.drawBitmap(bitmap, matrix, paint);
		canvas.drawRect(10, 20, 30,40, paint);
		canvas.drawText("Hello", 20, 20, paint);
		sfh.unlockCanvasAndPost(canvas);
	}

	
	public void run() {
		// TODO Auto-generated method stub
		myDraw();
		System.out.println("begin");
	}
	
}
 

 

 

分享到:
评论

相关推荐

    android 2D游戏

    此款游戏源码的注释写的很完整,对于学习android 2D游戏开发的朋友应该会有算帮助。

    Android开发精典案例 游戏 迷宫小球

    Android开发精典案例 游戏 迷宫小球 Android开发精典案例 游戏 迷宫小球

    android2D游戏框架源码

    android游戏开发根据游戏的种类以及需求,可以考虑使用不同的方式去开发并搭建框架,这个是简单的2D休闲游戏的框架,采用SurfaceView起一个独立的线程来控制画板Canvas的刷新。

    android开发揭秘PDF

    5.1 Android游戏开发框架 5.1.1 View类开发框架 5.1.2 SurfaceView类开发框架 5.2 Graphics类开发 5.5.1 Paint和Color类介绍 5.2.2 Canvas类介绍 5.2.3 几何图形绘制 5.2.4 字符串绘制 5.2.5 图像绘制 5.2.6 图像...

    Beginning Android Games( Android 游戏开发入门)

    >如何从头开发两个2D游戏的基础上,画布的API和OpenGL ES。 >如何创建一个全功能的3D游戏 >如何发布你的游戏,让崩溃报告,并支持你的用户 >如何完成自己的二维OpenGL游戏可玩 >下个焦点 这本书是为具有基本的...

    Himi_2D游戏开发系列源码

    Himi-李华明-android 2D游戏开发系列源码

    基于JBox2D的Android游戏开发全源码.zip

    android 源码学习

    Android编程典型实例与项目开发案例

    本书主要以Android平台下应用软件开发的基础知识为主题,并结合真实的案例为读者详细介绍Android平台下的商务软件、3D游戏程序及2D游戏程序的开发流程。 全书分为两篇共15章。第1篇以大量简单易懂的实例为依托,详细...

    Android 2D游戏开发小案例设计重力感应

    案例为一个足球场背景,上面有一颗旋转的足球,可以通过重力感应来控制足球移动方向。代码每一行都带有注释,方便下载者理解。

    android一个2D桌球小游戏,非常适合游戏开发新手

    android一个2D桌球小游戏,非常适合游戏开发新手。

    Android编程典型实例与项目开发 吴亚峰 杜化美 苏亚光 PDF扫描版

    第二篇则通过对三个真实案例开发进行详细介绍 让读者很容易将所学的知识融会贯通 快速掌握android平台下的商务软件 3d游戏及2d游戏的开发过程 同时在本书随书光盘的源代码中包含详尽的注释 以求尽量帮助读者快速理解...

    Android 应用案例开发大全3.part03.rar

    Android应用案例开发大全...详细介绍了3D动态壁纸、LBS类应用、导航与百度地图二次开发、理财类应用、餐饮行业应用、校园辅助应用、音乐休闲应用、新闻发布管理应用、休闲益智类3D/2D游戏等各类Android应用程序的开发。

    Unity3D\2D手机游戏开发 第2版

    第5章是一个2D游戏实例,多方面地介绍了Unity在2D游戏方面的应用。第6章和第7章,重点介绍了Unity在网络方面的应用。第8~10章介绍了如何将Unity游戏移植到网页、iOS和Android平台。另外,本书*后附有C#语言的快速...

    android 2D游戏 拼水果 源码

    自己开发的一款android平台的一个2D游戏,完整的2D游戏框架,有过关,保存,加载功能,用surface实现,用到很多android的东西,有gallery 有文件操作,等等值得下载,是游戏开发爱好者的入门学习好教材

    Android 4 游戏编程入门经典

    本书是一本可以信赖的指南,能够帮助你在移动游戏开发中迅速“升级”。学完本书并加以融会贯通,就能够编写出成功的Android游戏。[1] 《Android 4游戏编程入门经典》将引导你在Android平台上完整地开发出3个示例...

    《Android开发权威指南》随书光盘[教学视频+源程序]

    光盘中包括视频文件和全部的源程序。 SRC文件夹为源程序;...第十讲:2D游戏开发 第十一讲:HTML5与web移动开发 第十二讲:输入法 第十三讲:OPENGL ES 第十四讲:DNK编程 第十五讲:测试驱动开发 第十六讲:综合案例

    Android 应用案例开发大全3.part06.rar

    Android应用案例开发大全...详细介绍了3D动态壁纸、LBS类应用、导航与百度地图二次开发、理财类应用、餐饮行业应用、校园辅助应用、音乐休闲应用、新闻发布管理应用、休闲益智类3D/2D游戏等各类Android应用程序的开发。

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

     5.1 Android游戏开发框架  5.1.1 View类开发框架  5.1.2 SurfaceView类开发框架  5.2 Graphics类开发  5.5.1 Paint和Color类介绍  5.2.2 Canvas类介绍  5.2.3 几何图形绘制  5.2.4 字符串绘制  5.2.5 图像...

    Android 应用案例开发大全3.part02.rar

    Android应用案例开发大全...详细介绍了3D动态壁纸、LBS类应用、导航与百度地图二次开发、理财类应用、餐饮行业应用、校园辅助应用、音乐休闲应用、新闻发布管理应用、休闲益智类3D/2D游戏等各类Android应用程序的开发。

Global site tag (gtag.js) - Google Analytics