我正在创建一个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"
/>
非常感谢任何帮助。
答案 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
使用这些公式来创建资产,您应该获得清晰的图像。