关于一个界面中部分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上面的所以没有效果

最终选择是第四种,毕竟简单而且效果与我想要的相符

仅此

 

 

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