所謂頭條屏幕方案就是修改了DisplayMetrics類,讓設備的dp寬強行按設計稿來,所以DisplayMetrics獲取的一些參數都是縮放過的,並不是真實的。在一些情況下會出現兩次獲取結果不一樣,就產生了bug。由於項目已經用了這種方案(個人不太傾向使用),所以解決這個問題。目前出現的現象就是第 ...
所謂頭條屏幕方案就是修改了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