JessYanCoding / JessYanCoding/AndroidAutoSize

autosize在华为P40多窗口下失效

未关闭
#347 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Java
星标
13.7k
派生
2k
PR 合并指标
30 天内没有已合并 PR

描述

### Environment
- [x] Autosize Version: me.jessyan:autosize:1.1.2
- [x] Target Android Version: Android 10
- [x] Device Model: Huawei p40
- [x] Device Resolution: 1080px * 2340px
- [x] Design Size On AndroidManifest: design_width_in_dp = 730dp,高度并未设置

### Bug Description:

三方应用口袋故事在华为P40多窗口模式下,字体显示异常。
口袋故事使用的是autosize库,当前设置:

且调整design_width_in_dp的值,在多窗口模式下显示字体大小未发生变化,得出结论,autosize未生效。

### Log:

```log
AutoSize.java 290行,setDensity方法中
DisplayMetrics activityDisplayMetrics = activity.getResources().getDisplayMetrics();
setDensity(activityDisplayMetrics, density, densityDpi, scaledDensity, xdpi);
这行对于activity.getResources()的DisplayMetrics未生效

根因:
Android源码中getDisplayMetrics是ResourcesImpl中持有的mMetrics对象,华为EMUI代码中针对多窗口做了兼容性修改,在多窗口中返回的并非是ResourcesImpl中持有的mMetrics,而是其copy对象。直接修改copy对象中的属性无法生效。
```

### Screenshot

### Related Code:
```java
能否在设置density的时候,通过updateConfiguration接口确保更新
样例代码:
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
int ratio = configuration.densityDpi / (int)displayMetrics.density;
displayMetrics.density += 0.1f;
Configuration configuration = getResources().getConfiguration();
configuration.densityDpi = (int) (displayMetrics.density * ratio);
getResources().updateConfiguration(configuration,displayMetrics);

### Others:

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。