Android中基本适配任意屏幕的方法&px与dp的转换

1、原理

在android中,只要保证 分辨率、屏幕尺寸、dpi 三者相同就可以基本上做到保持与真机一致,
下面提供获取参数的方法

2、获取机型参数的方法

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);

//这里获取高度不包括状态栏,所以获取的高度会有点差别
Log.e("test", "width: " + dm.widthPixels + ",height:" + dm.heightPixels + ",density" + dm.density
+ ",XDpi:" + dm.xdypi + ",Ydpi:" + dm.ydpi + ",dpi" + dm.densityDpi);

3、具体配置不同型号的android的方法

在android中只要一个配置文件就可以生成一个模拟器,而这个配置文件是可以通过任意模拟器导出的,然后再更改这个配置文件中的一些参数,最后再导入即可。

  • 第一步:
    在配置模拟器的界面选择任意一个模拟器,右击选择Export,然后将该配置文件存放到自己的电脑上

  • 如果适配的为平板,建议从平板模拟器中导出配置文件

  • 如果适配的为手机,建议从手机模拟器中导出配置文件
    在这里插入图片描述
    在这里插入图片描述

  • 第二步:
    打开刚才的配置文件,把上面的得到的参数依次修改里面的 分辨率、屏幕尺寸、dpi
    在这里插入图片描述

  • 第三步:
    把刚才修改后的模拟器配置文件导入AndroidStudio 中即可
    在这里插入图片描述

4、关于 px 与 dp 的转换

px 为标准的物理单位
dp 为android中的密度单位,根据不同手机的dpi所显示的大小不同,在android中不能用px

具体转换

1dp = 1 * (dpi / 160)
其中这个比例 (dpi / 160) 可以直接通过getResources().getDisplayMetrics().density获得
【案例】

//为text设置100dp的宽高
int dpiAgrs= getResources().getDisplayMetrics().density;
new ViewGroup.LayoutParams(100 * dpiAgrs,100 * dpiAgrs);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值