Quand les dimens.xml fichier soit utilisé dans Android?
Par exemple, dans une mise en page spécifique, j'ai le code XML suivant:
<GridView
android:id="@+id/gridView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="3dp"
android:columnWidth="48dp"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="spacingWidth" />
Cette grille est spécifique à cette mise en page et je ne pense pas que je vais être en utilisant de toute autre grille de points de vue avec des propriétés similaires. Que de dire que la dimension des valeurs dans le code spécifiques à l'affichage de la grille.
Devrais-je continuer à les déplacer vers un dimens.xml fichier ou il est bien juste les laisser comme ça? Si oui, dois-je placer les valeurs dans la dimens.xml fichier uniquement lorsque cette valeur est utilisée dans plusieurs mises en page?
OriginalL'auteur Ricardo Amaral | 2011-09-22
Vous devez vous connecter pour publier un commentaire.
Je baisse les valeurs d'une dimension dans une
dimens.xml
de ressources généralement pour trois raisons:dimens.xml
"dp" ou "dip" me permet d'obtenir une valeur de l'échelle dans du code Java avecResources.getDimensionPixelSize()
HTH!
dimens.xml
fichier (fournir un exemple si possible)? Raison 3 est très convaincant.plusieurs fichiers dans des répertoires. Par exemple, en mettant un
dimens.xml
dansres/values
pour les valeurs par défaut et un autre dansres/values-ldpi
qui comprend le peu que je veux remplacer par une faible densité de périphériques.Je pensais que c'était uniquement disponible pour les un drawable dossier. Merci pour l'astuce.
Vous êtes les bienvenus. Les qualificatifs sont utilisables (et très utile) sur tous les répertoires de ressources. Si vous regardez à travers le PSBA code, vous verrez qu'ils font un usage intensif de ce eux-mêmes!
avez-vous déjà eu un problème où une forte densité de périphériques références de l'values-ldpi/dimens.xml fichier? J'ai ce problème lors de l'utilisation de la Samsung Galaxy Note - il utilise les dimensions définies dans values-ldpi/dimens.xml plutôt que les dimensions définies dans values-xxhdpi/dimens.xml OU values-hdpi/dimens.xml Toutes les suggestions?
OriginalL'auteur Devunwired
Complémentaire de réponse
@Devunwired listes 3 raisons d'utiliser
dimens.xml
. Voici les détails de la façon de le faire.1. La réutilisation
Si vous définissez certaines
dp
ousp
valeur dansdimens.xml
une seule fois, comme cevous pouvez la réutiliser tout au long de votre application en plusieurs endroits.
Puis, quand vous avez besoin de faire un changement, vous ne devez le faire qu'en un seul endroit.
Notes
dimen
valeur si vraiment ils ne le devraient pas. Si vous devez apporter des modifications à un ensemble de points de vue, mais pas l'autre, alors vous aurez à revenir à chacun individuellement, ce qui est contraire au but.2. Différence De Taille
dp
(densité de pixels indépendants), déjà, prend soins de la différence de densité problème pour tous, mais la plupart des cas mineurs. Donc, à mon avis, la taille de l'écran est un facteur plus important pour l'utilisation dedimens.xml
.Un
8dp
rembourrage peut fière allure sur un téléphone, mais lorsque l'application est exécutée sur une tablette, il semble trop étroit. Vous pouvez résoudre ce problème en faisant deux (ou plus) les différentes versions dedimens.xml
.Droit de la souris sur votre
res
dossier et choisissez Nouveau > Valeur de la ressource de fichier. Ensuite, écrivez dansdimens
et choisissez plus Petite Largeur de l'Écran. Écrire dans 600 pour la largeur (tablette 7”). (Il y a d'autres façons de choisir les tailles. Voir la la documentation et cette réponse pour plus d'.)Ce qui va faire un autre
values
dossier qui sera utilisé pour les appareils dont la plus petite largeur de l'écran est600dp
. Dans l'Android afficher les deuxdimens.xml
fichiers ressembler à ceci.Maintenant, vous pouvez les modifier de façon indépendante.
values/dimens.xml
values-sw600dp/dimens.xml
Lors de l'utilisation de votre
dimen
vous n'avez qu'à définir avec le nom que vous avez utilisé dans les deuxdimens.xml
fichiers.Le système va automatiquement choisir la bonne valeur pour vous en fonction de l'appareil par l'utilisateur.
3. La lecture de code
Parfois, il s'agit d'une douleur de mise à l'échelle par programmation entre
px
etdp
(voir cette réponse pour comment).Si vous avez un fixe
dp
valeur déjà définie dansdimens.xml
comme ceAlors vous pouvez facilement le faire avec
et il sera déjà convertis en pixels pour quelle que soit la densité de l'appareil de l'utilisateur.
Je ne sais pas à propos de la mise en page de prévisualisation. Vous pouvez essayer de poser une nouvelle question à ce sujet. Je dirai que
sw600dp
est plus normative quesw640dp
. C'est la plus petite largeur, de sorte600
comprendra640
et toutes les autres grandes tailles. Aussi, tant que vous êtes obtenir les dimensions correctes lors de l'exécution de l'application dans l'émulateur ou un appareil, je ne pense pas que c'est vraiment important si l'aperçu ne fonctionne pas.merci @Suragch. J'ai posté une nouvelle question here .
OriginalL'auteur Suragch
La
dimens.xml
fichier est utilisé pour garder tous les codée en dur les valeurs de pixels dans un seul endroit.Maintenant, bien que vous ne pouvez pas utiliser plusieurs fois ces valeurs, c'est toujours une bonne idée de les placer dans
dimens.xml
pour référence future. En outre, à la suite d'une normeAndroid
paradigme de programmation permet à d'autres développeurs de comprendre votre code plus rapide. C'est un peu comme lastrings.xml
où l'on placeString
s certains finissent par être utilisé qu'une seule fois! 🙂Ce genre de commentaire, c'est que?
Désolé si je n'ai pas à me faire comprendre. Je voulais dire, vos commentaires n'a pas vraiment aider le Post Original est question ni tout à fait pertinent à mon poste. Je suis juste d'être honnête! 🙂
En fait c'est lié, et c'est utile. C'est pourquoi j'ai voté pour son commentaire. Aussi, il est à l'affiche de la question. Lui demandant s'il a une meilleure réponse à sa propre question est un peu inutile. Merci de ne pas prendre des critiques objectives de la mauvaise façon. C'était juste un valide, constructif sidenote, rien de personnel. 🙂
ok, désolé! 🙂
OriginalL'auteur Sagar Hatekar