Как создать четкое фоновое изображение для виджета Android 1x1? - PullRequest
13 голосов
/ 20 декабря 2010

Я создаю виджет 1x1, и независимо от того, что я пытаюсь, я просто не могу сделать фоновое изображение красивым и четким.Я прочитал о любом ресурсе, который смог найти, но все равно не могу выиграть.

Я занимаюсь проектированием для HTC Desire / Nexus 1 и хотел бы, чтобы кто-нибудь сказал мне, когда создаю фон вPhotoshop, какие dpi / height / width использовать (в настоящее время используется 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 Ответ

18 голосов
/ 29 декабря 2010

Возможно, вы захотите взглянуть на документ Google , поддерживающий несколько экранов . В основном здесь происходит то, что экраны на устройствах Android имеют разную плотность пикселей. Они подразделяются на низкие, средние, высокие (ldpi, mdpi, hdpi). Если ресурс недостаточно велик для экрана с большей плотностью, он увеличивается до нужного размера - это, вероятно, то, что происходит с вами.

Nexus One имеет DPI около 250, что переводит его в класс hdpi. Используя формулу Google (количество ячеек * 74) - 2, чтобы рассчитать dp для вашего виджета 1x1, получим размеры виджета 72x72 дп.

Преобразование из 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

Используйте эти формулы для создания своих активов, и вы должны получить четкие изображения.

...