Material-Animations(三)--Animate view layout elements

原文:https://github.com/lgvalle/Material-Animations

Scenes(场景)

Transition Framework还可以用于改变当前Activity元素的动画。
过渡动画发生在场景与场景之间,场景是固定的,静态的。在一个场景跳转到另外一个场景期间,Transition Framework将会作用于其Views上。

scene1 = Scene.getSceneForLayout(sceneRoot, R.layout.activity_animations_scene1, this);
scene2 = Scene.getSceneForLayout(sceneRoot, R.layout.activity_animations_scene2, this);
scene3 = Scene.getSceneForLayout(sceneRoot, R.layout.activity_animations_scene3, this);
scene4 = Scene.getSceneForLayout(sceneRoot, R.layout.activity_animations_scene4, this);

(...)

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.button1:
            TransitionManager.go(scene1, new ChangeBounds());
            break;
        case R.id.button2:
            TransitionManager.go(scene2, TransitionInflater.from(this).inflateTransition(R.transition.slide_and_changebounds));
            break;
        case R.id.button3:
            TransitionManager.go(scene3, TransitionInflater.from(this).inflateTransition(R.transition.slide_and_changebounds_sequential));
            break;
        case R.id.button4:
            TransitionManager.go(scene4, TransitionInflater.from(this).inflateTransition(R.transition.slide_and_changebounds_sequential_with_interpolators));
            break;  
    }
}

上面的代码,将会在Activity中,4个场景间产生不同的过渡动画。

Transition Framework获取当前scene所有可见的view然后计算这些view跳转到下一个scene所需的动画参数。
这里写图片描述

Layout changes

Transition Framework也可以作用于Viewlayout property,只需输入想要改变的参数,Transition Framework将会自定完成剩下的工作。

a)开启Delayed Transition

通过这一行代码,告诉Transition Framework我们需要执行的UI变化。

TransitionManager.beginDelayedTransition(sceneRoot);

b)改变View的layout properties

ViewGroup.LayoutParams params = greenIconView.getLayoutParams();
params.width = 200;
greenIconView.setLayoutParams(params);

改变view的宽度属性使View更加小,这个动作将会导致重新布局和测量,与此同时,Transition Framework会记录开始值和结束值,并且相对应的创建从开始值到结束值的Transition Animation
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值