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

📄 txtreadercanvas.java

📁 很好的基于java的手机文本阅读器anyview 2.0源码,
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
            if (showMenu) {
                if (currentWindow == null) {
                    menu.keyFire();
                } else {
                    currentWindow.keyRight();
                }
                repaint();
                return;
            } else {
                if (eof && currentLine + lineOfPage > mylines.size()) {
                    return;
                }
                currentLine += lineOfPage;

                prepareNextImage();
                repaint();
                return;
            }
        }

        // Up
        if (keyCode == -1) {
            if (showMenu) {
                if (currentWindow == null) {
                    menu.keyUp();
                } else {
                    currentWindow.keyUp();
                }
                repaint();
                return;
            } else {
                preparePreImage(1);
                repaint();
                return;
            }

        }

        // Down
        if (keyCode == -2) {
            if (showMenu) {
                if (currentWindow == null) {
                    menu.keyDown();
                } else {
                    currentWindow.keyDown();
                }
                repaint();
                return;
            } else {
                if (eof && currentLine + 1 > mylines.size()) {
                    return;
                }
                currentLine++;

                prepareNextImage();
                repaint();
                return;
            }

        }

        if (keyCode == -5) {
            if (showMenu) {
                if (currentWindow == null) { //弹出新窗口
                    menu.keyFire();
                    switch (menu.getSelectedIndex()) {
                    case 0: //阅读信息
                        readInfo();
                        repaint();
                        return;
                    case 1: //选择书签
                        selectBookMark();
                        repaint();
                        return;
                    case 2: //添加书签
                        addBookMark();
                        repaint();
                        return;
                    case 3: //删除书签
                        deleteBookMark();
                        repaint();
                        return;
                    case 4: //自由跳转
                        freeJump();
                        repaint();
                        return;
                    case 5: //分享片断
                        shareTxt();
                        repaint();
                        return;
                    case 6: //搜索
                        showSearch();
                        return;
                    case 7: //返回菜单
                        saveRec();
                        AnyView.av.switchSplash();
                        return;
                    case 8: //退出程序
                        saveRec();
                        AnyView.av.exit();
                        return;
                    }
                } else { //处理当前窗口的事件
                    currentWindow.keyFire();
                    switch (menu.getSelectedIndex()) {
                    case 1: //选择书签
                        int index = selector.getSelectedIndex();
                        if (index == -1) {
                            repaint();
                            currentWindow = null;
                            showMenu = false;
                            return;
                        }
                        Mark mark = (Mark) currentMarks.elementAt(index);
                        currentOffset = mark.offset;
                        fsa.locate(currentOffset);
                        bufferbuffer = new byte[0];
                        readNextBuffer();
                        currentLine = 0;
                        analysisBuffer();
                        prepareNextImage();
                        repaint();
                        currentWindow = null;
                        showMenu = false;
                        return;
                    case 2: //添加书签
                        break;
                    case 3: //删除书签
                        if (selector.getSelectedIndex() == -1) {
                            repaint();
                            currentWindow = null;
                            showMenu = false;
                            return;
                        }
                        currentMarks.removeElementAt(selector.
                                getSelectedIndex());
                        currentWindow = null;
                        repaint();
                        return;
                    case 4: //自由跳转
                        break;
                    case 5: //搜索
                        break;
                    }
                }
            } else {
                menu = null;
                System.gc();
                menu = new Menu(menuitems);
                showMenu = true;
            }
            repaint();
        }
    }

    public void pointerPressed(int x, int y) {
        pressedx = x;
        pressedy = y;

        if (null != currentWindow) {
            currentWindow.pointerPressed(x, y);
        } else if (showMenu && menu != null) {
            menu.pointerPressed(x, y);
        }
        repaint();
    }

    public void pointerReleased(int x, int y) {
        int tx = x - pressedx;
        int ty = y - pressedy;

        if (message.getWindowState() == AbstractWindow.OPENING) { //关闭消息窗口
            message.keyFire();
            repaint();
            return;
        }

        if (null != currentWindow) {
            currentWindow.pointerReleased(x, y);
            if (currentWindow.getTouchEvent()) {
                switch (menu.getSelectedIndex()) {
                case 1: //选择书签
                    int index = selector.getSelectedIndex();
                    if (index == -1) {
                        repaint();
                        currentWindow = null;
                        showMenu = false;
                        return;
                    }
                    Mark mark = (Mark) currentMarks.elementAt(index);
                    currentOffset = mark.offset;
                    fsa.locate(currentOffset);
                    bufferbuffer = new byte[0];
                    readNextBuffer();
                    currentLine = 0;
                    analysisBuffer();
                    prepareNextImage();
                    repaint();
                    currentWindow = null;
                    showMenu = false;
                    return;
                case 2: //添加书签
                    break;
                case 3: //删除书签
                    if (selector.getSelectedIndex() == -1) {
                        repaint();
                        currentWindow = null;
                        showMenu = false;
                        return;
                    }
                    currentMarks.removeElementAt(selector.getSelectedIndex());
                    currentWindow = null;
                    repaint();
                    return;
                case 4: //自由跳转
                    Progress progress = (Progress) currentWindow;
                    if (progress.getSelectedIndex() == 3) { //选择了确定
                        currentOffset = progress.getCurrentValue() *
                                        txtLenght /
                                        100 - 2048;
                        currentOffset = currentOffset < 0 ? 0 :
                                        currentOffset;
                        fsa.locate(currentOffset);
                        byte[] b = fsa.read(1);
                        while (currentOffset < txtLenght && b[0] != 10) {
                            b = fsa.read(1);
                            currentOffset++;
                        }
                        bufferbuffer = new byte[0]; //清缓冲的缓冲
                        readNextBuffer();
                        analysisBuffer();
                        //currentLine = 0;
                        prepareNextImage();
                        currentWindow = null;
                        menu = null;
                        showMenu = false;
                    } else if (progress.getSelectedIndex() == 4) { //选择了取消
                        currentWindow = null;
                        menu = null;
                        showMenu = false;
                    } else {
                        //什么也不做
                    }
                    repaint();
                    return;
                }
            } else { //关闭当前的子窗口
                //System.out.println("state = " + currentWindow.getWindowState());
                if (currentWindow.getWindowState() == AbstractWindow.CLOSED) {
                    currentWindow = null;
                    System.gc();
                    showMenu = true;
                }

                repaint();
                return;
            }
        }

        if (showMenu) {
            menu.pointerReleased(x, y);
            if (!menu.getTouchEvent()) {
                return;
            }

            switch (menu.getSelectedIndex()) {
            case 0: //阅读信息
                readInfo();
                repaint();
                return;
            case 1: //选择书签
                selectBookMark();
                repaint();
                return;
            case 2: //添加书签
                addBookMark();
                repaint();
                return;
            case 3: //删除书签
                deleteBookMark();
                repaint();
                return;
            case 4: //自由跳转
                freeJump();
                repaint();
                return;
            case 5: //分享片断
                shareTxt();
                repaint();
                return;
            case 6: //搜索
                showSearch();
                repaint();
                return;
            case 7: //返回菜单
                saveRec();
                AnyView.av.switchSplash();
                return;
            case 8: //退出程序
                saveRec();
                AnyView.av.exit();
                return;
            }
        }

        if (tx * tx + ty * ty > 900 && !showMenu) {
            menu = new Menu(menuitems);
            showMenu = true;
            menu.setLocation(x, y);
            repaint();
            return;
        }

        if (rotate) {
            if (x > viewHeight >> 1) { //下翻
                if (eof && currentLine + lineOfPage > mylines.size()) {
                    return;
                }
                currentLine += lineOfPage;

                prepareNextImage();
                repaint();
                return;
            } else { //上翻
                preparePreImage(lineOfPage);
                repaint();
                return;
            }
        } else {
            if (y > viewHeight >> 1) { //下翻
                if (eof && currentLine + lineOfPage > mylines.size()) {
                    return;
                }
                currentLine += lineOfPage;
                prepareNextImage();
                repaint();
                return;

            } else { //上翻
                preparePreImage(lineOfPage);
                repaint();
                return;
            }
        }
    }

    void saveRec() {
        showMenu = false;
        currentWindow = null;
        fsa.close();

        Record.deleteRecordStore("avbookmark");

        Record record = new Record("avbookmark");
        record.open();

        if (currentBookMarkIndex == -1) { //无当前书签记录
            if (null != allBookMarks && allBookMarks.length == 9) { //当前书签列表已满
                for (int i = 0; i < 8; i++) { //删除第一个书签(即最老的书签)
                    allBookMarks[i] = allBookMarks[i + 1];
                }
            }
        }

        int index = 0;
        for (int i = 0;
                     null != allBookMarks && i < allBookMarks.length;
                     i++) { //将老的书签写入RMS

⌨️ 快捷键说明

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