制作安卓PDF阅读器:七、实现多实例打开、文档目录树

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了制作安卓PDF阅读器:七、实现多实例打开、文档目录树相关的知识,希望对你有一定的参考价值。

参考技术A

无论什么平台,任何查看器都理应支持多实例模式。不仅仅要支持多实例模式,还要可以切换到单实例模式,而且在多实例下,在外部App重复打开同一文件,可跳转至已有实例,而不会重复打开相同的多实例,这便是设计。

为此,需大量运用 static 全局变量。不必担心内存泄漏,只要不崩溃,就可以在 onDestroy 中释放引用。若是不慎崩溃,整个虚拟进程都被关闭了,又有什么可担心的呢?

从桌面打开主界面有两种选择:

主界面UI

底栏:【前进,后退,搜索,书签大纲,宫格更多】

宫格更多 第二底栏(底栏之上)
宫格:【夜间模式,历史记录,书签,设置,缩略图模式,转屏,朗读,页面跳转,进度条,小缩略图,左侧小缩略图,右侧小笔记】

底栏:【退出程序,退离程序,返回】

尼玛这些慢慢做,够我做一年……

先从底栏做起吧,然后定制底栏,然后宫格及其变形动画。

燃鹅时间有限,所以可能取消动画,取消自定义,速战速决……

优化 TellH / RecyclerTreeView :

其实 listview 也能达到类似的效果(见下方),不过既然有人(似乎是抖音安卓团队)专门抽离出了libarary,就不必再造轮子了,改进就行。寥寥二三文件就不必新建库模块了,源码拉直接拉进去,简单又省事。

目录对话框:viewpager,并排【书签,目录,注释列表】

Dialog + viewpager + FragmentPagerAdapter + 以上三个Fragment

需注意 FragmentPagerAdapter 的构造参数。应当传入 getChildFragmentManager() 而不是 getSupportFragmentManager(),否则因为这里是 Dialog 嵌套 Fragment,传全局的FragmentManager会导致APP崩溃(No view found for id … for fragment … 异常)。

既然决定使用 Dialog 了,不妨直接上 DialogFragment。后者的配置更加灵活,既可以当做 Dialog 弹出对话框,又可以选择将之当作普通的 Fragment ,直接加载进入主界面布局。

对话框界面设计分三层:

Toolbar【各种小按钮】
viewpager【书签,目录,注释列表】
TabLayout【书签,目录,注释列表】

拉取PDF目录,需要用到的API有:FPDFBookmark_GetFirstChild、FPDFBookmark_GetNextSibling、FPDFBookmark_GetTitle、FPDFBookmark_GetDest,没有编辑功能。

其实 PDF 的书签目录除了页码外,还可以包含一些视图参数,大概是缩放、页面位置这些。既然PDFium不支持编辑书签,那暂时就这样。

记录一下复用这个目录树对话窗口引发的recyclerview不响应notifydatasetchanged调用的bug。(解决fragment嵌套viewpager再嵌套recyclerview导致recyclerview无法正常更新的BUG。)

dismiss并复用后,点击列表中的目录,目录不再展开,recyclerview不更新视图。但是 滚动 一下recyclerview(即使条目很少无法真正滚动,向上划一下也会有效果。),发现视图更新了,这证明逻辑处理并无问题。那么问题出在哪呢?

答案是 viewpager 的adapter不能被复用。关键在于这个adapter传入了一个getChildFragmentManager()对象。而这玩意儿在对话框dismiss后就会立即失效。所以即使视图是复用的,第二次的onCreateView也需要重新给viewpager设置adapter。

让你轻松实现对PDF文件的编辑修改

  对于经常使用的word、ppt等格式的文档我们直接打开就能够进行编辑修改,而PDF这种格式文档很多人却都不怎么会进行编辑修改。这是因为很多人不知道阅读器只能用来查看而不能修改文档。那如何编辑修改PDF页面内容呢?

 

  一般普通的文字类型的PDF文件都可以通过PDF编辑软件来修改编辑。所以要编辑PDF文件就需要PDF编辑器而不是用阅读器来打开PDF。

技术分享

  打开文档后,选择工具栏上的编辑内容工具,然后就可以在页面选择对象进行编辑了。

技术分享

  文字的操作和PPT一样,都是在对应的文本框中进行编辑的,可以选择添加文本工具,在页面插入一个文本框来输入文字。

技术分享

  选择文本内容后可以在属性窗格中选择设置文本的格式样式。包括字体、字型、颜色等。

技术分享

  页面中的图片选择后可以进行删除,移动位置,改变大小形状等操作。

技术分享?

  添加新的图片在“文档”菜单中选择“添加图像”,然后选择需要添加的图片就可以了。

  编辑完成后保存文档,然后可以用阅读器来打开刚刚编辑的PDF文档,查看文档的效果。

 

以上是关于制作安卓PDF阅读器:七、实现多实例打开、文档目录树的主要内容,如果未能解决你的问题,请参考以下文章

安卓手机如何打开.action文件?

如何的打开PDF电子书?

如何实现在线阅读PDF,word,Excel类的文档

PDF格式文档怎样编辑页面内容

有啥软件能在安卓平板上打开PDF,并在该PDF上做笔记?

电子书阅读器安卓版推荐 PDF阅读器也可轻松编辑文档了