關於一個界面中部分View setVisibility的動畫效果

今天想對一個LinearLayout裏面的另外一個LinearLayout setVisibility的時候展示出動畫效果

然後就開始思索實現方式,想到的方式

一、直接對目標View增加動畫效果

例如:(使用View.setAnimation(Animation):https://www.cnblogs.com/whoislcj/p/5802899.html

Animation daoHang = AnimationUtils.loadAnimation(mActivity,R.anim.bottom_dialog_out); 
daoHang.setDuration(240);
linearLayout_daohang.setVisibility(View.VISIBLE);
linearLayout_daohang.setAnimation(daoHang);

二、對目標View周圍的View增加動畫效果

例如(使用View.animate():https://www.cnblogs.com/dasusu/p/8647702.html

viewPager.animate().setListener(new Animator.AnimatorListener() {
    @Override
    public void onAnimationStart(Animator animation) {

    }

    @Override
    public void onAnimationEnd(Animator animation) {
         linearLayout_daohang.setVisibility(View.VISIBLE);
    }

    @Override
    public void onAnimationCancel(Animator animation) {

    }

    @Override
    public void onAnimationRepeat(Animator animation) {

    }
});
viewPager.animate().translationY(linearLayout_daohang.getHeight()).setDuration(240).start();

三、通過對父組件添加子View的增加與刪除的動畫效果(這邊是顯示隱藏不是增加刪除所以無效)

例如:(https://blog.csdn.net/cjh_android/article/details/51537045)
LayoutTransition layoutTransition = new LayoutTransition();
layoutTransition.setAnimator(LayoutTransition.CHANGE_APPEARING,layoutTransition.getAnimator(LayoutTransition.CHANGE_APPEARING));
layoutTransition.setAnimator(LayoutTransition.CHANGE_DISAPPEARING,layoutTransition.getAnimator(LayoutTransition.CHANGE_DISAPPEARING));
linearLayout1.setLayoutTransition(layoutTransition);

四、通過父組件佈局文件中的屬性來添加子組件的動畫效果(https://blog.csdn.net/YllP_1230/article/details/86140691

直接在父組件佈局文件中android:animateLayoutChanges="true"添加這個屬性並設爲有則可以了

 

 

處理過程中,方法一雖然添加了動畫效果,但是目標View周圍的View沒加上動畫效果顯得蠻突兀的

方法二是在方法一試驗過程中發現的,實際上不需要對目標組件添加動畫效果也可以達到類似

但是其中有一個問題,添加的動畫效果是位移效果,然後展示目標View後,添加動畫效果的View因爲位移過導致與想要顯示

的佈局不符

第三個方法則因爲這個方式的效果是用在AddView上面的所以沒有效果

最終選擇是第四種,畢竟簡單而且效果與我想要的相符

僅此

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章