2010-12-20 11 views
13

Ich erstelle ein 1x1-Widget, und egal, was ich versuche, ich kann einfach nicht das Hintergrundbild schön und frisch aussehen. Ich habe so ziemlich jede Ressource gelesen, die ich finden kann, aber ich kann immer noch nicht gewinnen.Wie erstellt man ein klares Hintergrundbild für 1x1 Android Widget?

Ich entwerfe für das HTC Desire/Nexus 1, und würde jemanden lieben, mir zu erzählen, wenn man den Hintergrund in Photoshop erstellt, welche dpi/Höhe/Breite zu verwenden (zurzeit 72/100/80 verwendend). Ich werde mich um andere Geräteauflösungen kümmern, sobald ich es zuerst auf meinem Testgerät sehen kann.

Wenn es etwas Besonderes gibt, muss ich auch die Dateien @ layout/main.xml und Widget_Provider.xml hinzufügen. Ich kann einfach keine Beispiele für 1x1 Geräte und Accessoires, so haben die folgenden:

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" 
/> 

Jede Hilfe wäre sehr geschätzt.

Antwort

18

Sie können sich das Dokument von Google ansehen. Grundsätzlich passiert hier, dass die Bildschirme auf Android-Geräten unterschiedliche Pixeldichten haben. Diese werden als niedrig, mittel, hoch (ldpi, mdpi, hdpi) kategorisiert. Wenn ein Asset für einen Bildschirm mit größerer Bildschirmdichte nicht groß genug ist, wird es auf die richtige Größe hochgeblasen - das ist wahrscheinlich das, was Ihnen passiert.

Das Nexus One hat ein DPI irgendwo um 250, was es in die hdpi Klasse bringt. Wenn Sie die Google-Formel (Anzahl der Zellen * 74) - 2 verwenden, um dp für Ihr 1x1-Widget zu berechnen, würden die Widget-Abmessungen 72x72 dpi betragen.

Die Umwandlung von dp Pixel ist:

pixels = dp * (density/160) 

Also für ein 72x72 dp Bild, die entsprechenden Bildgrößen basierend auf Dichte wären:

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 

diese Formeln verwenden, Ihr Vermögen zu schaffen und du solltest gestochen scharfe Bilder bekommen.

+3

Danke für die Erklärung. Aus irgendeinem Grund versank die Google-Dokumentation einfach nicht für mich .... Ich nahm Ihre Gleichungen und machte einen schnellen Webapp/Rechner für die einfache Wiederverwendung: http://android.npike.net/widgetcalculator/ – NPike

Verwandte Themen