Tween動畫使用注意
阿新 • • 發佈:2019-02-06
<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軸上方走了自身的高度。