readme.java

来自「最强手机阅读器Anyview3.0版的界面代码」· Java 代码 · 共 260 行

JAVA
260
字号
package com.ismyway.anyview.win;

import java.io.IOException;
import java.io.InputStream;
import java.util.Calendar;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

import com.ismyway.anyview.others.Configure;
import com.ismyway.anyview.others.Reader;
import com.ismyway.fairyui.Component;
import com.ismyway.fairyui.MenuItem;
import com.ismyway.util.ArrayList;
import com.ismyway.util.Res;
import com.ismyway.util.TxtLine;

public class Readme extends Reader {
	private int lineAdjusty = 0;
	private int lineHeight = 0;

	public Readme(ArrayList lists, String currentFile, byte encode) {
		super(lists, currentFile, encode);

		setTitle(Res.get("Help"));
		addCommand(new Command(Res.get("Close"), Command.OK, 1));
		try {
			Image txt = Image.createImage("/res/txt.png");
			setLogo(txt);
		} catch (Exception e) {

		}

		screenSizeChange();
		readNextBuffer(false);
	}

	public void addBookMark() {

	}

	public void buildIndex() {

	}

	public void close() {
		super.close();
	}

	public void estreat() {

	}

	public int getCurrentPosition() {
		return 0;
	}

	public MenuItem[] getMenuItems() {
		return null;
	}

	public void jumpToPosition(int pos, boolean align) {

	}

	public void makeSnap() {

	}

	public void open(String[] files, int selectedIndex) {

	}

	synchronized public void readNextBuffer(boolean align) {
		InputStream is = this.getClass().getResourceAsStream("/readme.txt");
		try {
			bufferTxt = new byte[is.available()];
			is.read(bufferTxt);
			is.close();
		} catch (IOException ex) {
		}

		// 测试智能分行
		//mylines = WordParser.splitString(0, bufferTxt, getWidth(), getFont());


		Configure.gc();

		//internalHeight = mylines.length * (getFont().getHeight() + Configure.linePadding);
		verticalOffset = 0;
	}

	/**
	 * 从文件流中读取前一段内容放入缓冲区中
	 */
	synchronized private void readPreStage() {

	}

	/**
	 * 将下一段内容读入缓冲区中
	 */
	synchronized void readNextStage() {

	}

	public void scaleFont(int scale) {

	}

	public void search(String str, boolean start, boolean sen) {

	}

	public String shareTxt() {

		return null;
	}

	public void trunPage(int page) {

	}

	public void paint(Graphics g, int adjustx, int adjusty) {
		g.setColor(0xFFFFFF);
		int filly = getTop() - adjusty;
		filly = filly < 0 ? 0 : filly;
		int fillh = internalHeight - filly;
		fillh = fillh > mainCanvas.getHeight() ? mainCanvas.getHeight() : fillh;
		if (fillh + filly < mainCanvas.getHeight()) {
			fillh = mainCanvas.getHeight() - filly;
		}
		g.fillRect(getLeft() - adjustx, filly, getWidth(), fillh);

		paintTitleBottom(g, adjustx, adjusty);
	}

	public int getPercent() {
		try {
			int percent = (int) (mylines[currentLine].offset * 100 / bufferTxt.length);
			return percent;
		} catch (Exception e) {
			return 0;
		}
	}

	public void VKey_Up() {
		if (null == mylines || (!eof && mylines.length < lineOfPage)) {
			return;
		}

		lineAdjusty = 0;
		currentLine--;
		verticalOffset = currentLine * lineHeight;
		if (currentLine < 0) {
			if (bof) { //已到文件的头
				currentLine = 0;
				verticalOffset = currentLine * lineHeight;
			} else { //需要向前读缓冲
				currentLine += lineOfPage;
				currentLine = currentLine > mylines.length - 1 ? mylines.length - 1 : currentLine;
				currentOffset = mylines[currentLine].offset;
				readPreStage();
			}
		}
	}

	public void VKey_Down() {
		if (null == mylines || (!eof && mylines.length < lineOfPage)) {
			return;
		}

		currentLine++;
		if (currentLine + 3 > mylines.length) {
			currentLine = mylines.length - 3;
		}
		lineAdjusty = 0;
		verticalOffset = currentLine * lineHeight;
	}

	public void VKey_Left() {
		if (null == mylines || (!eof && mylines.length < lineOfPage)) {
			return;
		}

		currentLine -= lineOfPage;
		currentLine = currentLine < 0 ? 0 : currentLine;

		lineAdjusty = 0;
		verticalOffset = currentLine * lineHeight;
	}

	public void VKey_Right() {
		currentLine += lineOfPage;
		if (currentLine + lineOfPage > mylines.length) {
			currentLine = mylines.length - lineOfPage;
		}

		lineAdjusty = 0;
		verticalOffset = currentLine * lineHeight;
	}

	public void VKey_Fire() {
		showTitle = showBottom = !showTitle;
		screenSizeChange();
	}

	public void screenSizeChange() {
		//计算当前一页可以显示多少行文字
		viewportHeight = getHeight() - getBottomHeight() - getTopHeight();
		lineHeight = getFont().getHeight() + Configure.linePadding;
		lineOfPage = (viewportHeight - getFont().getHeight()) / lineHeight + 1;
		if (Configure.reserveLineWhenTurnPage) {
			lineOfPage--;
			lineOfPage = lineOfPage < 1 ? 1 : lineOfPage;
		}
		//计算过度的颜色
		colors = getTransColors(Configure.fontColor1, Configure.fontColor2, lineOfPage);
	}

	public void commandAction(Command cmd, Component c) {
		String str = cmd.getLabel();
		if (str.equals(Res.get("Close"))) {
			mainCanvas.closePopup();
		} else {

		}
	}

	public boolean clock() {
		boolean repaint = super.clock();
		if (repaint) {
			return repaint;
		}

		if (System.currentTimeMillis() - lastTime < 1000L) {
			return repaint;
		}
		lastTime = System.currentTimeMillis();

		Calendar calendar = Calendar.getInstance();
		int hour = calendar.get(Calendar.HOUR);
		int min = calendar.get(Calendar.MINUTE);
		int sec = calendar.get(Calendar.SECOND);
		int pm = calendar.get(Calendar.AM_PM);
		hour = (pm == 1) ? hour + 12 : hour;

		StringBuffer sb = new StringBuffer();
		sb.append((hour < 10) ? "0" : "");
		sb.append(hour).append(":");
		sb.append((min < 10) ? "0" : "").append(min);
		sb.append(":").append((sec < 10) ? "0" : "").append(sec);

		String str = sb.toString();
		rightString = str;
		return true;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?