如何在Android Studio中重新渲染画布上的XML图像文件/缩放时模糊的XML图像

时间:2019-05-12 14:18:16

标签: java android canvas

我创建一个尺寸为png图像的画布并将该图像设置为背景。之后,我想在其上绘制图标和其他svg图像(svg已在Android Studio的xml文件中转换)。

我想放大它以查看更多详细信息,并为此实现了chrisbanes / PhotoView库。

现在,当我放大图像时,xml文件总是变得模糊。而且我在互联网上搜索了很多,但没有找到解决方法。

我认为我需要在缩放时更新画布,以便重新渲染图像,但是我不知道该怎么做。

抱歉,如果缺少某些内容,我是初学者。只是询问更多信息,如果您需要它:)

activity_canvas.xml:

<com.github.chrisbanes.photoview.PhotoView
    android:id="@+id/active_level"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:layout_marginStart="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginTop="60dp"
    android:layout_marginBottom="70dp"
    android:adjustViewBounds="true"
    android:contentDescription="@string/active_level"
    android:scaleType="centerInside" />

DrawCanvas.java:

// create bitmap, define canvas size as bitmap size and attach bitmap to canvas
    Bitmap bitmap = BitmapFactory.decodeResource(currentContext.getResources(), R.drawable.empty);
    tempBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.RGB_565);

    tempCanvas = new Canvas(tempBitmap);
    tempCanvas.drawBitmap(bitmap, 0, 0, null);

// draw fruits
    Drawable fruits = currentContext.getResources().getDrawable(R.drawable.fruits);
    fruits.setBounds(0, 0, tempCanvas.getWidth(), tempCanvas.getHeight());
    fruits.draw(tempCanvas);

PhotoView imageLevel = findViewById(R.id.active_level);
imageLevel.setImageDrawable(new BitmapDrawable(currentContext.getResources(), tempBitmap));

0 个答案:

没有答案