⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractwindow.java

📁 很好的基于java的手机文本阅读器anyview 2.0源码,
💻 JAVA
字号:
package com.ismyway.anyview;

import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Graphics;

/**
 * <p>Title: AnyView</p>
 *
 * <p>Description: E680(I) Reader</p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Company: www.ismyway.com</p>
 *
 * @author ZhangJian
 * @version 1.0
 */
public abstract class AbstractWindow implements KeyActionListener {
    public final static int OPENING = 1;
    public final static int HIDE = 2;
    public final static int CLOSED = 3;

    public final static int ANCHOR = Graphics.LEFT | Graphics.TOP;
    protected int width;
    protected int height;
    protected int LEFT = 0; //left指当前窗口左上角的X坐标在屏幕上的实际X坐标值
    protected int TOP = 0; //top指当前窗口左上角的Y坐标在屏幕上的实际Y坐标值
    protected int PRESSED_X, PRESSED_Y; //
    protected int RELEASE_X, RELEASE_Y; //
    protected int WINDOW_STATE = CLOSED;
    protected boolean TOUCH_EVENT = false; //触摸屏事件是否有效

    public AbstractWindow() {
    }

    protected abstract Image getWindow();

    protected abstract void destroy();

    protected abstract boolean bof();

    protected void setWindowState(int state) {
        WINDOW_STATE = state;
    }

    protected int getWidth() {
        return width;
    }

    protected int getHeight() {
        return height;
    }

    protected int getLeft() {
        return LEFT;
    }

    protected int getTop() {
        return TOP;
    }

    protected void pointerPressed(int x, int y) {
        if (AnyView.readType == 1) { //横屏
            PRESSED_X = TOP - y;
            PRESSED_Y = x - LEFT;
        } else {
            PRESSED_X = x - LEFT;
            PRESSED_Y = y - TOP;
        }
    }

    protected void pointerDragged(int x, int y) {

    }

    protected void pointerReleased(int x, int y) {
        RELEASE_X = x - LEFT;
        RELEASE_Y = y - TOP;
        if (AnyView.readType == 1) { //横屏
            RELEASE_X = TOP - y;
            RELEASE_Y = x - LEFT;
        }
    }

    protected boolean contains(int x, int y) {
        return (x > 0 && x < width && y > 0 && y < height);
    }

    //根据屏幕方式映射按键
    final protected int mapKey(int keyCode) {
        if (AnyView.readType == 1) { //横屏
            switch (keyCode) {
            case -1: //up
                return -4; //right
            case -2: //down
                return -3; //left
            case -3: //left
                return -1; //up
            case -4: //right
                return -2; //down
            }
        }
        return keyCode;
    }


    //根据屏幕方式映射坐标到当前窗口坐标
    final protected void mapPoint(int x, int y) {

    }

    /**
     * 返回当前窗口的状态
     * @return int
     */
    public int getWindowState() {
        return WINDOW_STATE;
    }


    protected void keyAction(int keyStates) {
        // Left
        if ((keyStates & GameCanvas.LEFT_PRESSED) != 0) {
            keyLeft();
        }

        // Right
        if ((keyStates & GameCanvas.RIGHT_PRESSED) != 0) {
            keyRight();
        }

        // Up
        if ((keyStates & GameCanvas.UP_PRESSED) != 0) {
            keyUp();
        }

        // Down
        if ((keyStates & GameCanvas.DOWN_PRESSED) != 0) {
            keyDown();
        }

        //Game A
        if ((keyStates & GameCanvas.GAME_A_PRESSED) != 0) {
            keyGameA();
        }

        //Game B
        if ((keyStates & GameCanvas.GAME_B_PRESSED) != 0) {
            keyGameB();
        }

        //Fire
        if ((keyStates & GameCanvas.FIRE_PRESSED) != 0) {
            keyFire();
        }
    }


    public void keyGameA() {

    }

    public void keyGameB() {

    }

    public void keyLeft() {

    }

    public void keyRight() {

    }

    public void keyUp() {

    }

    public void keyDown() {

    }

    public void keyFire() {

    }

    public boolean getTouchEvent() {
        return TOUCH_EVENT;
    }

    public void setLocation(int x, int y) {
        if (AnyView.readType == 1) { //横屏
            if (x + height > AnyView.ScreenWidth) {
                LEFT = AnyView.ScreenWidth - height;
            } else {
                LEFT = x;
            }

            if (y < width) {
                TOP = width;
            } else {
                TOP = y;
            }
        } else { //竖屏
            if (width + x > AnyView.ScreenWidth) {
                LEFT = AnyView.ScreenWidth - width;
            } else {
                LEFT = x;
            }

            if (y + height > AnyView.ScreenHeight) {
                TOP = AnyView.ScreenHeight - height;
            } else {
                TOP = y;
            }
        }

    }
}

⌨️ 快捷键说明

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