亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? container.java

?? 開發框架。 一.說明: 此框架的意圖是解決手機軟件開發中常遇到
?? JAVA
字號:
package org.gggeye.easymf.ui;
import org.gggeye.easymf.log.Logger;

/**
 * Web 視圖 1,包括頁面的渲染 2,頁面的控制邏輯
 * 
 * @author wuhua
 * 
 */
public class Container {
	Panel panel;
	HtmlDocument htmlDocument;
	final static byte VIEW_MOVE_UP = 1;
	final static byte VIEW_MOVE_DOWN = 6;
	
	final static byte VIEW_SCROLL_UP = 2;
	final static byte VIEW_SCROLL_DOWN = 5;
	final static byte VIEW_ENTER_CLICK = 8;

	/**
	 * 事件監聽器
	 */
	EventListener eventListener;
	 
	Container(Panel _webBrowser) {
		this.panel = _webBrowser;	 
	}

	protected void doPaintViews(Pen _point) {
		doDrawDocument(_point, this.htmlDocument);
		
	}

	/**
	 * 繪制菜單
	 * 
	 * @param player
	 */
	  void doDrawMenu(Pen p) {
		p.save();
		p.setColor(0xCEF);
		int y = Panel.height - Panel.labelHeight;
		p.graphics.fillRect(0, y, Panel.width,
				Panel.labelHeight);
		y += (Panel.labelHeight - Panel.defaultFont.getHeight()) >> 1;
		String title = "菜單";
		// if(this.htmlDocument != null && htmlDocument.title == null){
		// title = htmlDocument.title;
		// }
		p.setColor(0xFFFFFF);
		p.graphics.drawString(Runtime.getRuntime().freeMemory() / 1024 + "",
				50, y, 20);
		if(this.panel.menu != null && this.panel.menu.menuItems.size() >1){
			p.graphics.drawString(title, 0, y, 20);
		}
		
		p.reset();

	}
	
	/**
	 * doEnterClick
	 */
	private void doEnterClick(int _keyCode) {
		View focus = htmlDocument.getFocusView();
		if(focus == null)
			return;
		if(focus.eventListener == null)
			focus.eventListener = this.eventListener;
		//if(focus != null && eventListener != null){
			//eventListener.htmlElementOnClick(focus);
		//}else{
			focus.doClick(_keyCode);
		//}
	}

	 
	 

	/**
	 * 繪制標題
	 * 
	 * @param player
	 */
	  void doDrawTitle(Pen p) {
		p.save();
		p.setColor(0xCEF);
		p.graphics.fillRect(0, 0, Panel.width,
				Panel.labelHeight);
		int y = (Panel.labelHeight - Panel.defaultFont.getHeight()) >> 1;
		String title = "XWeb";
		if (this.htmlDocument != null && htmlDocument.title != null) {
			title = htmlDocument.title;
		}
		p.setColor(0xFFFFFF);
		p.graphics.drawString(title, 0, y, 20);
		p.reset();

	}

	/**
	 * doDrawDocument
	 * 
	 * @param Pen
	 *            Point
	 * @param doucment
	 *            HtmlDocument
	 */
	private void doDrawDocument(Pen point, HtmlDocument document) {
		if (htmlDocument == null) {
			return;
		}
		try {
			int defaultBackColor = 0xFFFFFF; // doucment.backColor;
			fillBackground(point, defaultBackColor);
			point.setColor(0x0);
			// 繪制頁面的時候設置字體
			point.setFont(Panel.defaultFont);
			point.setStrokeStyle(0);

			// int startId = document.tempStartHtmlElementId = dc[0];
			// int endId = document.tempEndHtmlElementId = dc[1];
			point.setOffset(0, document.position + Panel.labelHeight);
			for (int i = 0; i < document.views.size(); i++) {
				View he = (View) document.views
						.elementAt(i);
				// doDrawHtmlElement(Point, he);
				he.doPaint(point, document);

				// 為了加強性能,這里應該判斷下,當前元素是否在繪制屏幕以內,如果在的話,才需要繪制
			}
		} catch (Exception e) {
			Logger.debug(e);
		}

	}

	 

 

	/**
	 * 移動頁面, 1,查找焦點 2,移動Y軸位置偏移量
	 * 
	 * @param i
	 */
	private void scrollHtmlDocumentByHeight(int _height) {
		// 文檔對象的屏幕在整個手機屏幕上的時候直接跳出
		if (htmlDocument.height < Panel.viewHeight)
			return;
		htmlDocument.position += _height;
		if (htmlDocument.position > 0) {
			htmlDocument.position = 0;
			// return;
		}
		if (Math.abs(htmlDocument.position) + Panel.viewHeight > htmlDocument.height) {
			htmlDocument.position = -(htmlDocument.height - Panel.viewHeight);
		}
		// 下面是查找焦點_height < 0 表示像上查找

	}

	/**
	 * 查找焦點, 怎么樣查找焦點了。用什么算法了。這很頭疼啊 經過調試終于被我成功的解決了這個問題 主要是遞歸查找方式獲取焦點位置。
	 * 如果具有焦點,并且當前焦點在屏幕上則跳出循環
	 * 
	 * @param _findType --
	 *            -1 向上查找, 1向下查找
	 */
	private void findFocusHtmlElement(byte _findType) {
		View htmlElement = this.htmlDocument
				.nextFocusView(_findType);
		// }
		int elements = 0;
		while (htmlElement != null) {
			elements++;
			if (htmlElement.inSreenContent(_findType, Math
					.abs(htmlDocument.position), Math
					.abs(htmlDocument.position)
					+ Panel.viewHeight)) {
				htmlDocument.focusIndex = htmlElement.index;
				return;
			}
			htmlElement = this.htmlDocument.nextFocusView(_findType);
			htmlDocument.focusIndex = htmlElement.index;
			if (elements >= this.htmlDocument.size()) {
				return;
			}		 
		}
	}
	
	final void doClick(int _keyCode){
		switch(_keyCode){
		case Container.VIEW_MOVE_UP: moveFocusElement(Container.VIEW_MOVE_UP);break;
		case Container.VIEW_MOVE_DOWN: moveFocusElement(Container.VIEW_MOVE_DOWN);break;
		case Container.VIEW_SCROLL_UP: moveFocusElement(Container.VIEW_SCROLL_UP);break;
		case Container.VIEW_SCROLL_DOWN: moveFocusElement(Container.VIEW_SCROLL_DOWN); break;
		//case Container.VIEW_ENTER_CLICK: doEnterClick(_keyCode);break;
		default: break;
		}
//		View tView = this.htmlDocument.getFocusView();
//		this.eventListener
		this.doEnterClick(_keyCode);
	}

	/**
	 * 處理屏幕的滾動 1.焦點的滾動 2.滑動滾動
	 * 
	 * @param hd
	 *            HtmlDocument
	 * @param moveType
	 *            byte 0 up, 1 down
	 */
	void moveFocusElement(byte moveType) {
		switch (moveType) {
		case VIEW_MOVE_UP:
			moveDocumentUp();
			break;
		case VIEW_MOVE_DOWN:
			moveDocumentDown();
			break;
		case VIEW_SCROLL_UP:
			scrollHtmlDocumentByHeight(60);
			findFocusHtmlElement(VIEW_MOVE_UP);
			break;
		case VIEW_SCROLL_DOWN:
			scrollHtmlDocumentByHeight(-60);
			findFocusHtmlElement(VIEW_MOVE_DOWN);
			break;
		}

	}

	private void moveDocumentDown() {
		View he = this.htmlDocument.nextFocusView(VIEW_MOVE_DOWN);
		if(he == null && this.htmlDocument.height - Math.abs(this.htmlDocument.position) > Panel.viewHeight){
			this.scrollHtmlDocumentByHeight(-60);
			return;
		}
		
		while (he != null) {
			if ( !he.onSreenContent(VIEW_MOVE_DOWN, Math
					.abs(htmlDocument.position ), Math
					.abs(htmlDocument.position  )
					+ Panel.viewHeight)) {
				this.scrollHtmlDocumentByHeight(-60);

				return;
			}
			if (he.hasFocus) {
				htmlDocument.focusIndex = he.index;
				return;
			}
		}
		
	
		
	}

	private void moveDocumentUp() {
		View he = this.htmlDocument.nextFocusView(VIEW_MOVE_UP);
		if(he == null &&   this.htmlDocument.position  < 0){
			this.scrollHtmlDocumentByHeight(60);
			return;
		}
		while (he != null) {
			if ( !he.onSreenContent(VIEW_MOVE_UP,
							Math.abs(htmlDocument.position
									- Panel.labelHeight), Math
									.abs(htmlDocument.position)
									+ Panel.viewHeight)) {
				this.scrollHtmlDocumentByHeight(60);
				return;
			}

			if (he.hasFocus) {
				htmlDocument.focusIndex = he.index;
				return;
			}
		}
		
		

	}

	final void fillBackground(Pen point, int c) {
		point.save();
		point.setColor(c);
		point.graphics.fillRect(0, 0, Panel.width,
				Panel.height);
		point.reset();
	}
	
    final void setEventListener(EventListener _eventListener){
		this.eventListener = _eventListener;
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线色视频| 2020国产精品自拍| 欧美日韩国产首页在线观看| 欧美日韩电影在线播放| 精品日韩欧美一区二区| 亚洲少妇中出一区| 国产精品全国免费观看高清| 亚洲在线中文字幕| 日本va欧美va精品| 91视频国产资源| 中文一区二区完整视频在线观看| 国产欧美综合在线| 成人综合在线网站| 欧美群妇大交群中文字幕| 91精品国产入口| 亚洲欧洲三级电影| 国产精品一区二区在线看| 日韩欧美一二三区| 日韩电影在线免费| 91精品国产福利| 亚洲一区二区三区在线| 色视频成人在线观看免| 亚洲欧美在线视频观看| av不卡免费电影| 国产精品婷婷午夜在线观看| 国产成人午夜精品影院观看视频 | 色婷婷综合久久| 欧美成人一区二区三区| 亚洲图片自拍偷拍| 色妞www精品视频| 亚洲欧美成人一区二区三区| 成人av网在线| 亚洲天堂av老司机| 91日韩在线专区| 亚洲视频在线观看三级| 91美女精品福利| 亚洲制服丝袜一区| 欧美猛男超大videosgay| 亚洲一区在线观看视频| 欧美午夜免费电影| 亚洲国产成人精品视频| 欧美日韩一区二区三区在线看| 亚洲一区二区欧美日韩| 欧美喷水一区二区| 免费人成精品欧美精品| 精品国产3级a| 成人97人人超碰人人99| 一区二区三区四区蜜桃 | 国产精品三级视频| 91网址在线看| 日本va欧美va精品发布| 久久久久久9999| 91欧美一区二区| 亚洲mv在线观看| 精品久久五月天| 成人精品在线视频观看| 一区二区日韩av| 日韩欧美黄色影院| 懂色av一区二区三区免费观看| 亚洲精品日韩综合观看成人91| 欧美日韩国产成人在线免费| 精品一区二区国语对白| 亚洲免费色视频| 日韩亚洲欧美一区| 成人精品国产福利| 秋霞电影网一区二区| 国产亚洲污的网站| 欧美视频在线不卡| 经典三级视频一区| 一区二区欧美国产| 欧美xxxxx牲另类人与| 色婷婷综合久久久中文字幕| 激情偷乱视频一区二区三区| 亚洲免费色视频| 久久久99精品久久| 欧美群妇大交群中文字幕| 成人av中文字幕| 久久国产精品72免费观看| 国产精品成人在线观看| 日韩精品资源二区在线| 日本高清免费不卡视频| 精品系列免费在线观看| 亚洲免费电影在线| 国产亚洲欧美在线| 欧美大片国产精品| 色哟哟国产精品| 国产suv精品一区二区883| 麻豆精品在线观看| 午夜久久福利影院| 亚洲最大的成人av| 亚洲视频图片小说| 欧美国产日韩亚洲一区| 欧美电影免费观看高清完整版 | 2欧美一区二区三区在线观看视频| 色狠狠色狠狠综合| 99久久久久免费精品国产| 国产精品一二三四区| 另类小说视频一区二区| 午夜婷婷国产麻豆精品| 亚洲一区影音先锋| 一区二区在线观看视频在线观看| 中国av一区二区三区| 久久久蜜臀国产一区二区| 精品国产免费人成在线观看| 91麻豆精品国产| 欧美一区二区三区在线| 欧美精品aⅴ在线视频| 欧美亚洲图片小说| 在线观看日韩电影| 欧美三级中文字幕在线观看| 欧美最新大片在线看| 欧美性xxxxxxxx| 欧美日韩亚洲综合一区| 欧美日韩国产在线观看| 欧美日韩黄色影视| 7777精品久久久大香线蕉| 制服.丝袜.亚洲.中文.综合| 日韩一区二区电影在线| 精品国产一区二区亚洲人成毛片| 精品88久久久久88久久久| 欧美精品一区二区三区很污很色的| 日韩一级片在线观看| 精品久久一区二区| 欧美国产视频在线| 亚洲久本草在线中文字幕| 一区二区三区 在线观看视频| 亚洲国产精品一区二区www在线| 亚洲国产精品久久不卡毛片| 日韩电影一区二区三区| 精品午夜一区二区三区在线观看| 国产99精品在线观看| 99v久久综合狠狠综合久久| 在线免费av一区| 日韩一卡二卡三卡四卡| 国产欧美一区二区三区网站| 亚洲视频在线一区二区| 视频在线观看国产精品| 国产精品一级二级三级| 色国产精品一区在线观看| 日韩亚洲欧美成人一区| 国产精品久久夜| 亚洲第一电影网| 国产成人精品综合在线观看| 色婷婷精品大视频在线蜜桃视频 | 欧美在线视频日韩| 精品日韩在线观看| 中文字幕欧美一区| 日韩精彩视频在线观看| 国产91精品一区二区麻豆网站| 在线观看成人免费视频| 精品欧美久久久| 伊人色综合久久天天人手人婷| 免费精品视频在线| 91在线视频官网| 日韩精品一区二区三区老鸭窝| 自拍视频在线观看一区二区| 麻豆精品一二三| 色94色欧美sute亚洲线路二 | 国产91对白在线观看九色| 欧美日精品一区视频| 中文一区二区完整视频在线观看| 亚洲五月六月丁香激情| 成人激情文学综合网| 日韩你懂的在线播放| 亚洲一区二区3| 久久久www成人免费毛片麻豆| 欧美在线你懂的| 久久久久99精品一区| 午夜免费欧美电影| 91丝袜美腿高跟国产极品老师| 精品久久久久一区| 偷拍一区二区三区| 91精品1区2区| 国产精品久久福利| 国产精品自拍毛片| 欧美xxxxxxxxx| 亚洲va天堂va国产va久| 99久久免费精品| 日本一区二区动态图| 久久av老司机精品网站导航| 欧美日韩国产另类不卡| 亚洲激情校园春色| 91视频国产观看| 国产精品每日更新在线播放网址| 精品中文字幕一区二区小辣椒 | 日韩欧美在线1卡| 亚洲影院久久精品| 欧洲另类一二三四区| 亚洲精品视频在线| 成人性生交大片免费看视频在线| 日韩女优电影在线观看| 精品中文字幕一区二区小辣椒| 91福利精品第一导航| 欧美韩国日本不卡| 国产乱码精品1区2区3区| 日韩欧美你懂的| 日韩国产欧美在线播放| 91精品久久久久久久久99蜜臂| 午夜精品久久久久久久99樱桃| 欧美性色黄大片|