每次单击按钮时如何在图像视图中旋转图像?

How to rotate image in imageview on button click each time?

这是 java code.I 正在从图像中获取图像 gallery.I 有一个 Button 和一个 ImageView。它只旋转一个 time.When 我再次单击按钮它没有旋转图像。

public class EditActivity extends ActionBarActivity
{
private Button rotate;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_edit);
    rotate=(Button)findViewById(R.id.btn_rotate1);
    imageView = (ImageView) findViewById(R.id.selectedImage);
    String path = getIntent().getExtras().getString("path");
    final Bitmap bitmap = BitmapFactory.decodeFile(path);
    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
    imageView.setImageBitmap(Bitmap.createScaledBitmap(bitmap, 510, 500,
            false));
    rotate.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
          {                  
            imageView.setRotation(90);


        }
    });



}

将您的 onClick() 方法更改为

@Override
public void onClick(View v)
{                  
    imageView.setRotation(imageView.getRotation() + 90);
}

注意,docs 说了什么

Sets the degrees that the view is rotated around the pivot point. Increasing values result in clockwise rotation.


我想更新我的答案以展示如何使用 RotateAnimation 实现相同的效果,以防您还针对 Android 设备 运行 Gingerbread (v10)或以下。

private int mCurrRotation = 0; // takes the place of getRotation()

如上所述引入一个实例字段来跟踪旋转度数并将其用作:

mCurrRotation %= 360;
float fromRotation = mCurrRotation;
float toRotation = mCurrRotation += 90;

final RotateAnimation rotateAnim = new RotateAnimation(
        fromRotation, toRotation, imageview.getWidth()/2, imageView.getHeight()/2);

rotateAnim.setDuration(1000); // Use 0 ms to rotate instantly 
rotateAnim.setFillAfter(true); // Must be true or the animation will reset

imageView.startAnimation(rotateAnim);

通常也可以通过XML设置这样的View animations。但是,由于您必须在其中指定绝对度数,因此连续的旋转将自行重复,而不是在前一个旋转的基础上完成一个完整的圆。因此,我选择在上面的代码中展示如何做到这一点。