Как создать четкое фоновое изображение для виджета Android 1x1?

Я создаю виджет 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"
/>

Любая помощь будет принята с благодарностью.


person Ben    schedule 20.12.2010    source источник


Ответы (1)


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

Nexus One имеет DPI где-то около 250, что ставит его в класс hdpi. Использование формулы Google (количество ячеек * 74) - 2 для расчета dp для вашего виджета 1x1 сделает размеры виджета 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

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

person Error 454    schedule 29.12.2010
comment
Спасибо за объяснение. По какой-то причине документация Google мне просто не понравилась... Я взял ваши уравнения и сделал быстрое веб-приложение/калькулятор для удобного повторного использования: android.npike.net/widgetcalculator - person NPike; 22.03.2011