JessYanCoding / JessYanCoding/AndroidAutoSize
autosize在华为P40多窗口下失效
- 主要言語
- 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 はまだ評価されていません。