【Description du problème】
Nous voyons souvent des exemples de défilement, tels que le contenu de la page Web dans le navigateur UC. Lorsqu'il y a beaucoup de contenu, il est raisonnable d'utiliser la pagination de défilement à afficher. Dans le dessin de la toile, l'excès de contenu est tronqué. Comment réaliser l'écran de pagination de défilement?
【principe】
Il existe une fonction de transformation de coordonnées dans Javame. Lorsque l'événement de clé correspondant est déclenché, nous l'avons laissé afficher la page correspondante et faire défiler la barre de défilement à la position correspondante.
【Liste de code】
Showhelp.javapackage com.token.view; Importation com.token.View. Head Head; true); 0; , "", "Return"); Affichage de la page de points; / n "+" Page de défilement; / N "+ Page de défilement Affichage; / N" + "Page de défilement Affichage; Affichage de la page de défilement; / n "8 Page de défilement; / N" + "Page de défilement Affichage; affichage de la page de défilement; / n "+". Discussion de la pagination; / N "+" Affichage de pagination 18 Discussion de la pagination; / n "+" 23 Scroll Paging Affichage; / N "+ affichage de pagination de défilement; / N" + ". Discussion de la pagination; / n "+" 28 Scroll Paging Affichage; / N "+ écran de pagination 29; / n. Scroll Paging Affichage; / N "+" 33 Scroll Paging Affichage; / N "+" 34 Scroll Paging Affichage; longueur * ft.gethe ight () / (height-head.menuheight-menu.menuheight-2 * marge) +1; ) * ft.getheight (); margin = (height-head.menuheight-menu.menuheight-bodyheight) / 2; .MenuHeight + marge, largeur, bodyHeight); , i * ft.GetHeight () + head.menuheight + margin, graphics.top | graphics.left); System.out.println (graphics.getTranslatey (); Head.MenuHeight, 2, Barheight); Keycode) {//System.out. .EventId.event_main_screen, args); Index> 0) {CurrentPageInde / dir = 0;} show ();
* Veuillez vous référer à la sérialisation Javame (3) pour UIController - parlez également du modèle de conception MVC, donc je ne le répéterai pas ici.
【analyser】
1 chaîne Split
String info_wrap1 [] = stringdealMethod.format (info, largeur-15, ft);
Pour plus de détails, veuillez vous référer à la sérialisation Javame (4) - Dessin de texte d'emballage de ligne automatique
2 Évitez la troncature des mots
Comment tracer une ligne de texte entière dans une zone spécifiée sans tronquer le texte en raison de modifications de la hauteur de la police ou de l'écran, ce qui fait que le texte a des "mots à moitié tronqués"?
bodyHeight = ((int) (height-head.menuheight-menu.menuheight) /ft.getheight ()) * ft.getheight ();
Après le traitement ci-dessus, la hauteur du tout le corps de la zone de défilement sera toujours un multiple entier de la hauteur de la police, de sorte que le problème de troncature du mot mentionné ci-dessus ne se produira pas.
3 dessiner du texte
for (int i = 0; i <info_wrap1.length; i ++) {graphics.drawstring (info_wrap1 [i], 5, i * ft.getheight () + head.menuheight + margin, graphics.to p | graphics.left) ;
4 Transformation des coordonnées
graphics.cliprect (0, head.MenuHeight + marge, largeur, bodyHeight);
Une fois le texte tiré, transformez les coordonnées.
graphics.translate (0, -dir * currentPageIndex * bodyHeight);
5 Draw Scrollbars
VOID PRIVÉE DrawscrollBar () {int barheight = height-head.menuheight-menu.menuHeight; Color .SelectBg);
6 manipulation des événements
Lorsqu'un événement de presse de touche est détecté, une opération de virage de page est effectuée.
VOID VOID protégé (int keycode) {//system.out.println(keycode); . 1; } else {// dir = 0;} show ();
Cet exemple de méthode peut détecter de manière adaptative la largeur et la longueur de l'écran, et paginez le texte en fonction de la taille de la police et affichez des défilements.
Effet d'affichage de défilement d'image