android中的真实背景图片大小(带状态栏)

时间:2010-12-03 16:00:45

标签: android background statusbar

我想在我的应用程序中使用高细节图像作为backrgound,因为这个问题,我的设计师遇到了问题:-D

到目前为止,根据最常见设备的屏幕尺寸,我们有三种图像尺寸(每种密度一种),我们知道:

  • low:240 x 320(e。HTC Tattoo)
  • mid:320 x 480(例如HTC Magic)
  • 高:480 x 800(例如Nexus One)

问题在于,当我将图像设置为背景时,它会被调整大小,我可以在其上看到几条水平的“鬼”线。

所以我们决定用“高度 - 负 - 状态栏的高度”调整图像大小(仅在高密度的情况下,就像测试一样),最终得到480 + 752像素(根据http://developer.android.com/guide/practices/ui_guidelines/icon_design.html,状态栏的高度为48px)

但它仍然显示那些“鬼”线,所以我们认为它正在重新调整大小......

有人可以帮助我吗?我只想要一个正常的背景,没有调整大小,但我不知道真正的尺寸......

谢谢:-D

3 个答案:

答案 0 :(得分:13)

你正在让自己陷入持续的痛苦状态。你根本无法根据精确的分辨率进行设计;设备的变化太大,通过这样做,当你遇到新设备时,你会不断地被打耳光。 Android有很多处理这种屏幕的设施,例如9-patches,密度管理,布局管理器等。如果你利用这些,你会很高兴;如果你不这样做,你会一直在发誓。

但如果你想发誓,我无法阻止你。请不要对网络抱怨Android碎片。 :)

至于您的图像由于状态栏而缩放 - 是的状态栏会从屏幕中取出一块。未定义多少,因此设备之间可能略有不同。由Activity.getWindow()。setBackgroundDrawable()设置的窗口背景将延伸到状态栏(和IME或其他可变系统修饰)之后,因此至少使用它将减少变化。也就是说,实际的显示空间可能会因物理屏幕尺寸而出于其他原因而被划分出来;故意没有明确定义应用程序在屏幕上的哪个部分。

答案 1 :(得分:2)

不要忘记Droid A855(480x854分辨率),Galaxy Tab(1024x600)或其他许多分辨率。你最好的选择,如果你需要它像素完美,就是使图像的大小与其类别中最大的分辨率相同(即普通大小的hdpi屏幕为480x854),只需将其设置为ImageView,并使用scaleType of centerCrop。第二个想法,一个ImageView可以工作(如果使用android:background属性),但是没有必要。您只需将NinePatch背景设置为根布局的背景属性(例如RelativeLayout,LinearLayout)。如果NinePatch格式正确,背景将居中,框架将拉伸以适应剩余空间而不会失真。在Nexus One上,您将切断图像的顶部和底部27个像素,但不会调整大小。

一个更好的建议,取决于它的图像类型,将成为NinePatch的一部分。例如,如果外边缘上有一个小边框或框架,则使背景的主要部分变小(430 x 750?),并通过NinePatch使框架的外边缘延伸。这样,即使有一个分辨率略有不同的新设备,它仍然可以适当缩放,不需要任何拉伸。

答案 2 :(得分:0)

在使用以下方法时,我也在寻找状态栏后面的背景解决方案:http://developer.android.com/resources/articles/window-bg-speed.html 我现在刚刚在bg图形的顶部使用了一个任意空格来补偿状态栏。

我也注意到了条带,我不认为这是因为它正在重新调整大小。本文修复了我的Nexus S上的问题: http://stuffthathappens.com/blog/2010/06/04/android-color-banding/(也引用了上面链接的developer.android文章)