Android Studio 创建指dpi的模拟器
一些情况下,我们手机或者pad的dpi不是规范的dpi,在开发的时候预览界面的尺寸会和我们的实体机不一致,google提供的也没有适合的,因此我们需要自己根据实体机的真实数值创建模拟器,然后在预览界面选择自己创建的模拟器就可以了。
- 先获取自己手机或者平板的屏幕大小和屏幕密度:屏幕密度 有 xlarge large normal small
//Determine screen size
if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {
Log.d("Screen","Large screen");
}
else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {
Log.d("Screen","Normal sized screen");
}
else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {
Log.d("Screen","Small sized screen");
}
else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE){
Log.d("Screen","XLarge sized screen");
}
else {
Log.d("Screen","Screen size is neither large, normal or small");
}
获取屏幕密度的代码:
//Determine density
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int density = metrics.densityDpi;
if (density == DisplayMetrics.DENSITY_HIGH) {
Log.d("Density","DENSITY_HIGH... Density is" + String.valueOf(density));
}
else if (density == DisplayMetrics.DENSITY_MEDIUM) {
Log.d("Density","DENSITY_MEDIUM... Density is" + String.valueOf(density));
}
else if (density == DisplayMetrics.DENSITY_LOW) {
Log.d("Density","DENSITY_LOW... Density is" + String.valueOf(density));
}
else {
Log.d("Density","Density is neither HIGH, MEDIUM OR LOW. Density is" + String.valueOf(density));
}
- 然后在Android Studio 中创建指定尺寸的模拟器,比如我的平板是1920*1200的分辨率,8.0英寸,280dpi:
第一步创建新的 Hardware Profile
- finish 之后得到一个新的 Hardware,然后将其导出 Export
- 找到导出的 xml 文件,修改其中的dpi:
修改前:
修改后:
- 将之前创建的 HardWare 先删除:
- 将修改完的xml文件导入:
- 导入之后会发现 Hardware 的 density 变成了自己所需要的 dpi 了,我的是280dpi:
- 点击 Next 一步步,创建好模拟器后,打开自己的 layout.xml,查看是否完成:
这就大功告成了!!!