【发布时间】:2010-02-03 08:54:22
【问题描述】:
我有一个带有图像的布局(嵌入在 ImageView 中)。我需要将图像(比如说)逆时针旋转 90 度。
我已经编写了代码来动画图像旋转...:
public class MainActivity extends Activity
{
private ImageView mImageView = null;
private Animation mRotateAnimation = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mImageView = (ImageView) findViewById(R.id.my_image);
mRotateAnimation = AnimationUtils.loadAnimation(this, R.anim.my_rotate_90);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
mImageView.startAnimation(mRotateAnimation);
return true;
}
return super.onTouchEvent(event);
}
}
图像平滑地旋转 90 度,但随后又恢复到原始状态。这就是 Android 文档所说的动画完成后会发生的事情。据推测,在动画结束的通知中,我应该转换 ImageView(或底层可绘制对象),并可能使其无效以触发重绘。
一切都很好,除了我找不到方法,也找不到任何其他人这样做的例子。
我尝试在mImageView 上使用getImageMatix/setImageMatrix,但没有明显效果。 Drawable 的子类可以旋转图像,但是 ImageView 上没有 setDrawable() 方法,所以我不知道如何使用。
我搜索了示例;尽管其中一些涉及动画和旋转(尤其是 LunarLander),但它们都没有为 ImageView 设置动画,然后将其置于某种变换状态。
我肯定在这里遗漏了一些简单的东西...... aaaargh,你如何在布局中旋转 ImageView?
谢谢。
【问题讨论】:
-
我应该补充一点,90 度只是一个很好的圆形示例。旋转可以是任意度数,因此“为每个图像制作四个版本:0、90、180 和 270 度旋转”并不能作为解决方案......
标签: android