2013-05-09 138 views
0

我是相当有经验的Android开发人员,但我有非常容易的问题。 如何在Android中正确制作全屏图像? 目前,我正在使用一个质量更好的图像并将其用于所有设备。这工作相当不错,但在非常小的设备上降低播放效果看起来很糟糕,并且可能会导致OOM错误。Android全屏图像

有关于它的线程数,例如:

但在我看来,答案是不正确的。 大家都说我应该使用ldpi,mdpi,hdpi,xhdpi文件夹,并且我同意这适用于小图像(按钮,开关),九个补丁,您希望在每个屏幕上具有相同物理大小的东西。 当涉及到全屏时,这是错误的。我的HTC Desire(480x800)是hdpi,我的三星Galaxy Tab 2(800x1280)是mdpi。使用上述建议会导致Galaxy Tab 2使用比HTC Desire更小的图像,这是非常错误的。

有没有简单的方法来解决这个全屏图像问题?

在此先感谢

回答

1

你应该使用小正常大XLARGE预选赛。 您甚至可以混合使用多个限定符,例如:drawable-small-hdpi或drawable-small-mdpi并且拥有正确的图像。

+1

我真的在想它,但那意味着我必须复制图像。例如,相同的中间分辨率图像将处于大型mdpi和普通型hdpi。这会导致APK增长。这个APK将由一些旧的,小的HTC野火与小应用程序的免费内存下载。这是否意味着我还必须为不同的设备制作不同的apks以使其完美? – Mark 2013-05-09 10:57:57

+0

如果你想要它是完美的,是的。但我几乎不认为这是必要的。看看这个图表:http://developer.android.com/about/dashboards/index.html#Screens 你会看到,大mdpi是2.9%的用户,而正常的hdpi是37%,所以避免一些大小密度组合并不常见。 – 2013-05-09 11:23:50

+0

我正在考虑更多关于小/ ldpi(10%)的不同apk以便这些小设备不会下载和安装不需要 - 高分辨率图像 – Mark 2013-05-09 11:41:09

1

一种选择是自己(Get screen dimensions in pixels)确定的屏幕尺寸,然后从中挑选您所使用的图像:

Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 
int width = size.x; 
int height = size.y; 

// Stuff 
if  (width < /*some number*/)  putLowResFullScreenImage(); 
else if (width < /* a bigger number*/) putMidResFullScreenImage(); 
else         putHighResFullScreenImage(); 
+0

我知道我可以制作一个代码解决方案,但是在有更多图像的情况下,这会开始变得很痛苦:)但是现在当我认为这可能比正常的hdpi更好时,大型mdpi文件夹,因为我不会不必复制资源 - 在不同名称的no-dpi文件夹中只有很少的资源。 – Mark 2013-05-09 11:04:23

+0

我认为我已阅读(但我无法再找到它),我们可以期待未来的Android版本解决此问题。如果我找到链接,我会将其添加到答案中。 – 2013-05-09 11:13:21