捏以缩放带有矢量图像的布局

时间:2019-11-26 10:01:39

标签: android kotlin pinchzoom gesturedetector

我有一个包含FrameLayout的布局,该布局又在其顶部具有不同数量的ImageViews。 (在任何给定时间只有一个可见,用户可以在它们之间切换/切换) 所有的ImageView都是Vector可绘制对象。

当我尝试实现“捏到缩放”功能时,遇到了各种问题。

使用解决方案1:

override fun onScale(detector: ScaleGestureDetector): Boolean {
     scaleFactor *= detector.scaleFactor
     scaleFactor = ((scaleFactor * 100)).toInt().toFloat() / 100
     scaleFactor = max(MIN_SCALE_FACTOR, min(scaleFactor, MAX_SCALE_FACTOR))

     frameView.scaleX = scaleFactor
     frameView.scaleY = scaleFactor
     frameView.pivotX = e.x
     frameView.pivotY = e.y
}

基本上,我对两次点击缩放使用相同的逻辑,并且在这里工作正常(我还应用了一些动画来使其平滑)。

但是,在缩小缩放时,图像会出现卡顿现象,尤其是当我不断地用两根手指按住屏幕时,您会看到它是如何不断跳跃的。

我尝试了解决方案2:

正在使用此OnPinchListener:https://www.dev2qa.com/android-pinch-zoom-layout-example/

但是:

1 。此处的示例使用简单的ImageView(非矢量)。     当我使用可绘制的矢量进行尝试时,图像会变形并变得像素化和丑陋。

2 。就我而言,我需要将scale(zoom)应用于     frameView(保存图像的FrameLayout),因此使用“ setImageBitmap”方法     与这里无关。

因此,基本上,这种解决方案似乎无法用于我的情况。

还有其他方法(或者我在第一个解决方案中可能错过的方法)可以使缩放工作顺畅吗?

0 个答案:

没有答案