我们正试图在Android 2.3中模拟新密度为320 dpi的设备 - 比如Archos 101, 我们似乎无法定义具有这种密度的仿真器, 即使在下载了最新的2.3 sdk之后。
我真的很感激关于这一点的一些想法:)
非常感谢!
答案 0 :(得分:28)
这很简单。
修改avd配置文件中的属性hw.lcd.density=320
:
/Users/yourUserName/.android/avd/CustomDevice_API_19.avd/config.ini
,然后重启您的虚拟设备。我已经测试了它,它对我很有用!
<强> WARNNING:强>
确保设置正确的密度,否则您将收到错误:qemu: available lcd densities are: 120, 160, 213, 240, 280, 320, 360, 400, 420, 480, 560, 640
BTW我的Android SDK工具版本是25.2.5。
答案 1 :(得分:6)
在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();
}
答案 2 :(得分:3)
您始终可以为虚拟设备定义自定义密度和分辨率。
如果您使用的是Eclipse,请转到Window - Android SDK and AVD Manager
,点击New
按钮,输入名称并选择SDK版本,点击Resolution
中的Skin
选项部分并设置您需要的分辨率。在Hardware
部分中,将默认选项ABstracted LCD Density
修改为所需的值,然后点击Create AVD
按钮。
当您点击AVD管理器中的Start
按钮时,您会看到一个弹出窗口,您可以在其中选择Scale display to real size
。在那里你必须设置真正的屏幕尺寸和你的显示器dpi。您可以点击该输入字段右侧的问号,让计算器根据您的显示器大小为您计算。
答案 3 :(得分:2)
根据我的理解,Android会对屏幕尺寸和密度进行分类,因此我认为它将240dpi视为320dpi,即高密度。还有一个额外的高密度选项。我在Android开发人员参考中找到了这些信息,请参阅http://developer.android.com/guide/topics/fundamentals.html和底部的部分,称为声明应用程序要求。我可能完全错了,但认为值得大喊。