如何为1x1 Android小部件创建清晰的背景图像?

时间:2010-12-20 12:23:39

标签: android graphics android-widget widget photoshop

我正在创建一个1x1小部件,无论我尝试什么,我都无法让背景图像看起来漂亮和清晰。我已经阅读了我能找到的任何资源,但我仍然无法获胜。

我正在为HTC Desire / Nexus 1设计,并希望有人在Photoshop中创建背景时告诉我,使用什么dpi /高度/宽度(目前使用72/100/80)。一旦我在测试设备上看起来很好看,我会担心其他设备的分辨率。

此外,如果我需要放入@ layout / main.xml和Widget_Provider.xml文件中有任何特殊内容。我根本找不到1x1小工具的任何示例,因此请注意以下内容:

main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget"
android:layout_width="fill_parent"
android:orientation="vertical"
android:background="@drawable/background" 
android:layout_gravity="center" 
android:layout_height="wrap_content">

Widget_Provider.xml

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="72dip"
android:minHeight="72dip"
android:updatePeriodMillis="6000000"
android:initialLayout="@layout/main"
/>

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:18)

您可能需要查看Google的Supporting Multiple Screen Sizes文档。基本上这里发生的是Android设备上的屏幕具有不同的像素密度。它们分为低,中,高(ldpi,mdpi,hdpi)。如果一个资产不够大,无法容纳更大的密度屏幕,那么它的大小就会被放大 - 这可能就是你发生的事情了。

Nexus One的DPI大约在250左右,这使它进入了hdpi类。使用谷歌公式(单元格数* 74) - 2计算1x1小部件的dp将使小部件尺寸为72x72 dp。

从dp到像素的转换是:

pixels = dp * (density / 160)

因此,对于72x72 dp图像,基于密度的相应图像大小将为:

ldpi  (120 DPI) = 72 * (120 / 160) == 54 x 54 pixels
mdpi  (160 DPI) = 72 * (160 / 160) == 72 x 72 pixels
hdpi  (240 DPI) = 72 * (240 / 160) == 108 x 108 pixels
xhdpi (320 DPI) = 72 * (320 / 160) == 144 x 144 pixels

使用这些公式来创建资产,您应该获得清晰的图像。