我们在android 开发中总会遇到屏幕适配这种问题,对于一个初学者来说 这还在真是一个比价头疼的问题,
此前看到网上好多都是建议在res下新建多套布局。
1、选用主要分辨率来适配:480X800,720X1280,1080X1920
2、各个分辨率单独适配,res,dimens里设置各个对应的px,再统一调用,有系统筛选。
3、用weight和match等,少用dp在位置布局里
接下来先给大家简单的介绍下dp与px的适配原理
px与dp适配的原理
-
px适配原理:
根据设备屏幕的分辨率各自写一套dimens.xml文件,然后根据一个基准分辨率(例如720x1080),将宽度分成720份,取值为1px——720px,将高度分成1080份,取值为1px——1080px。生成各自dimens.xml文件对应的值。 -
dp适配原理:
dp适配原理与px适配一样,区别就在于px适配是根据屏幕分辨率,即拿px值等比例缩放,而dp适配是拿dp值来等比缩放而已。
问题:既然原理都一样,都需要多套dimens.xml文件,为什么说dp适配就比px适配好呢?
1.因为px适配是根据屏幕分辨率的,Android设备分辨率一大堆,而且还要考虑虚拟键盘。而dp适配无论手机屏幕的像素多少,密度比值多少,80%的手机的最小宽度dp值(widthPixels / density)都为360dp,这样就大大减少了dimens.xml文件。
2.px适配会根据设备的分辨率去找对应的dimens.xml文件(如下图,