这是 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/