程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> JavaMe開發:自適應滾動顯示(2)

JavaMe開發:自適應滾動顯示(2)

編輯:J2ME

【分析】

1 字符串拆分

  1. String info_wrap1[] = StringDealMethod.format(info, width-15, ft);

具體請參考JavaMe連載(4)-繪制可自動換行文本

2 避免字截斷

如何在指定的區域內繪制整行文本,而不會因為字體或屏幕高度的改變使文本出現截斷的問題,使文本出現“半截字”的問題呢?

  1. bodyHeight = ((int) (height-head.menuHeight-menu.menuHeight)/ft.getHeight())*ft.getHeight();

經過上述處理後,滾動區域的高度bodyHeight總會是字體高度的整數倍,這樣就不會出現上述字截斷的問題了。

3 繪制文本

  1. for(int i=0; i<info_wrap1.length;i++)
  2. {
  3. graphics.drawString(info_wrap1[i],5, i * ft.getHeight()+head.menuHeight+margin, Graphics.TOP|Graphics.LEFT);
  4. }

4 坐標變換

  1. graphics.clipRect(0, head.menuHeight+margin, width, bodyHeight);
  2. graphics.translate(0, dir*currentPageIndex*bodyHeight);

文本繪制完成後,將坐標變換回來。

  1. graphics.translate(0, -dir*currentPageIndex*bodyHeight);

5 繪制滾動條

  1. private void drawScrollBar()
  2. {
  3. int barHeight = height-head.menuHeight-menu.menuHeight;
  4. graphics.setColor(Color.menuFrame);
  5. graphics.fillRect(width-3, head.menuHeight, 2, barHeight);
  6. graphics.setColor(Color.selectBg);
  7. graphics.fillRect(width-4, head.menuHeight+(currentPageIndex)*barHeight/page, 4, barHeight/page);
  8. }

6 事件處理

當檢測到按鍵事件後,進行翻頁操作。

  1. protected void keyPressed(int keyCode)
  2. {
  3. //System.out.println(keycode);
  4. switch(keyCode)
  5. {
  6. case KeyID.SOFT_RIGHT:
  7. {
  8. String flag = "0";
  9. Object [] args = {flag,""};
  10. controller.handleEvent(UIController.EventID.EVENT_MAIN_SCREEN,args);
  11. break;
  12. }
  13. default:
  14. ;
  15. }
  16. keyCode = getGameAction(keyCode);
  17. //System.out.println(page);
  18. switch(keyCode)
  19. {
  20. case UP:
  21. {
  22. dir = -1;
  23. if(currentPageIndex>0)
  24. {
  25. currentPageIndex--;
  26. }
  27. else
  28. {
  29. //dir = 0;
  30. }
  31. show();
  32. break;
  33. }
  34. case DOWN:
  35. {
  36. dir = -1;
  37. if(currentPageIndex<page-1)
  38. {
  39. currentPageIndex++;
  40. }
  41. else
  42. {
  43. //dir = 0;
  44. }
  45. show();
  46. break;
  47. }
  48. }
  49. }

本例方法能自適應的檢測屏幕的寬度和長度,依據字體的大小,對文本進行分頁,滾動顯示,實現效果如圖1所示:


圖1 滾動顯示效果

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved