Как создать четкое фоновое изображение для виджета Android 1x1?
Я создаю виджет 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
Возможно, вам захочется взглянуть на документ Поддержка нескольких экранов. В основном, что происходит здесь, так это то, что экраны на устройствах 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
Используйте эти формулы для создания ваших активов, и вы должны получить четкие изображения.