2

我正在尝试在触摸时相对于其中心旋转圆形图像。

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

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

请看下图: 在此处输入图像描述

请分享您对这个问题的想法。

任何形式的帮助将不胜感激。

谢谢

4

3 回答 3

1

你需要这样:

在此处输入图像描述

步骤 1. 将 JitPack 存储库添加到您的构建文件中将其添加到存储库末尾的根 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. 

完整代码:

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

于 2019-02-15T10:37:37.873 回答
0

对于旋转图像,请参见:Android:将 imageview 中的图像旋转一个角度

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

于 2012-10-26T10:33:25.737 回答
-1

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

在圆圈中,我们使用一点点三角法来计算角度,所以我们必须取一个基数,它对应 (x0, y0) 和其他点对应 (x1, y1)。现在根据我们的公式,我们需要给出两个参数,即BaseParpendicular。所以basex1-x0parpendiculary0-y1。请尝试一下,我认为它会帮助你!

于 2012-10-26T13:55:53.943 回答