Android: De La Toile.drawText() la taille du texte sur différentes résolutions d'écran
Pour mon Android jeu, j'ai quelques appels à Canvas.drawText()
.
Pour les tests, j'utilise le standard de la taille de la police qui semble fonctionner correctement.
Cependant, quand je bosse de la résolution à une densité plus élevée, plus les images sont automatiquement chargé, mais le texte est maintenant incroyablement petite.
Est-il un moyen facile de calculer la taille du texte doivent être établis à ou suis-je obligé de le faire manuellement?
edit: Quel a été le point de l'édition de mon post @Suragch ?
- Essayé d'utiliser scaledDensity?
- Salut Marcin, oui j'ai utilisé et que le multiplicateur ne semble pas faire beaucoup. Pour autant que je sais que je suis en utilisant le bon multipliant logique aussi.
Vous devez vous connecter pour publier un commentaire.
Le plus simple est de définir vos tailles de police dans vos ressources avec les unités de l'échelle des pixels indépendants (
sp
) -- cette unité est comme la densité de pixels indépendants (dp
oudip
) en ce qu'elle prend en compte la densité de l'écran, mais il prend également en compte le type de police de réglage de la taille de l'utilisateur.Pour ajouter une nouvelle dimension à créer un
dimens.xml
fichier dans votreres/values
dossier et entrez le code suivant pour ajouter une nouvelle dimension avec le nommyFontSize
:Vous pouvez obtenir la taille du texte dans votre application à l'aide de
La taille sera la bonne échelle pour prendre en compte le courant de densité de l'écran et la police-réglage de la taille.
Pour plus d'informations, voir la Les Développeurs Android page sur Plus de Ressources.
Le plus simple est de définir votre taille de la police dans votre répertoire de ressources avec les unités de
scale-independent pixel (sp)
ou ladensity-independent pixel (dp)
. Alors d'obtenir la taille du texte en utilisantCe à l'échelle le texte de taille appropriée selon la densité de l'écran/résolution de l'utilisateur de la police de réglage de la taille.
Comment définir la taille de la police dans le répertoire des ressources?
Créer un fichier nommé
dimens.xml
dans le dossierres->values
. Ensuite, copiez le code suivant.La
name
attribut de la balise<dimen>
sera utilisé comme ID de ressource.Lors de l'appel de
Toile.drawText()
la taille du texte est d'abord déterminée par le passé dansPaint
objet, qui peut être réglé via lede la Peinture.setTextSize()
. La taille du texte est automatiquement mis à l'échelle parCanvas
basé sur le canevas de la densité, qui peut être trouvé à l'aide deToile.getDensity()
.Lors de la configuration de la taille du texte sur une peinture à l'objet qui sera dessiné sur la Toile, le travail d'une valeur unitaire de
dp
ousp
et laissez Toile gérer la mise à l'échelle pour vous.Vous pouvez le faire vous-même à l'aide d'une simple opération mathématique:
Vous avez besoin de calculer une relation qui attire votre texte juste de la même taille pour toutes les dimensions, il faut donc utiliser la réelle taille du tableau, comme ceci:
Mais ce nombre est tout simplement trop grand, afin de le diviser par celui qui convient à vos besoins, disons 250:
Maintenant, vous pouvez définir la taille de votre texte comme ceci:
Vous ne devez pas nécessaire de diviser l'égard d'un nombre quelconque, mais dans ce cas, vous devrez utiliser de très petites tailles de police pour la variable
myFontSize
. Pour moi 250 fonctionne très bien à utiliser des tailles de police qui permettra de l'ajuster à la taille de l'écran, puisque vous êtes déjà en prenant en compte les pixels de la dimension de votre toile.