在Android中滚动页面时如何在画布上显示上一个路径?

用户123456

我有pdf文件,我正在弯曲的画布上绘制路径,并且在滚动pdf页面时尝试显示前一个画布,为此我保存了pdf页码和路径。

我的代码:

这是onTouch:在ACTION_DOWN中,我每次都为path创建一个新的构造函数。调用它时,新路径正在删除旧路径并覆盖旧路径。

switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:

        signaturePaint = new Paint(Paint.DITHER_FLAG);
        signaturePaint.setAntiAlias(true); 
        signaturePaint.setDither(true);
        signaturePaint.setColor(0xff0000cc); 
        signaturePaint.setStyle(Paint.Style.STROKE); 
        signaturePaint.setStrokeJoin(Paint.Join.ROUND); 
        signaturePaint.setStrokeCap(Paint.Cap.ROUND);
        signaturePaint.setStrokeWidth(1);

          **signaturePath = new Path();// When calling this my problem occure**

        if (Constants.draw) {

            Point p = getPagePositionOnScreen(currentPage);

            int currentPageWidth = getCurrentPageWidth(currentPage);
            int currentPageHeight = (int) getCurrentPageHeight(currentPage);
            if (currentPageWidth < x || currentPageHeight < y) {

            } else {
                if (Constants.isSignatureSelected)
                    signaturePath.moveTo(x, y);
                // pdfcanvas.moveTo(x, y);
            }
            firstX = x;
            firstY = y;
        }
        break;
    case MotionEvent.ACTION_MOVE:
        if (Constants.draw) {

            mPageNumber.add(currentPage);
            // int[][] currentPagesSize = pagesProvider.getPageSizes();
            float pageMarginX = getCurrentMarginX();
            float pageMarginy = getCurrentMarginY();
            // int pageWidth = currentPagesSize[0][0];
            // int pageHeight = currentPagesSize[0][1];
            int currentPageWidth = getCurrentPageWidth(currentPage);
            int currentPageHeight = (int) getCurrentPageHeight(currentPage);
            if (currentPageWidth < x || currentPageHeight < y) {

            } else {
                resetDirtyRect(x, y);
                int historySize = event.getHistorySize();
                for (int i = 0; i < historySize; i++) {
                    float historicalX = event.getHistoricalX(i);
                    float historicalY = event.getHistoricalY(i);
                    expandDirtyRect(historicalX, historicalY);
                    if (Constants.isSignatureSelected)
                        signaturePath.lineTo(historicalX, historicalY);
                }

            }
        }


        break;
    case MotionEvent.ACTION_UP:
        if (Constants.draw) {


            firstX = x;
            firstY = y;
            if (Constants.isSignatureSelected)
                saveCanvas();
        }
        break;
    }

    invalidate((int) (dirtyRect.left - HALF_STROKE_WIDTH),
            (int) (dirtyRect.top - HALF_STROKE_WIDTH),
            (int) (dirtyRect.right + HALF_STROKE_WIDTH),
            (int) (dirtyRect.bottom + HALF_STROKE_WIDTH));

    firstX = x;
    firstY = y;

    return true;

为了在数组列表中保存canvas:这是将我的画布路径保存在arraylist中

private void saveCanvas() {

    SaveCanvasDrawing canvasDrawing = new SaveCanvasDrawing();

    canvasDrawing.setPath(signaturePath);
    canvasDrawing.setPdfPageNumber(currentPage);
    canvasDrawing.setxAxis(firstX);
    canvasDrawing.setyAxis(firstY);

    mSavingCanvasDrawing.add(canvasDrawing);

    mCanvasHashMap.put(currentPage, mSavingCanvasDrawing);


}

为了在画布上显示路径:在else块中的此方法中,我正在重置路径。当我调用此画布时,它并没有绘制我的路径。但是在调试时,我的路径不为null。但是,它没有在画布上显示路径。

private void redoCanvas() {


    if (mCanvasHashMap.containsKey(currentPage)) {
        mDrawingPath.clear();
        mPageNumber.clear();
        for (int j = 0; j < mSavingCanvasDrawing.size(); j++) {
            int pageNumber = mSavingCanvasDrawing.get(j).getPdfPageNumber();

            if (pageNumber == currentPage) {
                float xAxis = mSavingCanvasDrawing.get(j).getxAxis();
                float yAxis = mSavingCanvasDrawing.get(j).getyAxis();
                Path path = mSavingCanvasDrawing.get(j).getPath();


                mDrawingPath.add(path);
                mPageNumber.add(pageNumber);
            } else {
                signaturePath.reset();
                invalidate();
            }
        }
    } else {
        signaturePath.reset();
        invalidate();
    }
}

最后onDraw():在此方法中,我正在检查何时isSignatureSelected = false;。我正在调用保存的arraylist作为路径并绘制图形,这是我在redoCanvas()中重置路径时没有在画布上显示任何路径的问题。来自signaturePath。保护无效的onDraw(Canvas canvas){

    if (Constants.isSignatureSelected) {

        if (Constants.draw) {
            canvas.drawPath(signaturePath, signaturePaint);
        }
    } else {
        if (mPageNumber.contains(currentPage)) {
            for (Path p : mDrawingPath) {
                canvas.drawPath(p, signaturePaint);
            }
        }
    }

}
用户123456

是的,我有解决方案。在computeScroll()中,我创建Path的新构造函数,在onDraw()中,我检查路径的数组列表,并将路径添加到画布中

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在 RecyclerView 中显示下一个和上一个数据设置水平滚动

来自分类Dev

如何在Android中的ViewPager上从右到左获取上一个片段

来自分类Dev

如何根据我在android中遵循的路径返回上一个活动?

来自分类Dev

如何在一个页面中显示更多的网页?

来自分类Dev

如何在Android中的画布上的路径内绘制圆

来自分类Dev

在一个页面中执行两个动画,一个在画布上一个接一个地执行

来自分类Dev

如何在滑块中不显示上一个按钮和下一个按钮?

来自分类Dev

如何在PHP的文件夹中显示下一个和上一个导航?

来自分类Dev

返回Android中onBackPressed上的上一个片段

来自分类Dev

如何在滚动页面时制作一个“流血”图像的 div

来自分类Dev

如何在Android中的上一个活动中接收数据

来自分类Dev

如何在单击按钮时从微调器中获取下一个/上一个项目?

来自分类Dev

在将数据添加到垂直滚动的文档中时,如何使上一个零件可见?

来自分类Dev

如何在画布上创建一个悬停按钮?

来自分类Dev

回到Android中的上一个活动时如何保存列表视图位置

来自分类Dev

如何在nextjs中获取上一个网址

来自分类Dev

如何在 Javascript 中获取上一个日期?

来自分类Dev

Android:如何在列表中的OnItemLongClick上显示来自另一个ArrayList的数据

来自分类Dev

如何在android中关闭当前活动返回上一个活动?

来自分类Dev

如何回到android中的上一个活动?

来自分类Dev

如何在Windows Phone 8应用程序中以编程方式从一个画布上获取客感以在另一个画布上设置

来自分类Dev

如何在iOS中将UITableView的滚动位置设置为上一个Position

来自分类Dev

滚动上一个屏幕后如何获取上一个活动

来自分类Dev

如何在一个 FORM 上创建多个页面而不显示标签页

来自分类Dev

当页面返回上一个时返回被点击的元素

来自分类Dev

从新的html页面返回时,如何打开上一个活动选项卡

来自分类Dev

如何在SQL Server中获取上一个-上一个季度的月份和年份

来自分类Dev

Python tkinter - 如何创建一个在画布上滚动的实时 xy 图

来自分类Dev

如何在Wp8中显示图像我有一个流路径

Related 相关文章

  1. 1

    如何在 RecyclerView 中显示下一个和上一个数据设置水平滚动

  2. 2

    如何在Android中的ViewPager上从右到左获取上一个片段

  3. 3

    如何根据我在android中遵循的路径返回上一个活动?

  4. 4

    如何在一个页面中显示更多的网页?

  5. 5

    如何在Android中的画布上的路径内绘制圆

  6. 6

    在一个页面中执行两个动画,一个在画布上一个接一个地执行

  7. 7

    如何在滑块中不显示上一个按钮和下一个按钮?

  8. 8

    如何在PHP的文件夹中显示下一个和上一个导航?

  9. 9

    返回Android中onBackPressed上的上一个片段

  10. 10

    如何在滚动页面时制作一个“流血”图像的 div

  11. 11

    如何在Android中的上一个活动中接收数据

  12. 12

    如何在单击按钮时从微调器中获取下一个/上一个项目?

  13. 13

    在将数据添加到垂直滚动的文档中时,如何使上一个零件可见?

  14. 14

    如何在画布上创建一个悬停按钮?

  15. 15

    回到Android中的上一个活动时如何保存列表视图位置

  16. 16

    如何在nextjs中获取上一个网址

  17. 17

    如何在 Javascript 中获取上一个日期?

  18. 18

    Android:如何在列表中的OnItemLongClick上显示来自另一个ArrayList的数据

  19. 19

    如何在android中关闭当前活动返回上一个活动?

  20. 20

    如何回到android中的上一个活动?

  21. 21

    如何在Windows Phone 8应用程序中以编程方式从一个画布上获取客感以在另一个画布上设置

  22. 22

    如何在iOS中将UITableView的滚动位置设置为上一个Position

  23. 23

    滚动上一个屏幕后如何获取上一个活动

  24. 24

    如何在一个 FORM 上创建多个页面而不显示标签页

  25. 25

    当页面返回上一个时返回被点击的元素

  26. 26

    从新的html页面返回时,如何打开上一个活动选项卡

  27. 27

    如何在SQL Server中获取上一个-上一个季度的月份和年份

  28. 28

    Python tkinter - 如何创建一个在画布上滚动的实时 xy 图

  29. 29

    如何在Wp8中显示图像我有一个流路径

热门标签

归档