12
votes

Quelle est la relation entre les pixels et les pixels à l'échelle

J'ai utilisé l'éditeur de mise en page à Eclipse pour ma motion Maory de mon UI puis j'ai créé le code pour le peupler de manière dynamique et les choses se présentent comme des tailles différentes. Le XML que j'utilise pour ajouter les images d'étoile ressemble à ceci: xxx pré>

et le code Java que j'utilise pour faire la même chose ressemble à ceci: p>

ViewGroup.MarginLayoutParams layout = new ViewGroup.MarginLayoutParams(22, 22);
layout.setMargins(2, 0, 2, 0);
ImageView star = new ImageView(mContext);
star.setImageResource(R.drawable.star_gold);
star.setLayoutParams(layout);
star.setAdjustViewBounds(true);
holder.Stars.addView(star);


1 commentaires

Les pixels mis à l'échelle ont eu la texture de la peau de poisson enlevée d'eux, généralement par l'abrasion mécanique.


5 Réponses :


4
votes

Les pixels échelés changent en fonction des préférences de la taille de la police de l'utilisateur.

Lire à propos de Assistance à l'écran et à la résolution .

Vous trouverez également de bonnes informations sur DP et SP dans cette question:

Support de résolution dans Android 2.0


0 commentaires

6
votes

de la documentation:

pixels indépendants de l'échelle (SP) Ceci est comme l'unité DP, mais c'est aussi échelonné par la taille de la police de l'utilisateur préférence. Il vous est recommandé d'utiliser cette unité lors de la spécification de la taille de la police, donc ils seront ajustés pour les deux Densité d'écran et préférence de l'utilisateur.

Cela ressemble à ce que vous voulez utiliser pour le dimensionnement de la police, mais j'utiliserais tremper pour des choses comme la marge / le rembourrage:

Pixel indépendant de densité (DIP) A unité de pixel virtuel que les applications peut utiliser pour définir leur UI, à Dimensions ou positions express d'une manière indépendante de la densité.


0 commentaires

19
votes

Tout d'abord, vous devriez utiliser des pixels indépendants de densité - DIP ou DP - et non des pixels échoués - sp . .

Le pixel indépendant de la densité est équivalent à un pixel physique sur un écran de 160 dpi. Si vos ressources sont dimensionnées dans DIP Ils seront automatiquement mis à l'échelle sur les écrans avec différentes densités; C'est pourquoi les étoiles spécifiées dans votre XML achètent OK. Les pixels à l'échelle sont similaires mais doivent être utilisés pour des ressources texte uniquement car elles reflètent également les options de mise à l'échelle du texte.

Votre problème est que votre code Java fonctionne dans des pixels bruts non calé, c'est pourquoi vos étoiles sont plus petites. La documentation Android a Instructions sur la conversion de DIP S à Pixels . En bref, vous devez regarder le android.util.displaymetrics .dité champ .


0 commentaires

8
votes

voilà, nous allons! Je dois obtenir la densité d'affichage.

// Convert the dips to pixels
final float scale = getContext().getResources().getDisplayMetrics().density;
mGestureThreshold = (int) (GESTURE_THRESHOLD_DIP * scale + 0.5f);


0 commentaires

6
votes

Retour à la question initiale de savoir comment définir la taille du texte dans les trempettes ou les pixels à l'échelle en Java: xxx

ou xxx


0 commentaires