布局动画 Layout Animations

布局动画主要用来为布局容器设置动画,如ViewGroup及其子类;当容器中的视图发生变化时(如addView,removeView)存在过渡的动画效果。

动画的类型一共有四种:

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

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

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

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

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

基本使用方法:

LayoutTransition transition = new LayoutTransition();  
//取消进场动画
transition.setAnimator(LayoutTransition.APPEARING,  
            null); 
//设置默认的CHANGE_APPEARING 动画
transition.setAnimator(LayoutTransition.CHANGE_APPEARING,  
            transition.getAnimator(LayoutTransition.CHANGE_APPEARING));  

//设置布局动画
mGridLayout.setLayoutTransition(transition);  

布局动画的使用如下示例,实现布局容器addView时从屏幕上方向下平移;removeView时从下向上平移出屏幕的效果。

// 动画:APPEARING
// Adding
private LayoutTransition mTransition = new LayoutTransition();
ObjectAnimator animIn = ObjectAnimator.ofFloat(null, "translationY", -height,
                0f).setDuration(1000);
mTransition.setAnimator(LayoutTransition.APPEARING, animIn);
//        animIn.addListener(new AnimatorListenerAdapter() {
//            public void onAnimationEnd(Animator anim) {
//                View view = (View) ((ObjectAnimator) anim).getTarget();
//                view.setRotationY(0f);
//            }
//        });

// 动画:DISAPPEARING
// Removing
ObjectAnimator animOut = ObjectAnimator.ofFloat(null, "translationY", 0,
                -height).setDuration(1000);
mTransition.setAnimator(LayoutTransition.DISAPPEARING, animOut);
//        animOut.addListener(new AnimatorListenerAdapter() {
//            public void onAnimationEnd(Animator anim) {
//                View view = (View) ((ObjectAnimator) anim).getTarget();
////                view.setRotationX(0f);
//            }
//        });

系统默认的布局动画效果如下,具体代码见LayoutTransition源码

布局动画 Layout Animations_第1张图片
默认布局动画

你可能感兴趣的:(布局动画 Layout Animations)