android小游戏制作基础,View实现游戏布局和方法
16lz
2021-01-26
在使用android的朋友们,相信大家对android的游戏不陌生吧,像愤怒的小鸟,植物大战僵尸等等优秀的游戏,给我们带来了很好的用户体验
下面我来教大家一点android游戏开发的一点基础,大家可以参照这个方法框架来设计一些像贪吃蛇,俄罗斯方块,雷电等小游戏,从而激发大家学习的兴趣。
下面来看看这个程序的运行效果图:
这个红色小矩形就是我们可以操控的对象,我们可以用手机方向键控制它移动,也可以用触控的方式设置其位置,这是一些小游戏的雏形,大家可以再次深度开发,后面代码部分我会有详细的注释和源码下载,这里不再介绍
代码部分:
————————–GameActivity.java-—————————
package jiabin.activity; import android.app.Activity;import android.os.Bundle;import android.view.Window;import android.view.WindowManager; public class GameActivity extends Activity{ /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE);//设置窗口没有标题 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏显示 setContentView(new GameView(this));//布局不采用静态布局,而是采用view方法 //不需要在资源文件中layout写XML文件 }}
————————–GameView.java—————————-
package jiabin.activity; import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.view.KeyEvent;import android.view.MotionEvent;import android.view.View; //这里我们继承Viewpublic class GameView extends View{ int left,top; int w,h; public GameView(Context context) { super(context); left = 20; top = 20; w = 20; h = 20; setFocusable(true); //这里要注意,别忘了加入setFocusable //如果不加上这个,View被显示时,没有获得焦点,就是说,按键动作没有发送给View,所以需要在构造函数中增加这个函数 } //复写onTouchEvent方法 @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub int x = (int) event.getX();//获取touch事件的横坐标 int y = (int) event.getY();//获取touch事件的纵坐标 left = x; top = y; postInvalidate();//和invalidate()相似,都是是用来刷新View的。具体区别可以参考http://blog.csdn.net/ssstudio/article/details/6758917 return super.onTouchEvent(event); } //复写onDraw方法,这里有详细的参考博客,我就不再赘述了。http://daimajishu.iteye.com/blog/1080624 @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); Paint paint =new Paint(); paint.setColor(Color.RED); canvas.drawRect(left, top, left+w, top+h, paint);//画个矩形,也可以从资源文件中生成位图,方法见博客 } //复写onKeyDown方法,该方法用来捕捉手机键盘被按下的事件 //使用方法可以参考博客:http://book.51cto.com/art/201010/231845.htm @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub switch(keyCode) { case KeyEvent.KEYCODE_DPAD_UP://按键响应事件 top-=10;//每次移动10像素,如果移动1像素的话会很慢,大家可以试试 postInvalidate();//这个刷新方法上面已经讲过 break; case KeyEvent.KEYCODE_DPAD_DOWN: top+=10; postInvalidate(); break; case KeyEvent.KEYCODE_DPAD_LEFT: left-=10; postInvalidate(); break; case KeyEvent.KEYCODE_DPAD_RIGHT: left+=10; postInvalidate(); break; default: break; } return super.onKeyDown(keyCode, event); }
————————————————————————
源码下载:
GameActivity更多相关文章
- Android中导入工程出现Project has no default.properties file!
- Android实现定时器的几种方法
- android aidl和普通service
- Anroid ListView分组和悬浮Header实现
- RecyclerView的功能扩展(Android图片选择器)
- 关于Android(安卓)draw中的画布的说明
- 自定义View 篇一--------《自定义View流程分析》
- Android中保存图片的两种方式
- 在mac上无法使用Android(安卓)Studio的解决方法