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
二维码