今日头条屏幕适配方案

2019-05-10  本文已影响0人  leap_

关于适配的核心概念:

开发者在xml中用到的都是dp,而不用px,因为最后界面在展示的时候都会转化为px出现在屏幕上,如果你将一个view的宽设为30px,在横屏分辨率为300px的手机上占屏幕的1/10,在横屏分辨率为480px的手机上这个view占1/16,而如果使用dp来做单位,dp会根据手机屏幕的dpi自动做调整,转换为不同大小的px,同样大小的dp,大屏幕上大px,小屏幕上小px。

转换关系:

思路

如果看完思路还是不会的话,那就直接复制代码拿去用吧

代码实现

工具类

 class ScreenAdaptUtil {
     companion object {
         fun setCustomDensity(activity:Activity,application: Application){
             val applicationMetrics = application.resources.displayMetrics
             var targetDensity:Float = (applicationMetrics.widthPixels/360).toFloat()
             var targetDensityDpi = 160*targetDensity

             applicationMetrics.density = targetDensity
             applicationMetrics.scaledDensity = targetDensity
             applicationMetrics.densityDpi = targetDensityDpi.toInt()

             val activityMetrics = activity.resources.displayMetrics
             activityMetrics.density = targetDensity
             activityMetrics.scaledDensity = targetDensity
             activityMetrics.densityDpi = targetDensityDpi.toInt()
         }
     }
}

在activity中应用

 ScreenAdaptUtil.setCustomDensity(this,application)
上一篇 下一篇

猜你喜欢

热点阅读