如何仅旋转图像,而不旋转Imageview

时间:2019-11-12 07:51:54

标签: android android-intent android-imageview

我正在捕获图像(以横向模式)并发送到nextActivity imageview。旋转图像时,整个图像视图随图像一起旋转。

如何仅实现捕获图像的旋转,而不是整个图像视图的旋转。 这就是我尝试过的

  <androidx.appcompat.widget.AppCompatImageView
                    android:id="@+id/ivDocument"
                    android:layout_width="150dp"
                    android:layout_height="95dp"
                    android:layout_alignParentTop="true"
                    android:layout_centerInParent="true"
                    android:contentDescription=""
                    android:elevation="10dp"
                    android:scaleType="centerCrop"
                    android:src="@drawable/ic_take_photo" />

在设置时-在onActivityResult内部

     if (resultCode == Activity.RESULT_OK && requestCode == 1000) {
        docImage = data!!.getStringExtra("imagePath")
        val fileUri = Uri.parse(docImage)
        ivDocument.setImageURI(fileUri)
        ivDocument.rotation = 270f

        } 

输出-图像随imageview旋转(正方形框) 预期-仅图像应旋转而不是imageview

如果可以的话,有人可以帮我吗

2 个答案:

答案 0 :(得分:0)

您可以使用图像矩阵来做到这一点:

val matrix = Matrix()
matrix.reset()
matrix.postRotate(270f)
ivDocument.setImageMatrix(matrix)

答案 1 :(得分:0)

旋转ImageView:

的另一种简单方法
  

更新:

必填导入:

import android.graphics.Matrix;
import android.widget.ImageView;

代码:(假设已经定义了imageView, angle, pivotXpivotY

Matrix matrix = new Matrix();
imageView.setScaleType(ImageView.ScaleType.MATRIX);   //required
matrix.postRotate((float) angle, pivotX, pivotY);
imageView.setImageMatrix(matrix);

此方法不需要每次都创建一个新的位图。

  

注意::要在运行时在ontouch上旋转ImageView,您可以在ImageView上设置onTouchListener并通过添加最后两个来旋转它   上面的代码中的行(即postRotate矩阵并将其设置在imageView上)   触摸监听器ACTION_MOVE部分中的“”部分。