【发布时间】:2011-01-25 09:46:43
【问题描述】:
我们正在尝试在 Android 2.3 中模拟具有 320 dpi 新密度的设备 - 比如爱可视101, 而且我们似乎无法定义具有如此密度的模拟器, 即使在下载了最新的 2.3 sdk 之后。
我真的很感激关于这个的一些想法:)
非常感谢!
【问题讨论】:
我们正在尝试在 Android 2.3 中模拟具有 320 dpi 新密度的设备 - 比如爱可视101, 而且我们似乎无法定义具有如此密度的模拟器, 即使在下载了最新的 2.3 sdk 之后。
我真的很感激关于这个的一些想法:)
非常感谢!
【问题讨论】:
这很简单。
在avd配置文件中修改hw.lcd.density=320属性:
/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。
【讨论】:
config.ini 修复了这个问题,现在我的模拟器与我正在开发的平板电脑完全匹配。
在 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 版本,点击Skin 部分中的Resolution 选项并设置您需要的分辨率.在Hardware 部分中,将默认选项ABstracted LCD Density 编辑为您想要的值,然后点击Create AVD 按钮。
当您在 AVD 管理器中点击 Start 按钮时,您会看到一个弹出窗口,您可以在其中选择 Scale display to real size。在那里你必须设置设备的真实屏幕尺寸和你的显示器 dpi。您可以点击该输入字段右侧的问号,让计算器根据您的显示器尺寸为您计算。
【讨论】:
据我了解,Android 对屏幕尺寸和密度进行了分类,因此我认为它将 240dpi 与 320dpi 视为相同,即它是高密度的。还有一个下一个选项是超高密度。我在 Android 开发人员参考中找到了此信息,请参阅 http://developer.android.com/guide/topics/fundamentals.html 和底部称为声明应用程序要求的部分。我可能完全错了,但我认为值得大喊。
【讨论】: