详解Android(共享元素)转场动画开发实践
发布时间 - 2026-01-11 02:45:00 点击率:次最近零碎时间一直在研究OpenGL,所以没怎么进行分享,以后可能大部分时间会学习系统底层\NDK\VR\AR等领域,话不多少,今天来分享个小的动画效果.

效果如下
基本知识
其实Android的转场动画由来已久,比如平常开发安卓的时候界面切换 都是右进右出,这样的效果,就是早期的转场动画,在5.0之后安卓官方支持了共享元素的效果,那么问题来了,5.0以后该怎么适配?
准备步骤
定义两个activity,界面跳转是从A到B.
ActivityA定义一个控件View,在跳转时传入到Pair里面,详细代码如下:
switch (v.getId()) {
case R.id.tv_open_video:
SigleVideoPlayer.startMe(mContext,tvOpenVideo);
break;
}
ActivityB详细代码如下
public static void startMe(BaseMvpActivity mContext, View view) {
Intent intent = new Intent(mContext, SigleVideoPlayer.class);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
Pair pair = new Pair<>(view, IMG_TRANSITION);
ActivityOptionsCompat activityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation(
mContext, pair);
ActivityCompat.startActivity(mContext, intent, activityOptions.toBundle());
} else {
mContext.startActivity(intent);
mContext.overridePendingTransition(R.anim.abc_fade_in, R.anim.abc_fade_out);
}
}
并在oncreate之后添加如下代码:
private void initTransition() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
postponeEnterTransition();
ViewCompat.setTransitionName(button, IMG_TRANSITION);
addTransitionListener();
startPostponedEnterTransition();
} else {
// 处理你自己的逻辑
}
}
设置动画监听
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private boolean addTransitionListener() {
transition = getWindow().getSharedElementEnterTransition();
if (transition != null) {
transition.addListener(new OnTransitionListener(){
@Override
public void onTransitionEnd(Transition transition) {
super.onTransitionEnd(transition);
// 动画完成之后 处理你自己的逻辑
transition.removeListener(this);
}
});
return true;
}
return false;
}
总结
大家可以看到,这里面的代码不仅做了适配,同时设置了动画监听,无需使用三方库即可实现你自己的转场动画.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# android
# 转场共享动画
# android转场动画
# 共享元素动画
# Android转场动画深入分析探究
# Android Flutter实现页面切换转场动画效果
# Android实现Reveal圆形Activity转场动画的完整步骤
# Android工具栏顶出转场动画的实现方法实例
# Android5.0之Activity的转场动画的示例
# Android中转场动画的实现与兼容性处理
# Android转场效果实现示例浅析
# 自己的
# 跳转
# 都是
# 来了
# 并在
# 是从
# 由来已久
# 可以看到
# 该怎么
# 基本知识
# 这里面
# 三方
# 大家多多
# tv_open_video
# id
# startMe
# SigleVideoPlayer
# case
# java
# brush
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
BootStrap整体框架之基础布局组件
Android 常见的图片加载框架详细介绍
如何在IIS管理器中快速创建并配置网站?
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
高防服务器租用指南:配置选择与快速部署攻略
详解Android图表 MPAndroidChart折线图
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
浅谈redis在项目中的应用
个人摄影网站制作流程,摄影爱好者都去什么网站?
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
Python图片处理进阶教程_Pillow滤镜与图像增强
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
如何用IIS7快速搭建并优化网站站点?
Laravel如何使用Collections进行数据处理?(实用方法示例)
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
如何在Ubuntu系统下快速搭建WordPress个人网站?
Laravel如何使用Telescope进行调试?(安装和使用教程)
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
微信公众帐号开发教程之图文消息全攻略
如何在不使用负向后查找的情况下匹配特定条件前的换行符
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
Python进程池调度策略_任务分发说明【指导】
如何快速搭建高效WAP手机网站吸引移动用户?
html5的keygen标签为什么废弃_替代方案说明【解答】
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
🚀拖拽式CMS建站能否实现高效与个性化并存?
iOS发送验证码倒计时应用
如何快速生成可下载的建站源码工具?
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
WEB开发之注册页面验证码倒计时代码的实现
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
LinuxShell函数封装方法_脚本复用设计思路【教程】
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
太平洋网站制作公司,网络用语太平洋是什么意思?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?

