展会信息港展会大全

android游戏开发,View实现游戏布局和方法
来源:互联网   发布日期:2016-01-14 09:51:25   浏览:1957次  

导读:在使用android的朋友们,相信大家对android的游戏不陌生吧,像愤怒的小鸟,植物大战僵尸等等优秀的游戏,给我们带来了很好的用户体验下面我来教大家一点android游戏开发的一点基础,大家可以参照这个方法框架来设......

在使用android的朋友们,相信大家对android的游戏不陌生吧,像愤怒的小鸟,植物大战僵尸等等优秀的游戏,给我们带来了很好的用户体验

下面我来教大家一点android游戏开发的一点基础,大家可以参照这个方法框架来设计一些像贪吃蛇,俄罗斯方块,雷电等小游戏,从而激发大家学习的兴趣。

下面来看看这个程序的运行效果图:

这个红色小矩形就是我们可以操控的对象,我们可以用手机方向键控制它移动,也可以用触控的方式设置其位置,这是一些小游戏的雏形,大家可以再次深度开发,后面代码部分我会有详细的注释和源码下载,这里不再介绍

代码部分:

GameActivity.java-

01

package jiabin.activity;

02

03

import android.app.Activity;

04

import android.os.Bundle;

05

import android.view.Window;

06

import android.view.WindowManager;

07

08

public class GameActivity extends Activity{

09

/** Called when the activity is first created. */

10

@Override

11

public void onCreate(Bundle savedInstanceState) {

12

super.onCreate(savedInstanceState);

13

requestWindowFeature(Window.FEATURE_NO_TITLE);//设置窗口没有标题

14

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏显示

15

setContentView(new GameView(this));//布局不采用静态布局,而是采用view方法

16

//不需要在资源文件中layout写XML文件

17

}

18

}

GameView.java-

01

package jiabin.activity;

02

03

import android.content.Context;

04

import android.graphics.Canvas;

05

import android.graphics.Color;

06

import android.graphics.Paint;

07

import android.view.KeyEvent;

08

import android.view.MotionEvent;

09

import android.view.View;

10

11

//这里我们继承View

12

public class GameView extends View{

13

14

int left,top;

15

int w,h;

16

public GameView(Context context)

17

{

18

super(context);

19

left = 20;

20

top = 20;

21

w = 20;

22

h = 20;

23

setFocusable(true);

24

//这里要注意,别忘了加入setFocusable

25

//如果不加上这个,View被显示时,没有获得焦点,就是说,按键动作没有发送给View,所以需要在构造函数中增加这个函数

26

}

27

28

//复写onTouchEvent方法

29

@Override

30

public boolean onTouchEvent(MotionEvent event) {

31

// TODO Auto-generated method stub

32

int x = (int) event.getX();//获取touch事件的横坐标

33

int y = (int) event.getY();//获取touch事件的纵坐标

34

left = x;

35

top = y;

36

postInvalidate();//和invalidate()相似,都是是用来刷新View的。具体区别可以参考http://blog.csdn.net/ssstudio/article/details/6758917

37

return super.onTouchEvent(event);

38

}

39

40

//复写onDraw方法,这里有详细的参考博客,我就不再赘述了。http://daimajishu.iteye.com/blog/1080624

41

@Override

42

protected void onDraw(Canvas canvas) {

43

// TODO Auto-generated method stub

44

super.onDraw(canvas);

45

Paint paint =new Paint();

46

paint.setColor(Color.RED);

47

canvas.drawRect(left, top, left+w, top+h, paint);//画个矩形,也可以从资源文件中生成位图,方法见博客

48

}

49

50

//复写onKeyDown方法,该方法用来捕捉手机键盘被按下的事件

51

//使用方法可以参考博客:http://book.51cto.com/art/201010/231845.htm

52

@Override

53

public boolean onKeyDown(int keyCode, KeyEvent event) {

54

// TODO Auto-generated method stub

55

switch(keyCode)

56

{

57

case KeyEvent.KEYCODE_DPAD_UP://按键响应事件

58

top-=10;//每次移动10像素,如果移动1像素的话会很慢,大家可以试试

59

postInvalidate();//这个刷新方法上面已经讲过

60

break;

61

case KeyEvent.KEYCODE_DPAD_DOWN:

62

top+=10;

63

postInvalidate();

64

break;

65

case KeyEvent.KEYCODE_DPAD_LEFT:

66

left-=10;

67

postInvalidate();

68

break;

69

case KeyEvent.KEYCODE_DPAD_RIGHT:

70

left+=10;

71

postInvalidate();

72

break;

73

default:

74

break;

75

}

76

return super.onKeyDown(keyCode, event);

77

}

源码下载:

GameActivity

赞助本站

人工智能实验室

相关热词: android游戏开发 View 布局

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港