做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://www.leestorm.com
转载请标明作者和出处,谢谢。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。