12

Hallo,Android Widget Bitmap Tailles

Je vous écris un widget, mais je ne suis pas sûr de ce bitmap taille à utiliser comme arrière-plan pour chaque résolution d'écran/densité.

Selon le Android Developer App Widgets tutoriel:

To find your minimum width and height in density-independent pixels (dp), use this formula: 
(number of cells * 74) - 2 
Following this formula, you should use 72 dp for a height of one cell, 294 dp and for a width of four cells 

Donc, si mon widget est 72dp x 294dp, quelle bitmaps taille dois-je besoin pour mon LDPI, mdpi et dessinables hdpi?

De plus, aurai-je besoin de paramètres de supports-écrans particuliers dans mon manifeste?

TIA,

-Frink

Mise à jour: J'ai fait quelques motifs de damiers en différentes tailles et couleurs pour chaque dossier drawable- et les ai essayées. Est-ce que cette densité est un peu un hareng?

Je viens de faire une capture d'écran de mon émulateur fonctionnant en HVGA, densité moyenne, 320x480. La taille prise par mon widget est de 320x100, donc je crée un bitmap 320x100 dans le dossier mdpi comme arrière-plan pour mon widget, il semble parfait à la fois sur mon émulateur et LG GT540.

Et pour un émulateur fonctionnant comme WVGA854, haute densité, 480x854. La taille de mon widget est 480x150. Créer un arrière-plan de cette taille et le placer dans le dossier hdpi s'affiche correctement sur cet émulateur. Je n'ai pas de matériel pour tester cela sur tho :-(

Update2: Je pense que je peux expliquer mon problème mieux maintenant :-)

Si j'ai trois appareils:

Device1, resolution 320x480, density ldpi 
Device2, resolution 320x480, density mdpi 
Device3, resolution 400x854, density mdpi 

Le physique la taille des écrans serait probablement tous différents, mais je ne pense pas que les tailles réelles importent

J'ai calculé que Device1 et Device2 auront besoin d'un fond de 320x100, alors que Device3 aura besoin de 400x150 Alors que s Le fond d'ize va dans le dossier mdpi pour afficher correctement sur Device2 et Device3?

+0

Je suis aussi intéressé par la réponse. Mon widget est une cellule unique, et les tailles d'image que j'ai utilisées sont des carrés de côté 72px, 100px et 150px. Ce ne sont que des suppositions, donc je serais très intéressé de connaître les chiffres "officiels". –

+0

En réponse à votre mise à jour, il semble que ça fonctionne, non? Ou y a-t-il un problème? En outre, lorsque vous lancez votre émulateur, il existe un paramètre (ou il peut être dans les paramètres de l'émulateur) pour mettre à l'échelle l'émulateur à la taille «réelle», ce qui peut vous aider à tester. – Computerish

+0

Computerish - s'il vous plaît voir Update2! Je regarde mes émulateurs en taille réelle, ta – FrinkTheBrave

Répondre

9

Vous avez juste besoin de convertir 72dp x 294dp en tailles de pixels réels pour ldpi, mdpi, et hdpi.Ce processus est expliqué ici:

http://developer.android.com/guide/practices/screens_support.html

La formule est pixels = dps * (density/160), donc dans votre cas, 72 dp x 294 dp serait égale:

  • LDPI (120): 54 x 221 pixels
  • mdpi (160): 72 x 294 pixels
  • hdpi (240): 108 x 441 pixels
  • xhdpi (320): 144 x 588 pixels

Mise à jour en réponse à votre deuxième mise à jour: Les ressources basées sur la densité visent à s'assurer que les graphiques ont (approximativement) la même taille réelle sur tous les appareils. Dans votre cas, cependant, vous ne vous souciez pas de la taille réelle, vous vous souciez de l'arrière-plan qui remplit tout l'espace qu'il est censé remplir pour le widget. Vous devriez être capable de gérer ce problème pour la plupart des arrière-plans en créant une image Nine Patch. Le Nine Patch s'adapte à la taille requise.

http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch

http://developer.android.com/guide/developing/tools/draw9patch.html

+0

A bientôt, je vais essayer quand j'aurai une chance – FrinkTheBrave

+0

@FrinkTheBrave s'il vous plaît laissez-nous savoir comment vous obtenez –

+0

Computerish, il me semble que les dossiers drawable devraient être liés à la taille de l'écran, plutôt que de la densité? – FrinkTheBrave