在Android中缩放,旋转和平移操作后,如何获得相对于父视图的视图位置?

问题描述

我正在开发一项功能,其中包括图像缩放,旋转和平移操作。所有这些操作对我来说都很好。

现在,我需要检查相对于父视图的位置。我开发了以下代码获取缩放和平移后的视图位置。

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")
}

旋转视图后,我很难找到位置。如果有人可以帮助我,这将对我有很大帮助。

Translate + Scale

Translate + Scale + Rotate

如果要尝试使用以下代码,请参见以下示例代码AndroidViewScaleRotateTranslate.zip

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...