如何在每次单击按钮时在 imageview 中旋转图像? [英] How to rotate image in imageview on button click each time?

查看:25
本文介绍了如何在每次单击按钮时在 imageview 中旋转图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是 java 代码.我正在从图片库中获取图片.我有一个 Button 和一个 ImageView.它只旋转一次.当我再次单击按钮时,它没有旋转图像.

This is java code.I am getting image from image gallery.I have one Button and one ImageView. It is rotating only one time.When I again click button it is not rotating image.

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.

<小时>

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

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

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

Introduce an instance field to track the rotation degrees as above and use it as:

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 设置这样的查看动画.但是,由于您必须在其中指定绝对度数,因此连续的旋转将自行重复,而不是在前一个旋转的基础上完成一个完整的循环.因此,我选择在上面的代码中展示如何做到这一点.

Usually one can setup such View animations through XML as well. But, since you have to specify absolute degree values in there, successive rotations will repeat themselves instead of building upon the previous one to complete a full circle. Hence, I chose to show how to do it in code above.

这篇关于如何在每次单击按钮时在 imageview 中旋转图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆