Android 5.0下SlidingMenu和Cocos2dx一起使用引起的一个奇怪的绘制bug的解决办法
来源:互联网 发布:安卓windows双系统手机 编辑:程序博客网 时间:2024/06/13 05:48
公司的用户认证SDK项目接了游戏工程在Android 5.0.1系统下测试时出现了一个bug:
使用了SlidingMenu的那个Activity的控件(包括Fragment里的和SlidingMenu里的),会出现问题。具体的表现为ListView的列表项和按钮等点击之后没有看到响应点击的背景色;EditText点击后没看到光标,输入一些字符串后没有显示在EditText里,但滑动一下SlidingMenu后就能显示出字符串了。
经过分析测试,这个bug只有在Android 5.0系统下,并且同时使用SlidingMenu和Cocos2dx的项目才会出现。这个项目在Android 5.0以下的系统运行正常,没有这个bug。而在Android 5.0系统环境,如果不接入Cocos2dx工程,只用SDK的demo跑也正常。
我本以为是焦点的获取问题,但通过Activity.getCurrentFocus()方法是有得到各个控件的焦点的,且点击的事件也有响应。于是去分析SlidingMenu的源码,发现是以下代码的问题。
@TargetApi(Build.VERSION_CODES.HONEYCOMB)public void manageLayers(float percentOpen) {if (Build.VERSION.SDK_INT < 11) return;boolean layer = percentOpen > 0.0f && percentOpen < 1.0f;final int layerType = layer ? View.LAYER_TYPE_HARDWARE : View.LAYER_TYPE_NONE;if (layerType != getContent().getLayerType()) {mHandler.post(new Runnable() {public void run() {Log.v(TAG, "changing layerType. hardware? " + (layerType == View.LAYER_TYPE_HARDWARE));getContent().setLayerType(layerType, null);getMenu().setLayerType(layerType, null);if (getSecondaryMenu() != null) {getSecondaryMenu().setLayerType(layerType, null);}}});}}
上面这段代码是在SlidingMenu类的 最底部,主要的功能是在Android 3.0以上的系统启用硬件加速去绘制滑动的效果。
我推测在Android 5.0系统下,该代码可能和Cocos2dx的绘制冲突了。
解决的办法很简单
把
if (Build.VERSION.SDK_INT < 11) return;
改成
if (Build.VERSION.SDK_INT < 11 || Build.VERSION.SDK_INT > 20) return;
1 0
- Android 5.0下SlidingMenu和Cocos2dx一起使用引起的一个奇怪的绘制bug的解决办法
- android上使用cocos2dx的一个bug
- 一个奇怪的bug
- 一个奇怪的bug
- Android下Slidingmenu和actionbarsherlock的使用
- cocos2dx项目在android平台第一次安装的一个奇怪的bug
- 缓冲区溢出引起奇怪的bug
- cocos2dx SimpleAudio的奇怪BUG记录
- spark一个奇怪的bug
- memcpy引起的一个bug
- 一个分号引起的bug
- 一个BUG引起的思考
- 一个CFile::Remove引起的奇怪问题
- android奇怪的bug记录
- Android Studip下SlidingMenu的使用总结
- android slidingmenu的使用
- Android SlidingMenu的使用
- cocos2dx AssetsManager的一个BUG
- UVa 1339 - Ancient Cipher
- Map并发问题
- thread termination
- HttpClient 设置超时
- Linux使用技巧2--Ubuntu下使用samba来创建共享文件夹
- Android 5.0下SlidingMenu和Cocos2dx一起使用引起的一个奇怪的绘制bug的解决办法
- libevent笔记-bufferevent带buffer的事件
- BZOJ 3563 DZY Loves Chinese / BZOJ 3569 DZY Loves Chinese II 随机化+高斯消元解异或方程组
- 再说CSS3渐变——线性渐变
- iOS开发 全局变量声明
- PHP hash表hash分布测试
- hdu 3746 Cyclic Nacklace
- 【jQuery】js中一些函数写法的区别
- 大型网站系统架构的演化