当前位置: 编程技术>移动开发
本页文章导读:
▪surfaceview与view的差异 surfaceview与view的区别
android2D游戏的开发中,主要用surfaceview与view。二者的区别1.画布的更新view是通过postInvalidate()与invalidate()执行的,也就是说画布是由系统的UI来进行更新的,但是.........
▪ 软键盘的有关问题 软键盘的问题
显示软键盘:
InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
imm.showSoftInput(myview, Input.........
▪ Proguard搅混与JNI Proguard混淆与JNI
Android应用写好后,用proguard混淆代码是很必要的,如果应用里有JNI调用的时候,有时候会出一些问题,没有混淆的apk用的很正常,但混淆后运行就有错误~1. 有时progurad会把s.........
[1]surfaceview与view的差异
来源: 互联网 发布时间: 2014-02-18
surfaceview与view的区别
android2D游戏的开发中,主要用surfaceview与view。二者的区别
1.画布的更新
view是通过postInvalidate()与invalidate()执行的,也就是说画布是由系统的UI来进行更新的,但是画布如果是更新时间太长,会造成UI线程阻塞,从而引发按键或者去、触屏幕无响应等问题
surfaceview是由新的线程单独执行,所以不会出现这类问题
2.试图机制
view没有双缓冲机制,surfaceview有
但是如果是一款棋牌类游戏,游戏画面是被动更新,画布的绘制是根据玩家的触屏或者按键来响应的话,这时建议用view,从而减少surfaceview单独开一个线程而带来的内存开销!
反之,如果是动作类游戏(RPG)建议surfaceview。
总体来说,surfaceview更适合2D游戏开发,但是具体是情况而定。
android2D游戏的开发中,主要用surfaceview与view。二者的区别
1.画布的更新
view是通过postInvalidate()与invalidate()执行的,也就是说画布是由系统的UI来进行更新的,但是画布如果是更新时间太长,会造成UI线程阻塞,从而引发按键或者去、触屏幕无响应等问题
surfaceview是由新的线程单独执行,所以不会出现这类问题
2.试图机制
view没有双缓冲机制,surfaceview有
但是如果是一款棋牌类游戏,游戏画面是被动更新,画布的绘制是根据玩家的触屏或者按键来响应的话,这时建议用view,从而减少surfaceview单独开一个线程而带来的内存开销!
反之,如果是动作类游戏(RPG)建议surfaceview。
总体来说,surfaceview更适合2D游戏开发,但是具体是情况而定。
[2] 软键盘的有关问题
来源: 互联网 发布时间: 2014-02-18
软键盘的问题
显示软键盘:
InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); imm.showSoftInput(myview, InputMethodManager.SHOW_IMPLICIT);
隐藏软键盘:
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
显示软键盘:
InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(myview, 0);
如果是在alertdialog中的自定义的布局edittext里面,弹出软键盘时,需要等alertdialog初始化完成后延时弹出,
Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE); inputMethodManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); } }, 500);
显示软键盘
android:windowSoftInputMode="stateVisible|adjustUnspecified"
隐藏软键盘
android:windowSoftInputMode="adjustUnspecified|stateHidden"
[3] Proguard搅混与JNI
来源: 互联网 发布时间: 2014-02-18
Proguard混淆与JNI
Android应用写好后,用proguard混淆代码是很必要的,如果应用里有JNI调用的时候,有时候会出一些问题,没有混淆的apk用的很正常,但混淆后运行就有错误~
1. 有时progurad会把so库里的代码混淆,这样外部调用就会出现NoMethodFound的问题
2. proguard会把so库删掉,因为你应用里的代码里没有直接引用到so库,解包自己打包好的apk,看看有没有\libs\*.so文件存在
3. 除此之外,proguard也会把调用so库文件的代码混淆,同样会有NoMethodFound的问题
我在混淆自己应用的时候出现过这三种,研究了好半天,弄清楚导致失败的原因就能解决了,至于解决方法很简单,上网搜下,有很多文章讲的。。。
Android应用写好后,用proguard混淆代码是很必要的,如果应用里有JNI调用的时候,有时候会出一些问题,没有混淆的apk用的很正常,但混淆后运行就有错误~
1. 有时progurad会把so库里的代码混淆,这样外部调用就会出现NoMethodFound的问题
2. proguard会把so库删掉,因为你应用里的代码里没有直接引用到so库,解包自己打包好的apk,看看有没有\libs\*.so文件存在
3. 除此之外,proguard也会把调用so库文件的代码混淆,同样会有NoMethodFound的问题
我在混淆自己应用的时候出现过这三种,研究了好半天,弄清楚导致失败的原因就能解决了,至于解决方法很简单,上网搜下,有很多文章讲的。。。
最新技术文章: