JessYanCoding / JessYanCoding/AndroidAutoSize

重写getResources()华为手机异常, 使用副单位在小米12系统(MIUI 13.0.4和13.0.9)页面变形

未關閉
#408 1 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
Java
星號
13.7k
分支
2k
PR 合併指標
30 天內沒有已合併 PR

描述

image

**上图是一个正常的页面.部分文字我打了马赛克, 主要是暂时页面的布局样式**
在 **横屏** BaseActivity中重写了getResources()方法,在荣耀8X(EMIUI 10.0.0)和华为Mate40E 鸿蒙2.0系统,当前横屏页面跳转另外一个竖屏Activity,再返回之前的横屏页面, 很大几率造成页面内容丢失.如下图:
image

如果不重写getResources()横竖屏切换回来,关闭实名页面到下一个页面会展示成竖屏的分辨率页面,页面变小.

后来想到用副单位布局,华为手机这个问题是解决了,重写getResources()方法,横竖屏切换也没事了,但是用红米Note 11Tpro+的一个手机一测试,页面布局错乱,很多控件显示不全,甚至页面展示出来之后,页面还会跳动调整, 本来按钮下面的内容没有显示, 之后又跳出来了,
给人的感觉就是页面在跳动, 其他手机暂未发现这个问题.如下图
image

上面的四行文字,有一行直接被覆盖隐藏,甚至还有几率最下面一行文字没有显示出来和提交信息按钮显示半块.
image

后来果断放弃使用副单位了,继续用dp布局,想办法去解决华为和荣耀手机这个问题:
1.删除getResources()方法
2.在实名页面展示的后一个Fragment页面的onCreateView()或onCreate()方法中调用 AutoSize.autoConvertDensityBaseOnWidth(getActivity(), 640); 重新让这个Fragment页面适配一下,最后问题解决了.

貢獻指南

這個儲存庫沒有索引到貢獻指南

研究方向

Reproduce the orientation changes on the reported Huawei, Honor, Xiaomi, and Redmi devices, starting with BaseActivity.getResources() and the affected Fragment onCreateView()/onCreate() paths. Compare behavior with and without AutoSize.autoConvertDensityBaseOnWidth(getActivity(), 640); done means returning from the portrait screen preserves the landscape layout without missing, overlapping, or jumping controls.

由索引模型根據 Issue 內容生成。

評估

技術堆疊
android, java
領域
mobile
Issue 類型
缺陷
難度
4/5
預估耗時
3-5 天
活躍度
停滯
描述清晰度
需要釐清
新手友好度
25/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。