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

标签 java android imageview

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

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 实现相同的效果,以防您还针对运行 Gingerbread (v10) 或更低版本的 Android 设备。

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);

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

关于java - 每次单击按钮时如何在 ImageView 中旋转图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28259534/

相关文章:

android - SimpleCursorAdapter 替代品

java - Android - ViewPager 不显示 fragment

java - 动态scaleType = centerCrop

android - OnTouchListener 在 TranslationAnimation 期间不进行翻译

java - 如何让 Jersey 客户端使用 HttpsURLConnection 中设置的 defaultSSLSocketFactory?

Android Google 登录 DEVELOPER_ERROR 10

java - 基本 3D 碰撞检测问题

iphone - 从 URL 加载图像并在 iPhone 应用程序中显示它的更快方法

java - Rhapsody 插件测试

Java Spring Boot 加上 Spring Batch 创建 Jar 并仅运行特定作业