今天,讲讲如何处理



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出现白屏相关推荐

  1. android打开app白色页面,完美解决Android App启动页有白屏闪过的问题

    应用启动的时候有短暂的白屏,如图: 可以通过设置theme的方式来解决 @color/colorPrimary @color/colorPrimaryDark @color/colorAccent t ...

  2. 如何解决页面刷新时白屏的问题?

    如何解决页面刷新时白屏的问题? this.isRouterAlive = false this.$nextTick(function () {this.isRouterAlive = true;//写 ...

  3. android WebView加载网页白屏问题优化处理

    android WebView加载网页白屏问题优化处理 问题描述: 使用webview加载Web界面时,会出现界面白屏的情况.http下通常问题不大,通常https白屏的可能性很大,而且通常没有任何报 ...

  4. android 7.0 黑屏,Android app启动是出现白屏或者黑屏如何解决?

    1.为什么 APP 启动时会出现白屏或者黑屏? 当打开一个 Activity 时,如果这个 Activity 所属的应用还没有在运行,系统会为这个 Activity 所属的应用创建一个进程,但进程的创 ...

  5. Android APP启动时出现白屏或者黑屏怎么办?

    1.为什么APP启动时会出现白屏或者黑屏? 当打开一个Activity时,如果这个Activity所属的应用还没有在运行,系统会为这个Activity所属的应用创建一个进程,但进程的创建与初始化都需要 ...

  6. Android layer type与WebView白屏

    在项目中遇到WebView在加载图片的时候会出现白屏的情况,后来在xml设置了WebView属性,问题的到解决: <WebView android:id="@+id/webview&q ...

  7. 解决app欢迎页面白屏问题

    我们在打开APP时仔细观察的话会发现QQ,微信之类这些软件打开时和一些软件打开时有一些不一样的地方,有些APP打开时会闪一瞬间的白屏,如果手机卡的话白屏的时间会很长,对用户体验不是很好.我在网上查了相 ...

  8. 真正超简单解决App启动时白屏问题

    相信不少的童鞋都遇到过在开发App 的时候打开应用的时候,会有白屏的现象,网上也有不少类似的解决方案. 修改 application 的 theme ,然后在style里面添加一个背景 将 theme ...

  9. 解决app一打开白屏和黑屏的问题

    这是复制一位大神的,并亲测过:用作后续复习 链接:http://www.cnblogs.com/liqw/p/4263418.html 你会很奇怪,为什么有些app启动时,会出现一会儿的黑屏或者白屏才 ...

最新文章

  1. 将java项目传输到centos7服务端
  2. GT Transceiver的回环模式
  3. 0-1 背包问题的 4 种解决方法算法策略
  4. php非,通过非数字和字符的方式实现PHP WebShell
  5. [APIO2009]抢掠计划
  6. matlab blms算法程序,LMS算法Matlab程序
  7. 维基解密:科技公司获得安全漏洞信息须答应几个条件
  8. mysql 查询关键词顺序
  9. 一张图学会Python3的基本用法
  10. UnityWebPlayer缓存清理工具
  11. NLP之人机对话系统
  12. JavaScript网页特效范例宝典pdf
  13. Python文本挖掘练习(一)// 新闻摘要
  14. 好看的个人网站源码_新手想建个人网站,都要注意哪些关于自助建站源码的坑?...
  15. idea中的.iml和.idea能删除么——可以
  16. k8s安装dashboard及账号密码登陆
  17. 机器学习样本数据集,训练正负样本
  18. 修改内核参数 dad_transmits
  19. 一道数量遗传学题:如何计算育种值
  20. 快速排序常见3种方法(hoare、挖坑法、前后指针法)以及改进。

热门文章

  1. Android 定时器实现的几种方式和removeCallbacks失效问题详解
  2. javascript,css延迟加载器
  3. C专家编程--读书笔记六 运行时数据结构
  4. Remoting简介
  5. 4.8地铁查询开发进度
  6. 【winfrom】读写文本
  7. 转 让NET C# 程序独立运行(脱离 .NET Framework运行,绿色运行) 未验证
  8. linux下执行scrapy的爬虫定时任务
  9. windows下安装virtual box(ubuntu)
  10. GitHub Pages和每个项目绑定自定义域名(支持多个和顶级域名)