最近一直在做毕业设计,是有关pdf阅读的app。之前也上网找了很多开源库,发现MUPDF确实是最多人推荐的,下个实现案例感觉确实功能挺多的。废话不多说,作为在下的第一篇处女座技术博客,希望能起个好头吧。
因为MUPDF库还是不少代码量的,自然不可能一下子把源码分析完,此次分析的是个人认为比较直接的MuPDFActivity类。
MuPDFActivity是一个具体实现类,是直接阅读文档时所运用到的类:其中包括点击界面触发的一系列事件、对文档进行复制、重排、搜索以及其他的注解点击事件。
@Override protected void onHit(Hit item) { switch (mTopBarMode) { case Annot: if (item == Hit.Annotation) { showButtons(); mTopBarMode = TopBarMode.Delete; mTopBarSwitcher.setDisplayedChild(mTopBarMode.ordinal()); } break; case Delete: mTopBarMode = TopBarMode.Annot; mTopBarSwitcher.setDisplayedChild(mTopBarMode.ordinal()); // fall through default: // Not in annotation editing mode, but the pageview will // still select and highlight hit annotations, so // deselect just in case. MuPDFView pageView = (MuPDFView) mDocView.getDisplayedView(); if (pageView != null) pageView.deselectAnnotation(); break; } }
这是在阅读界面时,点击界面发生的事件,包括所有功能下你点击界面时都会触发的方法。代码很简单,就是在哪种条件下(名字起得一下就看懂了)TopBar所显示的具体工具条。
public void OnCopyTextButtonClick(View v) { mTopBarMode = TopBarMode.Accept; mTopBarSwitcher.setDisplayedChild(mTopBarMode.ordinal()); mAcceptMode = AcceptMode.CopyText; mDocView.setMode(MuPDFReaderView.Mode.Selecting); mAnnotTypeText.setText(getString(R.string.copy_text)); showInfo(getString(R.string.select_text)); }这个也很明显,就是点击复制按钮时所触发的事件,其实后面那些触发事件都很明显,这个库唯一令我觉得有点麻烦的就是注释不是很多,英文注释看起来也很吃力。所以我经常会在每个方法里面加一句Toast消息提示框,用这个来验证我的猜想还是挺方便的。
马上有事要出去了,我的第一篇处女博客就到这吧,后面还会有继续的分析。
这个只是我的第一次尝试,我也知道自己很水,所以还有很多要学习的。