1. 程式人生 > >Tween動畫使用注意

Tween動畫使用注意

<span style="white-space:pre">		</span>    mTitleBar.setTitleImg(R.drawable.arrow_down);
                    mTitleBar.getTitleImgView().setTag(TITLE_IMG_TAG_DOWN);
                    layout.setVisibility(View.VISIBLE);
                    Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.push_top_out);
                    animation.setAnimationListener(new Animation.AnimationListener() {
                        @Override
                        public void onAnimationStart(Animation animation) {

                        }

                        @Override
                        public void onAnimationEnd(Animation animation) {
                            shader.setVisibility(View.GONE);
                            layout.setVisibility(View.GONE);
                            layout.clearAnimation();
                        }

                        @Override
                        public void onAnimationRepeat(Animation animation) {

                        }
                    });
                    layout.setAnimation(animation);
                    animation.start();

這裡最後兩行程式碼的寫法有問題,導致動畫不能執行,操作了View之後才會執行,下面這種寫法誤用了。

                    layout.setAnimation(animation);
                    animation.start();


正確的寫法:

layout.startAnimation(animation)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true">


    <translate
        android:duration="200"
        android:fromYDelta="0"
        android:toYDelta="-100%" />
    <alpha
        android:duration="200"
        android:fromAlpha="1.0"
        android:toAlpha="0.0" />
</set>

在這些屬性裡面還可以加上%和p,例如:
android:toXDelta="100%",表示自身的100%,也就是從View自己的位置開始。
android:toXDelta="80%p",表示父層View的80%,是以它父層View為參照的。

這裡的android:toYDelta="0",android:toYDelta="-100%",表示的是,這裡取View的左上角那個點進行距離。

左上角點從0,到自身高度比例的100,反方向。也就是View往y軸上方走了自身的高度。