我在 Android 模拟器中使用 WVGA800 皮肤,因此密度(hw.lcd.density)为 240。我必须在活动视图的底部放置 4 个图像按钮(每英寸 72 像素)。由于分辨率为 480X800,我推测图像的宽度必须为 120 像素。问题是当应用程序启动时,3 个按钮占据了所有宽度,并且没有第 4 个按钮的位置......然后我在 Fireworks 中创建了分辨率为每英寸 240 像素和宽度为 120 像素的按钮图像,但问题仍然存在。有人可以解释如何制作正确的可绘制对象(大小和 dpi),以便它们可以在 Android 上以像素为单位显示吗?
9530 次
3 回答
5
如果您将图像放入 中res/drawable
,Android 会假定它们适用于 160dpi 并相应地缩放它们以适应不同的分辨率。
您的选择是将按钮图像放入res/drawable-hdpi
信号中,表明它们适用于 240dpi 左右的密度,或者res/drawable-nodpi
使它们永远不会缩放,无论当前屏幕密度如何。
您仍然像在布局中一样引用它们@drawable/whatever
,引擎会自动选择最佳匹配。
于 2011-01-25T14:44:42.737 回答
1
完全忽略图像 DPI。这无关紧要,您只需要知道像素大小。我实际上建议的是创建一个NinePatch图像作为您的按钮背景。您实际上需要将一些放入StateListDrawable中,因为这是定义不同焦点状态的方式(例如 Pressed、Focused)。一旦你有了 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 设备上。
于 2010-11-22T01:51:38.410 回答
0
宽度实际上是 320 像素,因此整个屏幕上的 4 个按钮设置为 80dip。然后,Android 会将您的密度无关像素调整为 480 像素的适当屏幕尺寸。
于 2010-11-22T01:08:26.477 回答