安卓安卓手机游戏推荐荐几个

31138人阅读
原创,转载务必在明显处注明:转载自&原文链接:&很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑这一块;请点击下面联系进入阅读:&& & & &&& & &各位童鞋请你们注意:surfaceview中确实有 onDraw这个方法,但是surfaceview不会自己去调用!!!&&而我代码中的ondraw 也好 draw 也好,都是我自己定义的一个方法。。。放在线程中不断调用的,一定要注意!!&&& & & &其实上一篇分析surfaceview的文章就是一个简单的游戏框架了,当然这里再强调一下,简单的游戏框架,所以不要高手们不要乱喷~&&这个Demo是给群里一童鞋写的一个对图片操作以及按键处理,游戏简单框架的一个demo,这里放出给大家分享~&&&&package com.
import android.content.C
import android.content.res.R
import android.graphics.B
import android.graphics.BitmapF
import android.graphics.C
import android.graphics.C
import android.graphics.P
import android.util.L
import android.view.KeyE
import android.view.SurfaceH
import android.view.SurfaceV
import android.view.SurfaceHolder.C
public class MySurfaceView extends SurfaceView implements Callback, Runnable {
private Thread th = new Thread(this);
private SurfaceH
private int SH, SW;
private Paint p2;
private int bmp_x = 100, bmp_y = 100;
private boolean UP, DOWN, LEFT, RIGHT;
private int animation_up[] = { 3, 4, 5 };
private int animation_down[] = { 0, 1, 2 };
private int animation_left[] = { 6, 7, 8 };
private int animation_right[] = { 9, 10, 11 };
private int animation_init[] = animation_
private int frame_
public MySurfaceView(Context context) {
super(context);
this.setKeepScreenOn(true);
res = this.getResources();
bmp = BitmapFactory.decodeResource(res, R.drawable.enemy1);
sfh = this.getHolder();
sfh.addCallback(this);
p = new Paint();
p.setColor(Color.YELLOW);
p2 = new Paint();
p2.setColor(Color.RED);
p.setAntiAlias(true);
setFocusable(true);
public void surfaceCreated(SurfaceHolder holder) {
SH = this.getHeight();
SW = this.getWidth();
th.start();
public void draw() {
canvas = sfh.lockCanvas();
canvas.drawRect(0, 0, SW, SH, p);
canvas.save();
canvas.drawText(&Himi&, bmp_x-2, bmp_y-10, p2);
canvas.clipRect(bmp_x, bmp_y, bmp_x + bmp.getWidth() / 13, bmp_y+bmp.getHeight());
if (animation_init == animation_up) {
canvas.drawBitmap(bmp, bmp_x - animation_up[frame_count] * (bmp.getWidth() / 13), bmp_y, p);
} else if (animation_init == animation_down) {
canvas.drawBitmap(bmp, bmp_x - animation_down[frame_count] * (bmp.getWidth() / 13), bmp_y, p);
} else if (animation_init == animation_left) {
canvas.drawBitmap(bmp, bmp_x - animation_left[frame_count] * (bmp.getWidth() / 13), bmp_y, p);
} else if (animation_init == animation_right) {
canvas.drawBitmap(bmp, bmp_x - animation_right[frame_count] * (bmp.getWidth() / 13), bmp_y, p);
canvas.restore();
sfh.unlockCanvasAndPost(canvas);
public void cycle() {
if (DOWN) {
bmp_y += 5;
} else if (UP) {
bmp_y -= 5;
} else if (LEFT) {
bmp_x -= 5;
} else if (RIGHT) {
bmp_x += 5;
if (DOWN || UP || LEFT || RIGHT) {
if (frame_count & 2) {
frame_count++;
frame_count = 0;
if (DOWN == false && UP == false && LEFT == false && RIGHT == false) {
frame_count = 0;
public boolean onKeyDown(int key, KeyEvent event) {
if (key == KeyEvent.KEYCODE_DPAD_UP) {
if (UP == false) {
animation_init = animation_
} else if (key == KeyEvent.KEYCODE_DPAD_DOWN) {
if (DOWN == false) {
animation_init = animation_
} else if (key == KeyEvent.KEYCODE_DPAD_LEFT) {
if (LEFT == false) {
animation_init = animation_
} else if (key == KeyEvent.KEYCODE_DPAD_RIGHT) {
if (RIGHT == false) {
animation_init = animation_
return super.onKeyDown(key, event);
/* (non-Javadoc)
* @see android.view.View#onKeyUp(int, android.view.KeyEvent)
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (DOWN) {
} else if (UP) {
} else if (LEFT) {
} else if (RIGHT) {
return super.onKeyUp(keyCode, event);
public void run() {
// TODO Auto-generated method stub
while (true) {
Thread.sleep(100);
} catch (Exception ex) {
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// TODO Auto-generated method stub
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
&& 此方法是用来响应按键!如果是自己定义一个继承自View的类,重新实现onKeyDown方法后,只有当该View获得焦点时才会调用onKeyDown方法,Actvity中的onKeyDown方法是当所有控件均没有处理该按键事件时,才会调用.
&&&这里也是对屏幕进行刷屏操作,其实这也只是一种,之前文章里我也用到drawRGB的方法同样实现,当然也可以用fillRect等来刷屏。
&& &那么这里我想说下,在继承view中,因为onDraw方法是系统自动调用的,不像在surfaceview这里这样去在run里面自己去不断调用,在view中我们可以抵用&invalidate()/postInvalidate() 这两种方法实现让系统调用onDraw方法,这里也是和surfaceview中的不同之一!
&&&这里canvas.save();和canvas.restore();是两个相互匹配出现的,作用是用来保存画布的状态和取出保存的状态的。这里稍微解释一下,
&& 当我们对画布进行旋转,缩放,平移等操作的时候其实我们是想对特定的元素进行操作,比如图片,一个矩形等,但是当你用canvas的方法来进行这些操作的时候,其实是对整个画布进行了操作,那么之后在画布上的元素都会受到影响,所以我们在操作之前调用canvas.save()来保存画布当前的状态,当操作之后取出之前保存过的状态,这样就不会对其他的元素进行影响
对于&canvas.save();和canvas.restore(); &还有不少童鞋不懂,OK、我再补充点:
public void draw() {
Canvas canvas = sfh.lockCanvas();
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(bmp1, 0,0,paint);
canvas.save();
canvas.scale(1.5f, 1.5f);
canvas.restore();
canvas.drawBitmap(bmp2, 0,0,paint);
sfh.unlockCanvasAndPost(canvas);
public void draw() {
Canvas canvas = sfh.lockCanvas();
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(bmp1, 0,0,paint);
canvas.scale(1.5f, 1.5f);
canvas.drawBitmap(bmp2, 0,0,paint);
sfh.unlockCanvasAndPost(canvas);
上面这两个代码片段中我们都假设有两张图片 bmp1和bmp2,并且都画在画布上!
那么代码段1和代码段2的不同:
代码段1中我们进行画布缩放的之前保存了画布状态,做了缩放操作之后又取出之前保存的状态,这样做是为了保证bmp2正常画出来不受到缩放的影响!
代码段2里,画了bmp1后就执行了缩放操作,并且没有保存状态!紧接着画了bmp2,那么bmp2也会一样受到缩放的影响!!
所以我们如果单独处理一张图片的时候,而且不想影响其他部分的绘制,那么应该如下来做:
public void draw() {
Canvas canvas = sfh.lockCanvas();
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(bmp1, 0,0,paint);
canvas.save();
canvas.scale(1.5f, 1.5f);
canvas.drawBitmap(bmp2, 0,0,paint);
canvas.restore();
sfh.unlockCanvasAndPost(canvas);
(推荐大家订阅本博客,因为咱的更新速度可是很快的~娃哈哈)
源码下载地址: &
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1846945次
积分:16747
积分:16747
排名:第183名
原创:147篇
评论:2789条
移动开发专家,专注于移动开发领域,多年 J2me、Android、iOS 平台游戏开发经验;
CSDN、ITeye、51CTO、eoe-Android、泰然、中国移动开发者社区、微度网等多家技术论坛担任专家与版主;
? 【iOS】(高级群/超级群)
Cocos2d-x @Himi:
? 【Lua】(高级群)
Cocos2d-x-Lua @Himi:
? 【Unity3D】(超级群)
Unity3D @Himi:
文章:62篇
阅读:863021
文章:34篇
阅读:6020664399游戏盒下载
当前位置:
画个火柴人
画个火柴人
Draw a Stickman:EPIC
语言:中文
系统:Android 2.3.3以上
开发商:Hitcents
无需谷歌市场
无需数据包
扫描二维码下载
其他安装方式
查看下载教程
《画个火柴人 Draw a Stickman:EPIC》是一款互动形式主导的冒险游戏,虽然游戏叫做《画个火柴人》,不过游戏开始为大家准备的画板绝不仅仅局限在火柴人这种形象上,你可以任意构想你的主角,即使在游戏过程中觉得当前的形象不够好,依然可随时重新作画以更换。画完游戏的主角,故事还没开始,接下来,你要为你的主角找一个游戏中的伙伴,这个伙伴当然也用画的,这样,涂鸦的世界你将不再孤独。不过接下来的剧情就有着童话般烂漫和戏剧性。根据剧情需要,你要为你的伙伴想一个昵称来称呼TA。你的朋友从画板上跳落到地面,不过不幸被一本奇奇怪怪的书给吞噬进书页里面去了,还在等什么,快下载下来去解救你的朋友吧~
相关游戏推荐
大小:26.59M
大小:12.94M
大小:86.59M
大小:49.6M
大小:15.55M
大小:61.42M
大小:43.6M
大小:14.22M
大小:65.37M
大小:35.13M
大小:41.68M
大小:26.68M
大小:10.29M
大小:53.18M
大小:45.85M
大小:117.46M
大小:23.56M
大小:44.88M
大小:24.65M
大小:32.84M
更多精彩讨论请到
此游戏其他版本请大侠们推荐几个安卓游戏。_百度知道
请大侠们推荐几个安卓游戏。
我手机 华荣耀3c没较耐玩单机游戏啊能够局域网或蓝牙联机玩种游戏要网游推荐网游请走
您& & 您尝试【N.O.V.A3近联盟先遣队】&&&&N.O.V.A. 3款手游市场载量超火爆射击作游戏&&&&您腾讯电脑管家——应用宝载款游戏&&&&打wifi联机打应用宝——载输入游戏名字即希望帮您望采纳腾讯电脑管家企业平台:
已回答234336
响应时间&33小时
其他类似问题
按默认排序
其他3条回答
喜欢玩类型游戏呢我玩几玩型单机游戏赛车极品飞车17真实赛车3真玩哦型游戏暗影杀手细胞裂玩点游戏极难游戏别踩白块真玩呢载官网载给手机安装应用宝面载安装呢面软件齐全兼容安全式版本呢手机打应用宝——游戏——搜索些游戏载电脑给手机安装电脑打应用宝连接手机
华为荣耀支持的安卓游戏很多啊推荐你选择应用宝下载游戏资源如天天炫斗,画面绚丽,格斗新体验,角色各自有特点,让游戏爱好者欲罢不能,支持挂机、PVE闯关、世界BOSS活动、战斗力排行等游戏功能可挑战好友,抢红包鼓励等游戏下载排行榜第二让你在社交的同时参与游戏,与妹子共同战斗单机游戏小黄人快跑欢快的奔跑、跳跃、飞翔,无所不能,动作超萌哦希望对你有帮助望采纳
楼主你好不知道你喜欢什么类型的,推荐一些我自己玩过的给你吧你可以玩玩国际象棋联机版或五子棋联机版,这个是可以和好友蓝牙联机玩的还有平时爱玩的单机游戏像史上最难游戏,疯狂猜图,我爸爸是个小偷都很不错的具体你也可以去电脑管家的应用宝里看一下,里面的游戏资源非常之多各种类型各种有,完全可以满足你的需求,希望可以帮到你
安卓游戏的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 安卓游戏下载 的文章

 

随机推荐