Android 共享元素动画
Andriod 5.0及之后,开始支持共享元素动画,该动画主要用于两个activity之间,两个Activity可以共享某些控件,Activity A跳转到Activity B的时候,A的某个控件能自动移动到B的相应控件的位置,产生动画。该动画看起来很高大上,而且实现方法非常简单,是我目前见过的实现起来最简单的动画了。
该动画实现起来有两步,每步都很简单:
1、在要共享的控件中加上属性,两个Activity的共享控件都要加这个属性,并且值保持一致。
android:transitionName=“your_str”
属性值是自定义的,就是一个字符串。
2、跳转到第二个Activity的时候,用下面的方式跳转
Intent intent = new Intent(ShareAnimatorActivity.this,SecondShareAnimActivity.class); Bundle bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(ShareAnimatorActivity.this,shareImg,getString(R.string.share_pic_str)).toBundle(); startActivity(intent,bundle);
上面代码中调用了ActivityOptionsCompat.makeSceneTransitionAnimation方法,该方法有两个API:
public static ActivityOptionsCompat makeSceneTransitionAnimation(Activity activity,View sharedElement, String sharedElementName)
参数解释:activity就是发起跳转的Activity,shareElement就是共享的控件的id,sharedElementName就是第一步定义的字符串。这个方式只支持共享单个控件。
public static ActivityOptionsCompat makeSceneTransitionAnimation(Activity activity,Pair<View, String>... sharedElements)
参数解释:activity就是发起跳转的Activity,sharedElements是一个类型为Paire<View,String>可变长数组,每一个pair存放的就是一个共享控件的id和对应的字符串,可见该方法是可以支持多个共享控件的。
下面贴一下demo的代码:
发起跳转的Activity:
public class ShareAnimatorActivity extends AppCompatActivity { private ImageView shareImg; @Override protected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_share_animator_main); shareImg = (ImageView) findViewById(R.id.share_pic); shareImg.setOnClickListener(new View.OnClickListener() {@Override public void onClick(View v) {Log.d(TAG,"onClick"); Intent intent = new Intent(ShareAnimatorActivity.this,SecondShareAnimActivity.class); Bundle bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(ShareAnimatorActivity.this,shareImg,getString(R.string.share_pic_str)).toBundle(); startActivity(intent,bundle); }}); }
布局文件为:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="100dp" android:layout_height="100dp" android:src="@mipmap/timg" android:id="@+id/share_pic" android:transitionName="@string/share_pic_str" android:scaleType="fitXY"/> </LinearLayout>
跳转到的Activity代码:
public class SecondShareAnimActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_sencond_share_animator_main); } }
布局文件为:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="50dp" android:layout_height="50dp" android:src="@mipmap/timg" android:id="@+id/share_pic" android:transitionName="@string/share_pic_str" android:scaleType="fitXY" /> </LinearLayout>
补充:共享元素一般都是相同的控件,比如两个控件都为ImageView,但是如果不是同一类型的控件,比如ImageView和一个TextView共享了,经本人其实也是可以的,效果一样,但是估计没人会这么干 。
Android 共享元素动画相关推荐
- android共享元素动画_Android共享元素过渡动画
android共享元素动画 In this tutorial we'll implement a different kind of animation transition namely Share ...
- android共享元素动画兼容低版本
文章目录 共享元素动画 5.0以上系统方案 详细代码流程 5.0以下兼容方案 简述流程 详细代码流程 上篇: activity转场动画 一款APP让人赏心悦目的APP,动画是它并不可少的部分,Andr ...
- Android 虚拟按键隐藏或显示之后共享元素动画异常解决方案
背景 本篇算是共享元素的第三篇文章.主要还是因为第一篇才会衍生出来了第二篇和第三篇文章,后两篇均属于bug的分析和解决. 1.Android 仿微信朋友圈图片拖拽返回 2.Android 共享元素动画 ...
- android 延时播放动画,HollyTransition: 让APP丝滑般流畅:深入解读Android过渡动画Transition. 共享元素动画、场景动画、过场动画、延时动画...
HollyTransition 零.导读 深入解读Android过渡动画Transition: 页面切换动画(过场动画) 共享元素动画 延时动画 场景动画 一.Transition前世今生 为了支持各 ...
- 微信小程序第五篇:页面弹出效果及共享元素动画
系列文章传送门: 微信小程序第一篇:自定义组件详解 微信小程序第二篇:七种主流通信方法详解 微信小程序第三篇:获取页面节点信息 微信小程序第四篇:生成图片并保存到手机相册 目录 一.page-caon ...
- android+场景切换,Android共享元素场景切换动画的实现
今天跟大家分享的是场景切换的共享元素,源码已经上传到github: 我们知道安卓5.0系统引入了共享元素,能做出非常炫酷的场景切换效果,这让人非常兴奋同时非常蛋疼,因为低版本没法使用啊,所以今天就跟大 ...
- 谈一谈Flutter中的共享元素动画Hero
如果你是一名安卓开发者,应该很熟悉 共享元素变换(Shared Element Transition)这个概念,它可以通过几行代码,就在两个Activity或者Fragment之间做出流畅的转场动 ...
- 深入理解Android L新特性之 页面内容amp;共享元素过渡动画
今天我们来聊聊Android L(5.0)引入的新特性:页面内容过渡动画和页面共享动画,这两个特性都是基于我们前面已经说过的Transition动画,如果你对Transition动画不太属性,请先看我 ...
- 【Android】共享元素 share elements TextView颜色大小动画过度
谷歌官方文档 给了一个 通过共享元素启动Activity的Demo Demo很流畅,图片过渡很自然,但是由于两个页面的TextView大小不同(颜色不同会更加突兀),在动画开始和结束的时候TextVi ...
最新文章
- Windows系统下制作一个记事本以语音方式读出你输入的文字 以及放到开机启动项,开机自启动读出语音!
- 使用OneFlow完成基于U型网络的ISBI细胞分割任务
- UVa 10082 - WERTYU 解题报告 - C语言
- virtualbox 创建桥接网络_VirtualBox 配置虚拟网卡(桥接),实现主机-虚拟机网络互通(图文教程)...
- [机器学习] 模型稳定度指标PSI
- d3 v4 api transitions
- STM32中的串口通信
- 苹果叶片病害识别中的深度学习研究
- springboot的一些小问题
- php resize函数,Php Image Resize图片大小调整的函数代码
- 关于IIS新部署问题“HTTP500.21”错误代码解决办法
- 中国科学院大学2013年数学分析高等代数考研试题
- 关于USGS 共享光谱库读取问题
- 多媒体技术是指用计算机和相关设备,计算机多媒体技术基础知识
- 小白刷LeeCode(算法篇)7
- 论文解读-Intriguing properties of neural networks(ICLR2014)
- Elasticsearch许可证过期导致ES用不了的问题
- 计算机控制课设串级回路,华北电力大学过程计算机控制课设DDC串级回路PID闭环.doc...
- PC端QQ分享到好友链接
- K-近邻算法预测电影类型
热门文章
- puzzle(0914)方块识途、拾穗方块
- 离职的哪些理由千万不能说呢
- 使用javascript和jquery获取类方法
- [每天读一点英文:那些给我勇气的句子]George Soros—the financial crocodile
- python 正数变成负数_入门 | 32个常用 Python 实现
- Android获取天气预报的两种方式(国家气象局和中央气象台天气预报API)
- Jar包详解和META-INF作用(…
- 计算机软件处理的是什么信号,[计算机软件及应用]信号处理.ppt
- wps加载项开发和使用
- android .reset(),Android驱动笔记(13)——PMIC reset介绍