计算旋转视图的滚动手势值

时间:2016-11-14 19:36:03

标签: android android-animation coordinate-transformation

我正在尝试使用旋转,缩放和滚动功能创建自定义ImageView。我正在使用GestureDetector.SimpleOnGestureListener来获取滚动值。

旋转和缩放功能正常工作,滚动功能也正常工作,直到我以某个角度旋转ImageView。例如,如果我在ImageView上从左向右滚动,onScroll会返回distanceX的某个值,distanceY则会返回0。但是,如果我将ImageView旋转90度,onScroll会为distanceX返回大约0,对于同一手势则会返回distanceY的某些值。

我尝试使用Matrix使用以下方法映射这些“距离”值:

private PointF rotate(float distanceX, float distanceY) {
    Matrix transform = new Matrix();
    transform.setRotate(imageView.getRotation());

    float[] pts = new float[2];

    pts[0] = distanceX;
    pts[1] = distanceY;

    transform.mapPoints(pts);

    return new PointF(pts[0], pts[1]);
}

但它不起作用。那么如何获得旋转视图的滚动值? 谢谢你的帮助。

0 个答案:

没有答案