这是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);
}
注意,文档怎么说
设置视图围绕枢轴点旋转的程度。值增加将导致顺时针旋转。
我想更新我的答案,以显示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);
通常,人们也可以通过XML设置此类View动画。但是,由于必须在其中指定绝对度值,因此连续旋转将重复自己,而不是在前一个旋转的基础上完成一个完整的圆。因此,我选择在上面的代码中演示如何执行此操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句