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 共享元素动画相关推荐

  1. android共享元素动画_Android共享元素过渡动画

    android共享元素动画 In this tutorial we'll implement a different kind of animation transition namely Share ...

  2. android共享元素动画兼容低版本

    文章目录 共享元素动画 5.0以上系统方案 详细代码流程 5.0以下兼容方案 简述流程 详细代码流程 上篇: activity转场动画 一款APP让人赏心悦目的APP,动画是它并不可少的部分,Andr ...

  3. Android 虚拟按键隐藏或显示之后共享元素动画异常解决方案

    背景 本篇算是共享元素的第三篇文章.主要还是因为第一篇才会衍生出来了第二篇和第三篇文章,后两篇均属于bug的分析和解决. 1.Android 仿微信朋友圈图片拖拽返回 2.Android 共享元素动画 ...

  4. android 延时播放动画,HollyTransition: 让APP丝滑般流畅:深入解读Android过渡动画Transition. 共享元素动画、场景动画、过场动画、延时动画...

    HollyTransition 零.导读 深入解读Android过渡动画Transition: 页面切换动画(过场动画) 共享元素动画 延时动画 场景动画 一.Transition前世今生 为了支持各 ...

  5. 微信小程序第五篇:页面弹出效果及共享元素动画

    系列文章传送门: 微信小程序第一篇:自定义组件详解 微信小程序第二篇:七种主流通信方法详解 微信小程序第三篇:获取页面节点信息 微信小程序第四篇:生成图片并保存到手机相册 目录 一.page-caon ...

  6. android+场景切换,Android共享元素场景切换动画的实现

    今天跟大家分享的是场景切换的共享元素,源码已经上传到github: 我们知道安卓5.0系统引入了共享元素,能做出非常炫酷的场景切换效果,这让人非常兴奋同时非常蛋疼,因为低版本没法使用啊,所以今天就跟大 ...

  7. 谈一谈Flutter中的共享元素动画Hero

      如果你是一名安卓开发者,应该很熟悉 共享元素变换(Shared Element Transition)这个概念,它可以通过几行代码,就在两个Activity或者Fragment之间做出流畅的转场动 ...

  8. 深入理解Android L新特性之 页面内容amp;共享元素过渡动画

    今天我们来聊聊Android L(5.0)引入的新特性:页面内容过渡动画和页面共享动画,这两个特性都是基于我们前面已经说过的Transition动画,如果你对Transition动画不太属性,请先看我 ...

  9. 【Android】共享元素 share elements TextView颜色大小动画过度

    谷歌官方文档 给了一个 通过共享元素启动Activity的Demo Demo很流畅,图片过渡很自然,但是由于两个页面的TextView大小不同(颜色不同会更加突兀),在动画开始和结束的时候TextVi ...

最新文章

  1. Windows系统下制作一个记事本以语音方式读出你输入的文字 以及放到开机启动项,开机自启动读出语音!
  2. 使用OneFlow完成基于U型网络的ISBI细胞分割任务
  3. UVa 10082 - WERTYU 解题报告 - C语言
  4. virtualbox 创建桥接网络_VirtualBox 配置虚拟网卡(桥接),实现主机-虚拟机网络互通(图文教程)...
  5. [机器学习] 模型稳定度指标PSI
  6. d3 v4 api transitions
  7. STM32中的串口通信
  8. 苹果叶片病害识别中的深度学习研究
  9. springboot的一些小问题
  10. php resize函数,Php Image Resize图片大小调整的函数代码
  11. 关于IIS新部署问题“HTTP500.21”错误代码解决办法
  12. 中国科学院大学2013年数学分析高等代数考研试题
  13. 关于USGS 共享光谱库读取问题
  14. 多媒体技术是指用计算机和相关设备,计算机多媒体技术基础知识
  15. 小白刷LeeCode(算法篇)7
  16. 论文解读-Intriguing properties of neural networks(ICLR2014)
  17. Elasticsearch许可证过期导致ES用不了的问题
  18. 计算机控制课设串级回路,华北电力大学过程计算机控制课设DDC串级回路PID闭环.doc...
  19. PC端QQ分享到好友链接
  20. K-近邻算法预测电影类型

热门文章

  1. puzzle(0914)方块识途、拾穗方块
  2. 离职的哪些理由千万不能说呢
  3. 使用javascript和jquery获取类方法
  4. [每天读一点英文:那些给我勇气的句子]George Soros—the financial crocodile
  5. python 正数变成负数_入门 | 32个常用 Python 实现
  6. Android获取天气预报的两种方式(国家气象局和中央气象台天气预报API)
  7. Jar包详解和META-INF作用(…
  8. 计算机软件处理的是什么信号,[计算机软件及应用]信号处理.ppt
  9. wps加载项开发和使用
  10. android .reset(),Android驱动笔记(13)——PMIC reset介绍