android - 为什么图像上的油漆变慢?

标签 android android-layout android-canvas paint

在我的 Android 绘画应用程序中,我将在 Canvas 上绘画。 但有时我在那幅画之前有图像。那时我的油漆变慢了。问题出在哪里??

只在 Canvas 上绘画的代码:

@Override
    protected void onDraw(Canvas canvas) {

        //canvas.drawColor(0, PorterDuff.Mode.CLEAR);
        // set the Canvas Color
        canvas.drawColor(canvasColor); // edited

        canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint); 

        canvas.drawPath(mPath, mPaint);

    }

获取图像作为背景的代码是:

 @Override
    protected void onDraw(Canvas canvas) {

        //canvas.drawColor(0, PorterDuff.Mode.CLEAR);
        // set the Canvas Color
        canvas.drawColor(canvasColor); // edited

        if(!(imagePath==null))
        {
            Bitmap tempBitmap = BitmapFactory.decodeFile(imagePath); // from the gallery
            photoBitmap = Bitmap.createScaledBitmap(tempBitmap, display.getWidth(), display.getHeight(), true);
        }
        if(!(imagePath==null))
        {
            canvas.drawBitmap (photoBitmap,0,  0, null);
        }


        canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint); 
     canvas.drawPath(mPath, mPaint);

    }

现在我不知道为什么我在 Canvas 上绘画时绘画速度变慢,以及是否有图像作为背景。 请帮助我。 谢谢。

最佳答案

由于 onDraw 函数中的 Bitmap tempBitmap = BitmapFactory.decodeFile(imagePath); 这行,您的应用程序可能会变慢。如果您在每个实例中都更改位图,那么您应该在 onDraw 之外声明它,只需为其分配新的位图,如果您不更改它,则只需在开始时初始化并分配对象,而在 onDraw 中,只需在 Canvas 中绘制它。

关于android - 为什么图像上的油漆变慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8351759/

相关文章:

android - 如何在android中的CalendarView中仅显示2周?

android - TextView 内容在底部被截断

android - 自定义 PathEffect 的描边帽

android - 如何使用 matrix.preScale(x,y)

Android:将 Canvas 绘制到 View

android - Here Maps Android SDK位置指示器旋转

android - 无限项的无限滚动

android - 调试低内存崩溃(线程相关?)

android - 具有旋转 View 的约束布局

android - 如何在布局和其他地方确保 android 上的正确/直接尺寸缩放?