前言
項目中有一個需求是日期篩選是從底部慢慢往上彈出的效果,當時想到的是通過給佈局一個展示動畫來實現,然後就各種百度如何實現:
創建anim
首先在drawable文件夾下創建anim文件夾來存放動畫布局,動畫效過分爲兩部分:
**底部彈出動畫 ** bottom_show.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fromYDelta="100%p"
android:toYDelta="0" />//從上往下移動顯示
<alpha
android:duration="500"
android:fromAlpha="1.0"
android:toAlpha="1.0" />//從透明到不透明在1s內
</set>
彈出消失動畫 bottom_close.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!--位移-->
<translate
android:duration="500"
android:fromYDelta="0"
android:toYDelta="100%p" />
<!--漸變-->
<alpha
android:duration="500"
android:fromAlpha="1.0"
android:toAlpha="0.0" />
</set>
這樣就是完整的動畫過程,其實也比較好理解。
set爲組合動畫,動畫通過translate(位移)從Y軸的從無到有以及alpha(漸變)從透明到不透明的展示效果給人視覺上的底部彈出動畫
最後給我們的佈局加載:
//顯示動畫
Animation mStarAction = AnimationUtils.loadAnimation(this, R.anim.bottom_show);//加載動畫文件
parentView.startAnimation(mStarAction);// parentView,給佈局設置動畫
parentView.setVisibility(View.VISIBLE);//設置動畫
//消失動畫
Animation mHiddenAction = AnimationUtils.loadAnimation(this, R.anim.bottom_close);
parentView.startAnimation(mHiddenAction);
parentView.setVisibility(View.INVISIBLE);
end
這裏要注意是:由於是給佈局設置顯示隱藏的動畫我們知道給view設置成gone他是不會去 預先加載的,所以第一遍是無法執行該動畫的,所以我們要給佈局設置成invisible屬性而不是gone