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();
还有一些问题以后我会陆续补充,感兴趣的朋友请关注我的博客:http://leestorm.iteye.com
转载请标明作者和出处,谢谢。
?