当前位置: 代码迷 >> Android >> FBReaderJ学习笔记(3):Footer底部状态栏更改
  详细解决方案

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

热度:17   发布时间:2016-04-28 02:20:59.0
FBReaderJ学习笔记(三):Footer底部状态栏更改

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

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

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

首先是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);