【문제 설명】
우리는 종종 UC 브라우저에서 웹 페이지의 내용과 같은 몇 가지 스크롤 예제를 볼 수 있습니다. 컨텐츠가 많으면 스크롤 페이지를 사용하여 표시하는 것이 합리적입니다. 캔버스의 도면에서 과도한 내용이 잘립니다. 스크롤 페이지 매김 디스플레이를 실현하는 방법은 무엇입니까?
【원칙】
Javame에는 좌표 변환 기능이 있습니다. 해당 키 이벤트가 트리거되면 해당 페이지를 표시하고 스크롤바를 해당 위치로 스크롤하게합니다.
Code 코드 목록】
showhelp.javapackage com.token.view; token.util.ucontroller 헤드; 개인 int bo. true); 그래픽 = GetGraphics (); , "", "return"; // flushgraphics (); 포인트 디스플레이; /n "3 스크롤 페이지 디스플레이; 스크롤 페이지 디스플레이; 8 스크롤 페이지 디스플레이; 스크롤 페이지 디스플레이; 13 스크롤 페이징 디스플레이; 페이징 디스플레이; 페이징 디스플레이; /n " +"24 스크롤 페이징 디스플레이; 페이징 디스플레이; /n " +"29 스크롤 페이징 디스플레이; 페이징 디스플레이; /n " +"33 스크롤 페이징 디스플레이; 길이*ft.gethe ight ()/(height-head.menuheight-menu.menuheight-2*margin) +1; ) *ft.getheight (); .menuHeight+마진, 너비, BodyHeight.TransLate (int i = 0; i <info_wrap1.length; i ++) {drawsstring [i], 5 , i*ft.getheight () +head.menuheight +margin.top.left); system.out.println (graphics.getTranslatey ())} int barheight = height-head.menuheight-menu.menuheight (color.menuframe); Head.MenuHeight, 2, Barheight); SetColor (width-4, head.menuheight+(CurrentPageIndex)*Barheight/Page, Barheight/Page}; keycode) {//system.out (keycode) {case keycode : angual = "args = {flag." .eventId.event_main_screen, arg}; index {currentPageIndex} re = 0; /dir = 0} show ();
* UIController의 경우 Javame Serialization (3)을 참조하십시오 - MVC 설계 패턴에 대해서도 이야기하므로 여기에서 반복하지 않을 것입니다.
【분석】
1 문자열 분할
문자열 info_wrap1 [] = StringDealMethod.format (info, width-15, ft);
자세한 내용은 Javame Serialization (4) - 자동 라인 랩핑 텍스트 그리기를 참조하십시오.
2 단어 자르기를 피하십시오
글꼴이나 화면 높이의 변경으로 인해 텍스트를 자르지 않고 지정된 영역에 전체 텍스트 라인을 그리는 방법으로 텍스트가 "반 트립 된 단어"를 갖게 되나요?
bodyHeight = ((int) (높이 -Head.MenuHeight-Menu.MenuHeight) /ft.getheight ())*ft.getheight ();
위의 처리 후, 스크롤 영역의 높이 신호는 항상 글꼴 높이의 정수 다중가되므로 위에서 언급 한 단어 자르기 문제가 발생하지 않습니다.
3 텍스트를 그립니다
for (int i = 0; i <info_wrap1.length; i ++) {graphics.drawString (info_wrap1 [i], 5, i * ft.getheight ()+head.menuheight+margin, graphics.tophics.left) }
4 좌표 변환
Graphics.cliprect (0, head.menuheight+마진, 너비, BodyHeight);
텍스트를 그린 후 좌표를 다시 변환하십시오.
Graphics.TransLate (0, -dir*currentPageIndex*BodyHeight);
5 스크롤 바를 그립니다
개인 void drawscrollbar () {int barheight.menuheight-menu.menuheight.setcolor (ridth-3, head.menuheight, 2, barheight); color .selectbg); graphics.fillRect (width-4, menuheight+(currentPageIndex)*barheight, 4, barheight/page);
6 이벤트 처리
키 프레스 이벤트가 감지되면 페이지 회전 작업이 수행됩니다.
보호 된 void keypressed (int keycode) {//system.out.println (keycode) {case keyid.soft_right; . handleevent (uicontroller.event_main_screen)} keycode = getGameaction (keycode); 1; } else {// dir = 0;
이 예제 방법은 화면의 너비와 길이를 적응 적으로 감지하고 글꼴의 크기에 따라 텍스트를 페이지를 표시 할 수 있습니다.
그림 스크롤 표시 디스플레이 효과