我有svg文件作为资源。它包含大约2000个复杂的详细形状。大多数形状是贝塞尔曲线,可以在android.graphics.Path中进行转换。我需要为此图片创建具有缩放/平移功能的屏幕。
我尝试了一种经典方式:
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。所以这是不可接受的。
我检查了Chrome如何与svg配合使用,看起来它呈现了异步准备的位图网格。但是缩放后,它会掉落上一个网格,而我需要提供无缝导航。我感谢任何想法。谢谢
ps。在ios上,UIBezierPath在使用相同的资源时效果很好。