SVG 8k图像缩放/翻译

时间:2019-07-10 19:55:38

标签: android svg

我有svg文件作为资源。它包含大约2000个复杂的详细形状。大多数形状是贝塞尔曲线,可以在android.graphics.Path中进行转换。我需要为此图片创建具有缩放/平移功能的屏幕。

  1. 我尝试了一种经典方式:

    val picture = Picture()
    val canvas = picture.beginRecording(svgWidth, svgHeight)
    paths.forEach { canvas.draw(it) }
    picture.endRecording()
    val pictureDrawable = PictureDrawable(picture)
    imageView.setImageDrawable(pictureDrawable)
    

使用这种方法,图片可以正确渲染,但是在缩放或缩放的情况下,FPS开始下降到4-9。在高端设备上,它停留在25。所以这是不可接受的。

  1. 作为第二个解决方案,我准备了具有少量位图图层的异步帧提供程序。位图是基于svg创建的。有一个矩阵更改侦听器,它调用新的帧请求。在创建下一帧期间,将显示前一帧,并且由于缩放的位图,用户可以看到带有伪像的图像40-100ms。使用此解决方案时,FPS为60,但是图像导航操作期间的图像质量很差。看起来还可以使用,但远非理想。

我检查了Chrome如何与svg配合使用,看起来它呈现了异步准备的位图网格。但是缩放后,它会掉落上一个网格,而我需要提供无缝导航。我感谢任何想法。谢谢

ps。在ios上,UIBezierPath在使用相同的资源时效果很好。

0 个答案:

没有答案