Comment faire ImageButton dans Android à l'échelle automatiquement en fonction de la densité de l'écran?
-
20-09-2019 - |
Question
J'ai une image mettre sur un ImageButton
, ce qui semble bon sur un mdpi ( moyen ppp ) écran. Cependant, lorsque le dispositif a une hdpi ( haute ppp ) écran, l'image est encore pixel par pixel précis, qui ont l'air petit sur l'écran de l'appareil.
Comment puis-je faire de telle sorte que l'image (et par conséquent le ImageButton
) mis à l'échelle en fonction des pixels indépendants de la densité ( dp ou dip ) au lieu de pixels?
La solution
Comme mentionné Ponkin, 9-patches sont votre meilleur pari. Combiné avec des qualificatifs de l'annuaire des ressources (drawable-hdpi
, drawable-mdpi
, etc.), vous pouvez faire des actifs qui semblent bonnes à tout densité et la taille.
Un exemple de 9-patches et qualificatifs du répertoire des ressources se trouve dans le Résolutions de plusieurs échantillon SDK Android. Le semi-transparent, noir, fond aux coins arrondis est implémenté comme un 9-patch avec différents PNGs pour LDPI, mdpi et hdpi.
Autres conseils
android:scaleType="fitXY"
D'autres choix sont:
fitStart
fitCenter
fitEnd
center
cenerCrop
centerInside
matrix
Rappelez-vous que je suis paresseux et vraiment utiliser de grandes images PNG dans un dossier brut.
à mon humble avis, vous devriez regarder assez près de NinePatchDrawable . Il y a, en fait, un outil de rel="noreferrer"> qui vous aidera à faire votre icône (images / icônes / whatever ...) redimensionnable selon la taille du récipient. It `s vraiment simple et fonctionne très bien pour mes besoins. Regardez aussi cet article (partie "NinePatchDrawable"), il explique le mécanisme NinePatchDrawable.
Un graphique NinePatchDrawable est une image en mode point extensible, qui Android redimensionnera automatiquement accueillir le contenu de la vue que vous avez placé comme Contexte. Un exemple d'utilisation d'un NinePatch est les arrière-plans utilisés par boutons standard Android - boutons doit s'étirer pour recevoir des chaînes de différentes longueurs. Un drawable NinePatch est une image standard PNG qui comprend un supplément de 1 pixel large bordure. Il doit être enregistré avec l'extension .9.png, et enregistré dans la résolution / drawable / répertoire de votre projet.
Peut-être que vous devez simplement spécifier la taille du bouton en pixels indépendants du périphérique-?
android:layout_width="300dip"
android:layout_height="50dip"