
『Android 技能篇』优雅的转场动画之 Transition
记录状态属性值:Transition会记录当前View的属性值,包括位置、尺寸、颜色等。 创建动画:Transition根据起始和目标属性值,创建相应的动画效果。 执行动画:通过TransitionManager开始动画播放。
发布日期:2021-05-14 19:18:24
浏览次数:35
分类:精选文章
本文共 2535 字,大约阅读时间需要 8 分钟。
Android动画转场效果是Material Design中重要的一部分,能够提升用户体验。以下是关于Transition组件的详细解析。
Android系统自带了强大的Transition组件,可以帮助开发者实现复杂的动画效果。以下是Transition的使用方法和详细实现案例。
一、Transition的核心原理
Transition的工作原理比较简单:
二、原生Transition类
系统提供了多种Transition子类,可用于不同的动画效果。
1. Fade(淡入淡出)
- 淡入:
Fade.Fade.IN
- 淡出:
Fade.Fade.OUT
- 组合效果:可以同时使用Fade和其他转场效果。
2. Slide(滑动进入)
- 入场:从下方向上滑入屏幕。
- 出场:向下或向左滑出屏幕。
- 组合效果:可以与Fade结合实现更复杂的动画。
3. Explode(四边发散)
- 入场:四边向外扩散进入屏幕。
- 出场:四边向内收缩向外发散。
4. ChangeBounds(位置或尺寸改变)
ChangeBounds会自动处理View的位置或尺寸变化,触发相应动画效果。
5. ChangeScroll(滚动效果)
通过view.scrollTo()触发滚动动画效果。
6. ChangeTransform(变换效果)
处理View的位置、缩放和旋转,同时支持自定义Interpolator。
三、自定义Transition类
除了系统提供的Transition,可以自定义实现特殊动画效果。
1. ChangeTextTransition
public class ChangeTextTransition extends Transition { public static String PROPNAME_TEXT = "xiaweizi:changeText:text"; public static String PROPNAME_TEXT_COLOR = "xiaweizi:changeTextColor:color"; @Override public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues, TransitionValues endValues) { // 获取开始和结束的属性值 String textStart = (String) startValues.values.get(PROPNAME_TEXT); String colorStart = (String) startValues.values.get(PROPNAME_TEXT_COLOR); String textEnd = (String) endValues.values.get(PROPNAME_TEXT); String colorEnd = (String) endValues.values.get(PROPNAME_TEXT_COLOR); // 创建动画效果 ObjectAnimator animator = ObjectAnimator.ofArgb(findViewById(R.id.textView), new TextColorProperty(), Color.parseColor(colorStart), Color.parseColor(colorEnd)); animator.setDuration(300); return animator; }}
2. ChangeBackgroundColorTransition
自定义实现颜色变化效果。
3. ChangeImageResourceTransition
实现图片资源变化的平滑切换。
4. ChangeCustomTransition
支持自定义View属性的动画效果。
四、Scene实现
Scene用于场景切换,可以通过布局文件实现不同状态的过渡效果。
// 获取两个场景Scene scene1 = Scene.getSceneForLayout(rootView, R.layout.scene1, context);Scene scene2 = Scene.getSceneForLayout(rootView, R.layout.scene2, context);// 创建转场动画Transition transition = new TransitionSet();transition.addTransition(new ChangeTextTransition());transition.addTransition(new ChangeScroll());transition.addTransition(new ChangeBackgroundColorTransition());transition.addTransition(new ChangeBounds());// 开始切换TransitionManager.go(scene1, transition);TransitionManager.go(scene2, transition);
五、总结
通过以上方法,可以轻松实现复杂的转场效果。Transition组件支持灵活扩展,适用于不同需求场景。如需更深入学习,可参考Android官方文档或相关开发者博客。
发表评论
最新留言
很好
[***.229.124.182]2025年04月26日 04时41分24秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
2018年3月最新的Ubuntu 16.04.4漏洞提权代码
2019-03-12
异或交换两个数的值
2019-03-12
Golang AES加密
2019-03-12
亚马逊aws文档语法错误
2019-03-12
什么是5G?居然有人用漫画把它讲得如此接地气!
2019-03-12
Spring cloud --分布式配置中心组件Spring Cloud Config
2019-03-12
UE4接入Android第三方库2——通过JIN与GameActivity通信
2019-03-12
Unity Job System 2——并行处理数据
2019-03-12
spark概述
2019-03-12
JavaScript 知识梳理[一] 变量类型,浅拷贝,深拷贝
2019-03-12
pip命令 failed to create process.
2019-03-12
做SMTP客户端遇报错:535 Error
2019-03-12
Python3的修改
2019-03-12
SQL基础学习(六)- MySQL的insert语句
2019-03-12
Linux kernel pwn --- CSAW2015 StringIPC
2019-03-12
2020 05 02 记录思考
2019-03-12
2020-05-31 py执行时超时控制
2019-03-12
一段强大的shellcode
2019-03-12
双链表相加问题
2019-03-12