JessYanCoding / JessYanCoding/AndroidAutoSize

autosize在华为P40多窗口下失效

Đang mở
#347 3 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Java
Star
13.7k
Fork
2k
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

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

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.