android 当控制view显示或隐藏的时候,添加动画LayoutTransition,让view的变化不那么

     在Android开发中,view.setVisibility(View.VISIBLE) 或者 view.setVisibility(View.GONE) 这两句代码相信大家都经常用吧,比如你有一个长列表,里面的某一个条目被GONE掉了,那下面的条目会自动填充上去,如果没有动画效果,会显得比较生硬.

Android API给我们提供了一个属性,在ViewGroup的XML布局文件中把android:animateLayoutchanges 属性设置为true, 就会实现动画效果.

当然了,在代码中也可以设置,在4.1 JellyBean上,可以在容器内的子view的layout发生变化时也播放动画,用法如下:

        //mContentRoot要设置的父布局
        mContentRoot = (LinearLayout) findViewById(R.id.content_root);
        LayoutTransition transition = new LayoutTransition();
        transition.setDuration(5000);
        mContentRoot.setLayoutTransition(transition);

      这样就设置了动画的时间,当然了 如果你想设置自己的动画,比如alpha,translate等等,可以这么设置,我们先来了解一下五个属性:

       LayoutTransition.APPEARING  当一个View在ViewGroup中出现时,对此View设置的动画          

       LayoutTransition.CHANGE_APPEARING 当一个View在ViewGroup中出现时,对此View对其他View位置造成影响,对其他View设置的动画

       LayoutTransition.DISAPPEARING  当一个View在ViewGroup中消失时,对此View设置的动画      

       LayoutTransition.CHANGE_DISAPPEARING 当一个View在ViewGroup中消失时,对此View对其他View位置造成影响,对其他View设置的动画

       LayoutTransition.CHANGE 不是由于View出现或消失造成对其他View位置造成影响,然后对其他View设置的动画。

 mContentRoot = (LinearLayout) findViewById(R.id.content_root);
        LayoutTransition transition = new LayoutTransition();
        transition.setDuration(5000);
        //设置自己想要的动画效果,自定义动画
        transition.setAnimator(LayoutTransition.APPEARING, AnimatorInflater.loadAnimator(this, R.animator.animator_scale));
        transition.setAnimator(LayoutTransition.CHANGE_APPEARING, AnimatorInflater.loadAnimator(this, R.animator.animator_scale));
        transition.setAnimator(LayoutTransition.DISAPPEARING, AnimatorInflater.loadAnimator(this, R.animator.animator_scale));
        transition.setAnimator(LayoutTransition.CHANGE_DISAPPEARING,transition.getAnimator(LayoutTransition.CHANGE_DISAPPEARING));
        mContentRoot.setLayoutTransition(transition);

这样就在代码中设置了你自己想要的效果属性.

其中animator_scale要在自己的res文件夹下面创建一个 animator文件夹,

这样就会实现你想要的动画效果,也不会让你自己的控件显示和隐藏变得那么生硬,其实最简单的是让调用系统的,也就一句话的事~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值