华为手机切换分辨率,导致布局变大变小甚至混乱的问题

您所在的位置:网站首页 华为图片变大 华为手机切换分辨率,导致布局变大变小甚至混乱的问题

华为手机切换分辨率,导致布局变大变小甚至混乱的问题

2024-07-16 15:15| 来源: 网络整理| 查看: 265

1、如果碰到跟标题一样类似的问题的同学,先看一篇文章:(https://blog.csdn.net/u012440207/article/details/100695995)

2、然后我再说我新接手项目中遇到的问题 ,在项目中的工具类DIsplayUtils中有这么个方法,请看注释2

/** * 系统设置"显示大小"时原有UI样式保持不变: *

* 1、当调节手机系统"显示大小"【调大】的时候,相应的dpi会变大【dp = (dpi/160) * px】,此时dp就会变大,所以相应的UI布局就会变大。 * 2、当调节手机系统"分辨率"【调小】的时候,相应的dpi会变小【比如由480-->320】。如果此时使用技术手段使dpi保持不变,那么相同的dp就会占用更多的px,所以UI布局就会变大。 */ public static void setDefaultDisplay(Context context) { if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) { Configuration origConfig = context.getResources().getConfiguration(); //获取手机出厂时默认的densityDpi【注释1】 origConfig.densityDpi = getDefaultDisplayDensity(); Log.d(TAG, "densityDpi: " + origConfig.densityDpi); context.getResources().updateConfiguration(origConfig, context.getResources().getDisplayMetrics()); } } 然后我再说我新接手项目中,在所有activity的基类中都复写了一个方法,强制dpi不变: override fun getResources(): Resources { val res = super.getResources() res.updateConfiguration(Configuration().apply { setToDefaults() if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) { densityDpi = DisplayUtil.getDefaultDisplayDensity() } }, res.displayMetrics) return res }

此方法导致华为手机切换分辨率的时候,dpi不变,因为dpi不变,因此在不同分辨率上显示的大小肯定不一样,这问题拦了我一天,解决不难,注释掉就行,找到问题太难了。 幸好有前面大佬的一篇文章给我提示,或者说我这个前任写代码的时候全部照抄了那篇文章,但是又抄的不伦不类,给我留了一个大坑,幸好现在解决了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3