【Deskripsi Masalah】
Kami sering melihat beberapa contoh pengguliran, seperti konten halaman web di browser UC. Ketika ada banyak konten, masuk akal untuk menggunakan pagination gulir untuk ditampilkan. Dalam gambar di kanvas, konten berlebih terpotong. Bagaimana cara mewujudkan layar pagination menggulir?
【prinsip】
Ada fungsi transformasi koordinat di Javame. Ketika acara kunci yang sesuai dipicu, kami membiarkannya menampilkan halaman yang sesuai dan menggulir scrollbar ke posisi yang sesuai.
【Daftar kode】
Showhelp.javapackage com.token.view; Token Kepala Private Backgroud; true); 0; , "," Return "); Tampilan Halaman Poin; /N " +" 3 Tampilan Halaman Gulir; Tampilan halaman gulir; Tampilan halaman gulir; Tampilan pagar gulir; Tampilan pagar gulir; Tampilan pagar gulir; Tampilan pagar gulir; /n " +" 33 Tampilan pagar gulir; panjang*ft.gethe ight ()/(height-head.menuheight-menu.menuheight-2*margin) +1; ) ft.getHeight (); .Menuheight+margin, lebar, BodyHeight); , ft.getHeight () +head.menuheight +margin, grafik.top | grafis.left); System.out.println (Graphics.getTranslatey ()); Head.Menuheight, 2, Barheight); KeyCode) {//system.out .EventId.event_main_screen, args); Indeks) {SurregePageIndex--; /dir = 0;
* Silakan merujuk ke serialisasi Javame (3) untuk UIController - juga berbicara tentang pola desain MVC, jadi saya tidak akan mengulanginya di sini.
【menganalisa】
1 string split
String info_wrap1 [] = StringDealMethod.Format (info, lebar-15, ft);
Untuk detailnya, silakan merujuk ke serialisasi javame (4) - menggambar teks pembungkus garis otomatis
2 Hindari pemotongan kata
Bagaimana cara menggambar seluruh garis teks di area tertentu tanpa memotong teks karena perubahan tinggi font atau layar, menyebabkan teks memiliki "kata-kata setengah terpotong"?
BodyHeight = ((int) (height-head.menuheight-menu.menuheight) /ft.getHeight ())*ft.getHeight ();
Setelah pemrosesan di atas, ketinggian bodyheight dari area pengguliran akan selalu menjadi kelipatan bilangan bulat dari ketinggian font, sehingga masalah pemotongan kata yang disebutkan di atas tidak akan terjadi.
3 menggambar teks
untuk (int i = 0; i <info_wrap1.length; i ++) {graphics.drawstring (info_wrap1 [i], 5, i * ft.getHeight ()+head.menuheight+margin, grafik.to p | graphics.left) ;}
4 Koordinat transformasi
Graphics.cliprect (0, head.menuheight+margin, lebar, bodyheight);
Setelah teks ditarik, ubah koordinat kembali.
Graphics.translate (0, -dir*currentPageIndex*BodyHeight);
5 Gambarlah scrollbars
Private Void DrawsCrollBar () {int BarHeight = height-head.menuheight-menu.menuheight; Warna .SelectBG);
6 penanganan acara
Ketika acara tekan tombol terdeteksi, operasi turn halaman dilakukan.
Keypressed void yang dilindungi (int keycode) {//system.out.println(keyCode); .handleevent (uicontroller.eventid.event_main_screen, args); 1; } else {// dir = 0;
Metode contoh ini dapat secara adaptasi mendeteksi lebar dan panjang layar, dan menyampaikan teks sesuai dengan ukuran font dan menampilkannya gulungan.
Efek tampilan gulir gambar