如何在Android中触摸相对于其中心的圆形方式旋转图像

时间:2012-10-26 09:59:28

标签: android geometry ontouchlistener image-rotation

我试图将圆形图像相对于其中心旋转一圈。

我知道可以使用 OnTouchListener和onTouch()方法 ....通过使用MotionEvent.ACTION_DOWN,MotionEvent.ACTION_MOVE和MotionEvent.ACTION_UP事件来完成此操作。 但是我无法找到旋转角度......从初始位置触摸不同点(即将初始位置设为0度并在旋转后找到每个角度...如0,90.180,270度。 ..etc)。

基本上我的想法是在将图像旋转一定角度后确定图像的实际位置。

请看下图: enter image description here

请分享您对此问题的看法。

任何形式的帮助都将受到高度赞赏。

由于

3 个答案:

答案 0 :(得分:2)

您需要这样:

enter image description here

步骤1.将JitPack存储库添加到您的构建文件中 将其添加到存储库末尾的root build.gradle中:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

第2步。添加依赖项

dependencies {
    implementation 'com.github.sheetalkumar105:ZoomImageView-android:1.01'
}

第3步。在布局中添加ZoomImageView

<com.impulsive.zoomimageview.ZoomImageView
  android:layout_width="match_parent"
  android:layout_height="300dp"
  android:src="@drawable/sample"
  android:scaleType="matrix"
  app:rotation="true" 
  app:scaledown="true"
  />


app:rotation="true" // Allow to rotate image in view. Default value is true.


app:scaledown="true" // Allow to ZoomOut less than container size. Default value is false. 

Zoom or Rotate image on pinch or touch in Android ImageView

完整代码:

https://github.com/sheetalkumar105/ZoomImageView-android/blob/master/zoomimageview/src/main/java/com/impulsive/zoomimageview/ZoomImageView.java

答案 1 :(得分:0)

有关旋转图像,请参阅:Android: Rotate image in imageview by an angle

可以计算相对于基部的触点角度:arctan((x1 - x0)/(y1 - y0))其中(x0,y0) - 圆的中心,(x1,y1) - 触摸点。请注意y1 == y0的情况。

答案 2 :(得分:-1)

要找到任何圆的角度,公式是正确的,即 Math.toDegrees(Math.atan2(x1-x0,y0-y1))

在圆圈中,我们使用一点点三角法来计算角度,因此我们必须取一个基础来修正(x0,y0)和其他点corrds(x1,y1)。现在根据我们的公式,我们需要给出两个参数,即 Base Parpendicular 。所以 base x1-x0 垂直 y0-y1 。请试一试,我认为它会对你有所帮助!!