评论

收藏

[Android] 修复头条屏幕适配方案导致的两次获取尺寸不一问题

移动开发 移动开发 发布于:2022-04-19 13:51 | 阅读数:697 | 评论:0

所谓头条屏幕方案就是修改了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
  }
}
本文来自博客园,作者:徐影魔,转载请注明原文链接:https://www.cnblogs.com/xunevermore/p/16164868.html