我想做翻转动画图像视图水平(围绕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>

我还想不断地旋转它,每次翻转后它应该停一会儿。

最佳答案

尝试用各自的Java逻辑跟踪XML代码,用AnimationListener实现您的活动
动画1.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" />

动画2.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。

07-27 19:40