【发布时间】:2020-02-17 19:50:54
【问题描述】:
我正在尝试让用户能够从边缘缩放图像(触摸边缘然后拖动它) 我一直在寻找一种方法来使用 LayoutParams 动态更改视图大小,同时保持视图位置锚定到特定边缘。
fun View.setSize(width: Int, height: Int) {
val layoutP = layoutParams as ConstraintLayout.LayoutParams
layoutP.width = width
layoutP.height = height
layoutParams = layoutP
requestLayout()}
尝试上述代码时的默认行为是更改视图的宽度和高度,同时保持中心点为中心点。
我尝试在更改宽度和高度后设置所需的 x,y 但这导致振动行为居中然后是我的新 x,y
我正在寻找与在缩放动画上设置 pivotY 和 pivotX 相同的效果。
【问题讨论】:
-
我认为您应该在执行拖动时尝试使用缩放动画,并且仅在触摸完成时修改布局参数。每一帧都重做布局代价太高而无法平滑。
-
我实际上是这样做的,但主要问题仍然存在,当触摸完成时会发生振动(调整大小将视图移动到中心,然后我将其移回锚定)