android 解决华为 SlidingMenu出现白屏
来源:互联网 发布:java官方文档 编辑:程序博客网 时间:2024/04/28 12:46
SlidingMenu在华为手机上出现的白屏。
之前做了一个自定义的Monitor,用来播放视频,但是在华为手机上,每次滑动SlideMenu后,Monitor会出现白屏,之前一直不知道为什么。后来,在网上搜索了资料,终于解决了问题。
问题原因是由于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()) { getHandler().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); } } }); }}
这段代码的含义是,当滑动时,菜单和内容都开启硬件加速,滑动结束后,取消硬件加速。解决问题也很简单。
解决方法一:
第一种解决方法是关闭硬件加速
在AndroidManifest.xml文件中在application标签中添加属性 android:hardwareAccelerated=”false”,如图:
但是,这种方法有个缺点,就是开启了硬件加速之后,如果碰到非常复杂的界面布局,嵌套太多的话,就会报StackOverflow的错误,可以自己百度一下,如果你恰好遇到一个喜欢留个FrameLayout,然后在代码里面不停的removeAllView()、addView(),动态添加布局的猪一样的队友,那么恭喜你,很有可能遇到我说的情况。顺便说一下,优雅的解决复杂布局的方法是用多个Fragment来拆开复杂界面、分离页面逻辑
万一你遇到开启硬件加速后,复杂界面报错的情况怎么办呢?别着急,临时关闭硬件加速就可以了,告诉机器,这个界面不要硬件加速。
首先找到报错的那个界面,例如MainActivity,然后设置这个Activity的属性,针对这个Activity不要使用硬件加速就可以了,如图:
如果这个猪一样的队友写的报错界面太多了,你总不能一个一个去找吧,所以,就有第二种方法,直接修改SlidingMenu的源码
解决方法二:
直接将SlideMenu的代码设置为滑动时也不要开启硬件加速。具体代码很简单:
@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; boolean layer=false; final int layerType = layer ? View.LAYER_TYPE_HARDWARE : View.LAYER_TYPE_NONE; if (layerType != getContent().getLayerType()) { getHandler().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); } } }); } }
这种解决代码比较好,建议使用这一种代码。
android 解决华为 SlidingMenu出现白屏就讲完了。
就这么简单。
- android 解决华为 SlidingMenu出现白屏
- Android slidingMenu导入出现的问题
- SlidingMenu Android
- Android SlidingMenu
- Android-SlidingMenu
- android slidingmenu
- Android SlidingMenu
- 移植SlidingMenu Android library,和安装example出现的问题解决
- 移植SlidingMenu Android library和安装example出现的问题解决
- 移植SlidingMenu Android library,和安装example出现的问题解决
- 移植SlidingMenu Android library,和安装example出现的问题解决
- Android:使用Slidingmenu显示WebView的时候出现空白部分
- 解决Android SlidingMenu-master 导入eclipse不能运行的问题
- Android整合SlidingMenu和Actionbarsherlock解决Actionbar的冲突
- android 解决SlidingMenu 侧滑与ViewPager冲突问题
- 解决Android Activity切换时出现白屏问题
- 解决Android Activity切换时出现白屏问题
- 解决Android Activity切换时出现白屏问题
- 51 nod 1003:一个数阶乘后0的个数
- 【一】如果让我学习TensorFlow,我该怎么学?
- 余额宝惨败,马云担心的事情发生了!
- 2017.10.26 測試總結并今日總結
- R 语言 wordcloud 与 wordcloud2 包的安装及参数说明
- android 解决华为 SlidingMenu出现白屏
- 活动——使用显式Intent
- 目前的打算
- splinter简单用法环境fedora26,firefox56
- bzoj1093[ZJOI2007]最大半连通子图 tarjan+拓补排序
- 【笔记】扩展欧几里得算法(exgcd)
- 和 Firebug 说再见 Firefox 宣布 Firebug 的寿命即将终止
- java有关反射的方法的例子
- discuz新增一个discuz 独立页面