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