我正在开发一个包含图像缩放、旋转和平移操作的功能。这些操作对我来说都很好使。
现在,我需要检查视图相对于父级的位置。我已经编写了以下代码以在缩放和平移后获取视图位置。
private fun findViewPosition(view: View) {
val left = view.left.toFloat()
val top = view.top.toFloat()
val px = view.pivotX
val py = view.pivotY
val tx = view.translationX
val ty = view.translationY
val sx = view.scaleX
val sy = view.scaleY
val rx = view.rotationX
val ry = view.rotationY
val r = view.rotation
// Getting correct value for startX and startY after scale and translate.
// After the rotation, I'm not sure how to applied the formula.
val startX = left - (view.width * sx - view.width) / 2 + tx
val startY = top - (view.height * sy - view.height) / 2 + ty
Log.w("Start", "$startX , $startY")
val endX = left + view.width + (view.width * sx - view.width) / 2 + tx
val endY = top + view.height + (view.height * sy - view.height) / 2 + ty
Log.w("End","$endX , $endY")
}
我在查找视图旋转后的位置时遇到了困难。如果有人可以帮助我,那将是对我的极大帮助。
这里是示例代码,如果您想尝试该代码:AndroidViewScaleRotateTranslate.zip
谢谢!