我们正在尝试在 Android 2.3 中模拟具有 320 dpi 新密度的设备 - 例如 Archos 101,我们似乎无法定义具有这种密度的模拟器,即使在下载最新的 2.3 sdk 之后也是如此。
我真的很感激关于这个的一些想法:)
非常感谢!
这很简单。
修改hw.lcd.density=320
avd config file:
中的属性/Users/yourUserName/.android/avd/CustomDevice_API_19.avd/config.ini
,然后重新启动您的虚拟设备。我已经测试过了,它对我有用!
警告:
确保您设置了正确的密度,否则您将收到错误:qemu: available lcd densities are: 120, 160, 213, 240, 280, 320, 360, 400, 420, 480, 560, 640
顺便说一句,我的 Android SDK 工具版本是 25.2.5。
在 AVD 管理器中,如果您选择内置皮肤,则抽象 LCD 密度将被忽略,它将按照此处所述设置密度:
模拟器皮肤(来自http://developer.android.com/tools/revisions/platforms.html)
可下载的平台包括以下模拟器皮肤:
如果您想设置自己的抽象 LCD 密度,您需要通过单击分辨率单选按钮手动定义自己的分辨率。
以下是一些可用于测试的代码:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int density = metrics.densityDpi;
if (density == DisplayMetrics.DENSITY_HIGH) {
Toast.makeText(this, "DENSITY_HIGH... Density is " + String.valueOf(density), Toast.LENGTH_LONG).show();
}
else if (density == DisplayMetrics.DENSITY_MEDIUM) {
Toast.makeText(this, "DENSITY_MEDIUM... Density is " + String.valueOf(density), Toast.LENGTH_LONG).show();
}
else if (density == DisplayMetrics.DENSITY_LOW) {
Toast.makeText(this, "DENSITY_LOW... Density is " + String.valueOf(density), Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(this, "Density is neither HIGH, MEDIUM OR LOW. Density is " + String.valueOf(density), Toast.LENGTH_LONG).show();
}
您始终可以为虚拟设备定义自定义密度和分辨率。
如果您使用的是 Eclipse,请Window - Android SDK and AVD Manager
点击New
按钮,输入名称并选择 SDK 版本,点击该部分Resolution
中的选项Skin
并设置您需要的分辨率。在该Hardware
部分中,将默认选项编辑ABstracted LCD Density
为您想要的值,然后点击Create AVD
按钮。
当您点击Start
AVD 管理器中的按钮时,您会看到一个弹出窗口,您可以在其中选择Scale display to real size
. 在那里你必须设置设备的真实屏幕尺寸和你的显示器 dpi。您可以点击该输入字段右侧的问号,让计算器根据您的显示器尺寸为您计算。
据我了解,Android 对屏幕尺寸和密度进行了分类,因此我认为它将 240dpi 视为与 320dpi 相同,即它是高密度的。还有一个下一个选项是超高密度。我在 Android 开发人员参考中找到了此信息,请参阅http://developer.android.com/guide/topics/fundamentals.html和底部称为声明应用程序要求的部分。我可能完全错了,但认为值得大喊。