【问题标题】:Rotate image onclick issue [closed]旋转图像onclick问题[关闭]
【发布时间】:2012-06-14 07:18:50
【问题描述】:

我仍在处理一段代码,我想使用按钮顺时针和逆时针旋转图像,我尝试了以下代码:

case (R.id.clock):
            matrix.postRotate(90);
            matrix.postRotate(getDegreesFromRadians(angle), mid.x, mid.y);

        break;

        case (R.id.anticlock):
            float degrees = 0;
            degrees = degrees-10;
            matrix.postRotate(degrees); 
            break;

它正在工作但不是正确的方式,首先我必须按下按钮然后单击 imageview 来旋转图像。有什么帮助吗?

我也在这里问过这个问题Android Rotate image ontouch 但现在我想要它使用按钮

【问题讨论】:

  • 此代码不完整。 imageview.setOnclickListener() 发生了什么?
  • @ariefbayu 你可以找到我更新的答案,我已经提到了链接,
  • 如果是这种情况,你会在按钮点击中调用view.setImageMatrix(matrix);吗?
  • @ariefbayu 当我点击按钮时应用程序崩溃
  • 不要照原样。回头看看你的相关问题并像你在那里一样初始化view

标签: android image onclick rotation


【解决方案1】:

这是我通常做的。我用这个方法创建静态 Util 类:

public static Bitmap rotate(Bitmap bitmap, int degree) {
    int w = bitmap.getWidth();
    int h = bitmap.getHeight();

    Matrix mtx = new Matrix();
    mtx.postRotate(degree);

  return Bitmap.createBitmap(bitmap, 0, 0, w, h, mtx, true);
}

然后,我像这样使用它:

case 21: // ROTATE LEFT
    ImageProcessActivity.processedBitmap = ImageUtil.rotate(ImageProcessActivity.processedBitmap, -90);
    d = new BitmapDrawable(ImageProcessActivity.processedBitmap);
    ImageProcessActivity.selectedImage.setImageDrawable(d);

break;
case 22: // ROTATE RIGHT
    ImageProcessActivity.processedBitmap = ImageUtil.rotate(ImageProcessActivity.processedBitmap, 90);
    d = new BitmapDrawable(ImageProcessActivity.processedBitmap);
    ImageProcessActivity.selectedImage.setImageDrawable(d);
break;

您看,在我的代码中,我将正在显示的图像与 ImageView 分开。这样,我可以轻松地操作图像而无需 ImageView 的麻烦。 ImageView,顾名思义,仅用于查看图像。不是操纵的来源。

【讨论】:

    【解决方案2】:

    您必须通知您的视图已更改,以便 android 重新渲染它。视图不是 frameRate 渲染的,所以在更改矩阵后这样做:

    yourView.invalidate();
    

    应该工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      • 1970-01-01
      相关资源
      最近更新 更多