我试图在QVGA设置下测试我的应用程序,但95%的时间我运行我创建的QVGA模拟器时,它会加载与HVGA相关的资源。我在我的应用程序中包含自定义位图,因此能够验证外观对我来说至关重要。
为了查看密度被视为什么,我添加了以下代码并在Toast中显示结果:
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
// will either be DENSITY_LOW, DENSITY_MEDIUM or DENSITY_HIGH
int dpiClassification = dm.densityDpi;
// these will return the actual dpi horizontally and vertically
float xDpi = dm.xdpi;
float yDpi = dm.ydpi;
Output was -> DensityClass = 160 - xDpi = 164.75 - yDpi = 165.88
也许我只是误会,但对于初学者来说,密度等级不应该是120的值吗?
我在AVD管理器中创建了一个QVGA仿真器,其设置如下:
Target: 1.6 level 4
Hardware Property: Abstracted LCD Density = 120 (verified in config.ini file)
在我的Manifest文件中,我添加了以下内容:
<supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:anyDensity="true"/>
在我的res文件夹中,我有:
drawable
drawable-hdpi
drawable-ldpi
drawable-mdpi
有人能告诉我为什么模拟器没有加载低密度的drawables?这个QVGA仿真器中的drawable与HVGA仿真器中的drawable一样大小(不是我想要的),是的,我在将它们添加到LDPI文件夹之前缩小了图片(非常小)。由于没有明显的原因,偶尔模拟器实际上会正确加载并且所有内容都正确显示,但同样,这种情况只发生在大约5%的时间,没有明显的理由。
答案 0 :(得分:1)
我一直在努力恢复中等密度的应用程序,无论我现在使用什么类型的模拟器。一旦我发现了support-screens / anyDensity声明,就解决了我的问题。我注意到文档在第4级之后说错了,你在清单文件中不需要该语句。但是,我使用2.2,所以这是错误的。
总而言之,它可能与您的问题有关。
我真正想指出的是this webpage.不要在QVGA上浪费太多时间,你可以在其他地方花更多的时间在你身上。