垂直旋转ImageView

时间:2014-12-25 10:48:54

标签: android xml animation android-animation

我想水平翻转图像视图的动画(围绕x轴)。我做了顺时针和逆时针动画。这是我用过的代码......

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <rotate 
        android:fromDegrees="0" 
        android:toDegrees="180" 
        android:pivotX="50%" 
        android:pivotY="50%" 
        android:duration="300" 
        android:fillAfter="true" 
        android:fillEnabled="true" />
</set>

我也想连续旋转它,每次翻转后都应暂停一下。

2 个答案:

答案 0 :(得分:6)

尝试使用相应的java逻辑跟踪XML代码,使用AnimationListener实现您的活动

animation1.xml

<?xml version="1.0" encoding="utf-8"?>
    <scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="250"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="0.0"
    android:toYScale="1.0" />

animation2.xml

<?xml version="1.0" encoding="utf-8"?>
     <scale xmlns:android="http://schemas.android.com/apk/res/android"
      android:duration="250"
      android:fromXScale="0.0"
      android:fromYScale="1.0"
      android:pivotX="50%"
      android:pivotY="50%"
      android:toXScale="1.0"
      android:toYScale="1.0" />

Java逻辑

private Animation animation1, animation2;
animation1 = AnimationUtils.loadAnimation(this, R.drawable.to_middle);
animation1.setAnimationListener(this);
animation2 = AnimationUtils.loadAnimation(this, R.drawable.from_middle);
animation2.setAnimationListener(this);

     if (flag = true) {
        flipLayout.clearAnimation();
        flipLayout.setAnimation(animation1);
        flipLayout.startAnimation(animation1);
        flag = false;
    } else {
        flipLayout.clearAnimation();
        flipLayout.setAnimation(animation2);
        flipLayout.startAnimation(animation2);
        flag = true;
    }


@Override
public void onAnimationStart(Animation animation) {
    if (animation == animation1) {
        data = true;

    } else {
        if (id == true) {
            tv_calculation.setVisibility(View.GONE);
            id = false;
        } else {
            tv_calculation.setVisibility(View.VISIBLE);
            id = true;
        }
        data = false;
    }
}

@Override
public void onAnimationEnd(Animation animation) {

    if (animation == animation1) {

        flipLayout.clearAnimation();
        flipLayout.setAnimation(animation2);
        flipLayout.startAnimation(animation2);

    } else {

        flipLayout.clearAnimation();
        flipLayout.setAnimation(animation1);
        flipLayout.startAnimation(animation1);
    }

}

FlipLayout是一个ImageView。

答案 1 :(得分:4)

使用对象动画,它支持API等级11及以上。

here is sample

如果你想在下面(api 11级)级别工作这个动画也使用这个library