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 + -
显示快捷键?