Android8.1 framework 微信付款码显示不出来

      在终端设备上,安装微信最新版本,登录进去之后,但是付款码显示不出来,在查看log后:

      OfflineAlertView not displayed because it is too large to fit into a software layer (or drawing cache), needs 666624 bytes, only 640000 available

      log的意思大概是绘制的图层大小超过了最大可用值,导致绘制不出来

      那么是什么情况导致的呢?

      是开启了硬件加速后引起的,通过反编译微信的AndroidManifest.xml,果然是开启了硬件加速,如果开启软件加速,会开启缓存,缓存层大小如果超了最大值会抛出异常,导致无法绘制view

     1 .解决方法

      知道了原因,就好办了

      可以通过View.java来修改

    

public void setLayerType(int layerType, @Nullable Paint paint) {

+	String packageName = mContext.getPackageName();
+   if ("com.tencent.mm".equals(packageName)) {
+       layerType = LAYER_TYPE_NONE;
+   }
		
    if (layerType < LAYER_TYPE_NONE || layerType > LAYER_TYPE_HARDWARE) {
        throw new IllegalArgumentException("Layer type can only be one of: LAYER_TYPE_NONE, "+"LAYER_TYPE_SOFTWARE or LAYER_TYPE_HARDWARE");
    }

在View.java中通过包名判断微信,然后强制把layerType设置成LAYER_TYPE_NONE,可解决问题

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>