JessYanCoding / JessYanCoding/AndroidAutoSize

autosize在华为P40多窗口下失效

Open
#347 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
13.7k
Forks
2k
PR merge metrics
No merged PRs in 30d

Description

### 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:

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.