android pdf框架-3,基于recyclerview修改

基于recyclerview的实现版本

解析使用的是pdifum.这个库缺点是缩放功能不行.点击链接功能没有.只有渲染.

GitHub - danjdt/android-pdfviewer: A Android PDF Viewer that render pdf using PdfRenderer and displays it in a RecyclerView.

recyclerview的滑动并不是像ios那样,有很好的惯性,针对此,从ebookdroid中拿了flinger,因为recyclerview不能直接修改scroller,所以只有修改源码了,换了包名,避免冲突.

https://github.com/archko/pdf-recyclerview.git,这是修改recyclerview,添加了flinger,滑动更流畅,当然可以不用它.

修改几个bug

缩放的bug修改

上面源码中的缩放是针对view,如果要自定义linearlayoutmanager也是可以的,复杂度就提升不少了.

在这我只作view的缩放后映射到解码上面:

override fun onDraw(canvas: Canvas) {
        super.onDraw(canvas)
        canvas.save()
        canvas.translate(mTouchX, 0f)
        canvas.scale(mScaleFactor, mScaleFactor)
        canvas.restore()
    }

    override fun dispatchDraw(canvas: Canvas) {
        canvas.save()

        if (mScaleFactor == mMinZoom) {
            mTouchX = 0f
        }

        canvas.translate(mTouchX, 0f)
        canvas.scale(mScaleFactor, mScaleFactor)

        super.dispatchDraw(canvas)

        canvas.restore()
        invalidate()
    }

这是原来的缩放作了一些小修改的结果.修正事件,

当缩放手势完成后,需要处理解码的缩放,否则就是把原来的图片放大,会模糊,而不是真正的缩放.

private inner class ScaleListener : ScaleGestureDetector.SimpleOnScaleGestureListener() {
        override fun onScale(detector: ScaleGestureDetector): Boolean {
            if (mIsZoomEnabled) {
                mScaleFactor *= detector.scaleFactor
                mScaleFactor = Math.max(mMinZoom, Math.min(mScaleFactor, mMaxZoom))
                mMaxWidth = mWidth - mWidth * mScaleFactor
                //Log.d("PDFSDK", "mScaleFactor:$mScaleFactor")
                invalidate()
            }
            return true
        }

        override fun onScaleEnd(detector: ScaleGestureDetector) {
            super.onScaleEnd(detector)

            pdfRendererProxy?.a

相关推荐

  1. android pdf框架-3,基于recyclerview修改

    2024-02-19 11:46:02       64 阅读
  2. Android基础-RecyclerView的优点

    2024-02-19 11:46:02       35 阅读
  3. vue3框架基本使用(基础指令)

    2024-02-19 11:46:02       20 阅读
  4. RecycleView基本使用及常见问题汇总

    2024-02-19 11:46:02       54 阅读
  5. android RecyclerView1.3.2与NestedScrollingParent的变化

    2024-02-19 11:46:02       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-19 11:46:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-19 11:46:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-19 11:46:02       87 阅读
  4. Python语言-面向对象

    2024-02-19 11:46:02       96 阅读

热门阅读

  1. 关于Http和Https

    2024-02-19 11:46:02       52 阅读
  2. CF1781 D. Many Perfect Squares [数学题]

    2024-02-19 11:46:02       53 阅读
  3. OpenCV中saturate_cast模板函数

    2024-02-19 11:46:02       50 阅读
  4. 1.函数模板基础

    2024-02-19 11:46:02       50 阅读
  5. 计算机网络课后第一章问答题

    2024-02-19 11:46:02       48 阅读
  6. 顺序表 严蔚敏 数据结构代码c语言

    2024-02-19 11:46:02       51 阅读