Android游戏开发常碰到的几个问题

做Android游戏开发的时候遇到的一些问题,跟大家分享一下,少走弯路。

1.多个Activity切换会导致onCreate重复执行,所以若在onCreate里进行一些初始化操作就会引起意想不到的问题,建议加入静态标记来判断是否第一次启动。

2.如果在onCreate()中建立SurfaceView对象并setContentView(),那么不要在SurfaceView的构造函数里加载文件,这时候还没有context实例。建议把Activity做成单例,在SurfaceView的surfaceCreated方法里启动游戏线程并进行游戏初始化操作。

3.播放声音时,只有用setDataSource(path)才可以调用MediaPlayer.prepare(),通过资源文件或者url方式使用prepare()就报错。

4.进行HTTP网络通信时,HttpURLConection的getResponseCode()会导致网络IO异常或者阻塞,这个BUG在J2ME也出现,建议跳过获取HTTP响应码这步。

5.有时view的按键响应会出现只响应方向键的问题,用setFocusableInTouchMode(true)代替setFocusable(true)就可以解决,不过建议这两句话都加上。

6.如何设置全屏模式:

        //设置为无标题栏  

requestWindowFeature(Window.FEATURE_NO_TITLE);

//设置为全屏模式

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

       

7.如何强制横竖屏:

//强制横屏模式

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

//强制竖屏

        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

8.如果你开发的程序是320x480的分辨率,却用在480x800的手机上,这时1.6以上的SDK会自动拉伸程序画面至当前屏幕比例,要关闭自动拉伸在AndroidManifest.xml加入:

<uses-sdk android:minSdkVersion="4" />

9.剪切区设置

c.save();

c.clipRect(viewX,viewY,viewX+viewWidth,viewY+viewHeight);

//draw..........

        c.restore();

转载请标明作者和出处,谢谢。

相关推荐