我有一个包含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”方法 与这里无关。
因此,基本上,这种解决方案似乎无法用于我的情况。
还有其他方法(或者我在第一个解决方案中可能错过的方法)可以使缩放工作顺畅吗?