2010-11-23 5 views
4

J'essaie d'écrire des chaînes à une toile (live wallpaper) mais chaîne longue ne pas obtenir mot-wraped est-il un moyen de le faire?
Je pense que la toile est la seule chose que je peux utiliser pour cela, car c'est un fond d'écran en direct.mot wraped tex sur toile Android

+0

dieu, ça ne peut pas être facile, des exemples à partager? –

Répondre

11

Pas besoin de faire votre propre emballage de mots.

Découvrez android.text.Layout et ses sous-classes android.text.StaticLayout et android.text.DynamicLayout

quelque chose comme ceci:

StaticLayout layout = new StaticLayout(text, txtpaint, textW,Layout.Alignment.ALIGN_NORMAL, 1.3f, 0, false); 
txtcanvas.translate(xoffs, yoffs); //position the text 
layout.draw(txtcanvas); 
+0

Je ne suis pas sûr que cela fonctionnera - à partir de la documentation: DynamicLayout est une mise en page de texte qui se met à jour au fur et à mesure que le texte est édité. Ceci est utilisé par les widgets pour contrôler la disposition du texte. Vous ne devriez pas avoir besoin d'utiliser directement cette classe, sauf si vous implémentez votre propre widget ou objet d'affichage personnalisé, ou si vous devez appeler directement Canvas.drawText(). Si tel est le cas, cela ne fonctionnera pas puisque vous devez appeler Canvas.drawText() lors de l'utilisation de canvas ... – ekatz

+1

Cela fonctionnera. La mise en œuvre de votre propre widget personnalisé est exactement ce que cette question concerne. layout.draw appellera probablement Canvas.drawText pour vous après avoir fait le formatage. Notez que vous envoyez le canevas à l'appel draw. –

+0

Olof, je sais que les commentaires SO ne sont pas pour + 1s ou pouce en l'air, mais merci beaucoup pour votre réponse, m'a sauvé des heures de recherche pour le bon outil. Pour tout le monde, oui, cela fonctionne. – andreimarinescu

1

Je ne sais pas si cela fonctionnera pour vous, mais Pour ces situations, j'aime vraiment créer une vue, la mettre en page, puis en écrire une «capture d'écran» dans un bitmap.

Cette fonction crée une image bitmap à partir des paramètres + la disposition xml dans "just_a_textview". Vous ne voulez pas faire cela dans toutes les images, mais une fois que vous avez le bitmap, dessiner sur une toile est très rapide. Et cela vous donne toute la flexibilité de n'importe quel Android View. Je comprends que cela ne fonctionnera pas si votre texte est très dynamique, mais vous pouvez peut-être le faire comme ceci et utiliser la matrice de toile pour faire toute mise à l'échelle/rotation que vous pourriez vouloir faire. Cela peut être encore optimisé pour des performances, par ex. en tirant sur l'inflation de mise en page.