Android,图片和dpi

时间:2010-11-22 00:03:42

标签: android resolution dpi

我在Android模拟器中使用WVGA800皮肤,因此密度(hw.lcd.density)为240.我必须在活动视图的底部放置4个图像按钮(每英寸72像素)。由于分辨率是480X800,我认为图像的宽度必须是120像素。问题是当应用程序启动时,3个按钮占据所有宽度,没有第4个按钮的位置......然后我在Fireworks中创建了按钮图像,分辨率为240像素/英寸,宽度为120像素,但问题仍然存在。有人可以解释如何制作正确的drawable(尺寸和dpi),以便它们可以在Android上以像素为单位显示吗?

3 个答案:

答案 0 :(得分:5)

如果您将图片放在res/drawable中,Android会假设它们是160dpi,并根据不同的分辨率对其进行相应缩放。

您可以选择将按钮图像放入res/drawable-hdpi信号,表示它们的密度为240dpi左右,或者res/drawable-nodpi,以使它们永远不会缩放,无论当前的屏幕密度如何。

您仍然在布局中将它们引用为@drawable/whatever,引擎会自动选择最佳匹配。

答案 1 :(得分:1)

完全忽略图像DPI。这是无关紧要的,你需要知道的是像素大小。我实际建议的是创建一个NinePatch图像用作按钮背景。实际上,您需要将一些放入StateListDrawable,因为这是定义不同焦点状态的方式(例如,按下,聚焦)。获得NinePatch后,只需创建一个LinearLayout:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    >
    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/my_nine_patch"
        android:text="button 1"
        android:layout_weight="1"
     />
    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/my_nine_patch"
        android:text="button 2"
        android:layout_weight="1"
     />
    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/my_nine_patch"
        android:text="button 3"
        android:layout_weight="1"
     />
    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/my_nine_patch"
        android:text="button 4"
        android:layout_weight="1"
     />
</LinearLayout>

将所有按钮设置为fill_parent并赋予它们相同的重量。它们将伸展以均匀地适合父母,并且您不必担心指定恒定像素或倾角尺寸。此外,无论分辨率如何,它都会均匀地分割到任何Android设备上。

答案 2 :(得分:0)

宽度实际上是320像素,因此对于整个屏幕上的4个按钮,每个按钮设置为80dip。然后,Android会将与密度无关的像素调整为480像素的正确屏幕尺寸。