我对Android中的多屏幕支持感到困惑。我在android开发者论坛上浏览了多屏支持的文章。我的问题是,如果应用程序有15-20个图像需要在设备屏幕上全屏显示。现在,如果我想支持所有屏幕,我应该放入三个可绘制的文件夹ldpi,mdpi&华电国际。在这里我做了什么
在ldpi中 - 240x320分辨率的图像 mdpi - 320x480 reolution的图像 hdpi - 720x800分辨率的图像。 (我对所有三种分辨率使用相同的密度) 我认为这不是正确的方法。
我到底应该做什么?将不同分辨率的图像放入drawable-ldpi,drawable-mdpi&如上所述drawable-hdpi或者我应该使用不同密度的图像120 dpi,160 dpi& 240 dpi。如果我使用不同密度的图像应该是它们的分辨率(120 dpi分辨率应为240x320,160 dpi分辨率320x480和240 dpi分辨率为480x800)。或者如果我使用不同的dpi图像,它们的分辨率对于所有密度应该相同(320x480)。
此致 Anuj
答案 0 :(得分:3)
Anujprashar,你的问题没有简单的答案。不同的密度规格(hdpi,mdpi,ldpi)仅指密度的平均范围(即hdpi约为240ppi)。但是,hdpi可能涉及大量不同的分辨率(例如,摩托罗拉Droid是hdpi,分辨率480x854; Nexus One是hdpi,分辨率480x800)。因此,没有固定大小的图像可以用来完全适合所有设备全屏。
我的建议是,如果可能的话,要么避免使用需要图像精确尺寸的布局,要么提供大于该目标密度(例如500x900)的大部分分辨率的图像可能被裁掉的额外边距(如果你熟悉这种印刷概念,可以把它想象成流血)。
或者更简单地说,如果您不要求它们以原始像素分辨率1:1显示,您只需将ImageView的scaleType设置为centerCrop
,其宽度和高度设置为{{1 }}。这将扩展(或缩小)图像以适合容器,如果宽高比不正确,则裁剪像素。
为每个屏幕分辨率设置不同的图像(以及onCreate()中的方法来检索屏幕尺寸并根据您返回的值设置图像的方法更难(效率更低)。
答案 1 :(得分:1)
理想情况下,您应该为不同的屏幕设置不同密度的绘图。您可以使用为图像提及的尺寸。但您也可以只提供高dpi图像,它们将缩小尺寸以匹配用户的设备屏幕密度。
此外,如果您想要全屏显示图像,您可能必须为横向和纵向以及长屏和不长屏提供这些图像的不同版本。
最后,您可以使用ImageView
窗口小部件在不同设备上进行正确的图像缩放。