Android View 通过平移旋转缩放后,顶点映射
Posted 匆忙拥挤repeat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android View 通过平移旋转缩放后,顶点映射相关的知识,希望对你有一定的参考价值。
View 通过平移、旋转、缩放后,其本身的 left、top、right、bottom、width、height是没有变化的。
平移:setTranslationX(), setTranslationY() ;
旋转:setRotationX(), setRotationY() ;
缩放:setScaleX(), setScaleY() 。
在三种操作后,获取新的 ltrb、w、h 就需要重新计算了
/**
* author: stone
* email: aa86799@163.com
*
* view 平移、旋转、缩放 变换后,计算新的 ltrb; ltrb ==> dst[0,1,2,7]
*/
fun mapPoints(model: View): FloatArray
val l = model.left
val t = model.top
val r = model.left + model.width
val b = model.top + model.height
val dst = floatArrayOf(
l, t,
r, t,
l, b,
r, b)
val matrix = Matrix()
val cx = l + (r - l) / 2
val cy = t + (b - t) / 2
matrix.postTranslate(model.translationX, model.translationY)
matrix.postRotate(model.rotate, cx, cy) // 以view的中心点旋转
matrix.postScale(model.scaleX, model.scaleY, cx, cy)
matrix.mapPoints(dst)
return dst
以上是关于Android View 通过平移旋转缩放后,顶点映射的主要内容,如果未能解决你的问题,请参考以下文章