FBReaderJ学习笔记(三):Footer底部状态栏更改

底部状态栏显示页码,电量和时间,原版还弄了个进度条,但是无论是它的OldStyle还是NewStyle都不好看,那个进度条完全是多余的。那就动手改吧,我们最终实现的效果是这样的。

FBReaderJ学习笔记(三):Footer底部状态栏更改

关键在org.geometerplus.fbreader.fbreader.FBView这个类中。这里的结构是这样的。

FBReaderJ学习笔记(三):Footer底部状态栏更改

因为比较简单,我直接贴代码了。

首先是Footer类。

        //右侧信息

        protected String buildInfoString(String separator) {

            final StringBuilder info = new StringBuilder();

            final FooterOptions footerOptions = myViewOptions.getFooterOptions();

//            if (footerOptions.ShowProgress.getValue()) {

//                info.append(pagePosition.Current);

//                info.append("/");

//                info.append(pagePosition.Total);

//            }

            if (footerOptions.ShowBattery.getValue()) {

                if (info.length() > 0) {

                    info.append(separator);

                }

                info.append(myReader.getBatteryLevel());

                info.append("%");

            }

            if (footerOptions.ShowClock.getValue()) {

                if (info.length() > 0) {

                    info.append(separator);

                }

                info.append(ZLibrary.Instance().getCurrentTimeString());

            }

            return info.toString();

        }

        //左侧进度页码

        protected String buildProgressString(PagePosition pagePosition){

            final StringBuilder info = new StringBuilder();

            final FooterOptions footerOptions = myViewOptions.getFooterOptions();

            if (footerOptions.ShowProgress.getValue()) {

                info.append(pagePosition.Current);

                info.append("/");

                info.append(pagePosition.Total);

            }

            return info.toString();

        }

然后在FooterOldStyle和FooterNewStyle中绘制出相应的信息,同时注释掉绘制进度条的部分。

            // draw info text

            final String infoString = buildInfoString(" | ");

            final String progressString=buildProgressString(pagePosition);

            final int infoWidth = context.getStringWidth(infoString);

            context.setTextColor(fgColor);

            context.drawString(right - infoWidth, height - delta, infoString);

            context.drawString(left, height - delta, progressString);

 

你可能感兴趣的:(reader)