发布于2022年11月4日3年前 所谓头条屏幕方案就是修改了DisplayMetrics类,让设备的dp宽强行按设计稿来,所以DisplayMetrics获取的一些参数都是缩放过的,并不是真实的。在一些情况下会出现两次获取结果不一样,就产生了bug。由于项目已经用了这种方案(个人不太倾向使用),所以解决这个问题。目前出现的现象就是第一次打开Splash是未缩放的,第二次打开又是缩放的,所以我用下面这个工具类让尺寸dp等参数恢复成真实的。 object DisplayMetricsUtil { @JvmStatic fun applyRealMetrics(activity: Activity) { //获取真实dp参数 val dm = DisplayMetrics() activity.windowManager.apply { defaultDisplay.getRealMetrics(dm) } //应用到activity val displayMetrics = activity.resources.displayMetrics displayMetrics.density = dm.density displayMetrics.scaledDensity = dm.scaledDensity displayMetrics.widthPixels = dm.widthPixels displayMetrics.heightPixels = dm.heightPixels displayMetrics.xdpi = dm.xdpi displayMetrics.ydpi = dm.ydpi displayMetrics.densityDpi = dm.densityDpi } }
创建帐户或登录后发表意见