如何旋转图像,最后使用动画更改图像

时间:2014-11-07 05:54:44

标签: android android-animation

正如标题所示,我试图在imageview上执行动画效果,点击Button图像开始旋转,在animation effect结束时图像变为另一个image

2 个答案:

答案 0 :(得分:2)

res / anim中的动画rotation.xml(使用特定旋转风格的参数):

 <?xml version="1.0" encoding="utf-8"?>

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

在这样的活动中:

Button yourButton=(Button) findViewById(R.id.yourButton);

                   yourButton.setOnClickListener(new View.OnClickListener() {
                       @Override
                       public void onClick(View v) {
                           Animation animation = AnimationUtils.loadAnimation(yourActivity, R.anim.rotation);

                           animation.setAnimationListener(new Animation.AnimationListener() {
                               @Override
                               public void onAnimationStart(Animation animation) {

                               }

                               @Override
                               public void onAnimationEnd(Animation animation) {
                                   v.setBackgroundResource(R.drawable.anotherImage);
                               }

                               @Override
                               public void onAnimationRepeat(Animation animation) {

                               }
                           });

                           v.startAnimation(animation); 
                       }
                   });

编辑:除非通过轮换表示&#34;翻转&#34;?也许还要检查一下:http://developer.android.com/training/animation/cardflip.html

答案 1 :(得分:0)

我想出了在动画旋转后是否要更改图像的方法,这是一种方法,即您无法通过第二次单击或更多操作恢复到旧图像。因此,唯一的方法就是在Checkbox(而不是Imageview / button)上执行相同的动画。

下面是我的代码:-

<android.support.v7.widget.AppCompatCheckBox
   android:id="@+id/ivCLick"
   android:layout_width="40dp"
   android:layout_height="40dp"
   android:layout_margin="40dp"
   android:background="@drawable/chbselector"
   android:button="@null"
   />

chbselector.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/ic_keyboard_arrow_down_grey_24dp"
        android:state_checked="false"/>
    <item android:drawable="@drawable/ic_keyboard_arrow_up_black_24dp"
        android:state_checked="true"/>
    <item android:drawable="@drawable/ic_keyboard_arrow_down_grey_24dp"/>
</selector>

rotation.xml:-

    <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <rotate
        android:duration="300"
        android:startOffset="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="360"
        android:fromDegrees="0" />
</set>

我的Java代码:-

 findViewById(R.id.ivCLick).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(final View v) {
            Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.rotation);

            animation.setAnimationListener(new Animation.AnimationListener() {
                @Override
                public void onAnimationStart(Animation animation) {

                }

                @Override
                public void onAnimationEnd(Animation animation) {
                    Log.d("TAG", "onAnimationEnd: "+((AppCompatCheckBox)v).isChecked());
                }

                @Override
                public void onAnimationRepeat(Animation animation) {

                }
            });

            v.startAnimation(animation);
        }
    });

(((AppCompatCheckBox)v).isChecked()使您无论是否单击图像都可以天气好坏。可以根据需要对其进行处理。