有空学习一下转场动画的使用

方法一:在代码中设置

分解,滑动进入,淡入淡出
参考:http://blog.csdn.net/u012702547/article/details/51289789

用法:
首先,把之前启动Activity的代码改成下面的写法:

[java] view plain copy print?
startActivity(new Intent(this, Main2Activity.class), ActivityOptions.makeSceneTransitionAnimation(this).toBundle());  

添加完成之后,在Main2Activity中设置该Activity的进出场动画即可:
1.分解

[java] view plain copy print?
getWindow().setEnterTransition(new Explode().setDuration(2000));
getWindow().setExitTransition(new Explode().setDuration(2000));  

OK,就是这么简单,哦,对了,大家一定要记得在styles.xml文件中添加下面一行代码,表示激活Activity中元素的过渡效果:

[java] view plain copy print?
<item name="android:windowContentTransitions">true</item>  

2.滑动进入

[java] view plain copy print?
getWindow().setEnterTransition(new Slide().setDuration(2000));
getWindow().setExitTransition(new Slide().setDuration(2000));  

3.淡入淡出

[java] view plain copy print?
getWindow().setEnterTransition(new Fade().setDuration(2000));  getWindow().setExitTransition(new Fade().setDuration(2000));  

4.共享元素

使用共享元素动画的时候,我们需要首先给MainActivity和Main2Activity中的两个button分别添加Android:transitionName=”mybtn”属性,并且该属性的值要相同,这样系统才知道这两个控件是共享元素。设置完成之后,接下来就是启动Activity的代码了,如下:

ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, mTv, "tv");
startActivityForResult(intent,REQUEST_CODE_COUNTRY,options.toBundle()/*ActivityOptions.makeSceneTransitionAnimation(this).toBundle()*/);

如果需要有多个共享元素,使用Pair

startActivity(new Intent(this, Main2Activity.class),  ActivityOptions.makeSceneTransitionAnimation(this, Pair.create(((View) iv1),"myiv"), create(((View) textView),"mytv")).toBundle());

方法二:在xml中设置

参考:http://blog.csdn.net/wl9739/article/details/52833668
步骤:

1.在 res/ 目录下创建 transition 文件夹,在该文件夹下定义界面转场动画和共享元素的动画。
2.在 res/value/style 文件中为每个 Activity 指定转场动画的 style ,并在 AndroidManifest.xml 文件中为每个 Activity 设置对应的 android:theme。
3.在 Activity 调用 startActivity() 切换动画前,使用 ActivityOptionsCompat 来创建转场动画时的共享对象。

同样是上面的三种效果,这里只演示一种集合
第一步:
detail_enter.xml

<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"><slide android:slideEdge="bottom"><targets><target android:targetId="@id/cardview"/></targets></slide><fade><targets><target android:excludeId="@android:id/statusBarBackground"/><target android:excludeId="@android:id/navigationBarBackground"/><target android:excludeId="@id/cardview"/></targets></fade>
</transitionSet>

main_exit.xml

<?xml version="1.0" encoding="utf-8"?>
<explode xmlns:android="http://schemas.android.com/apk/res/android"><targets><target android:excludeId="@android:id/navigationBarBackground"/><target android:excludeId="@android:id/statusBarBackground"/></targets>
</explode>

标签里面定义需要转场(或者不需要转场)的目标 id ,这个 id 可以使系统自带的,也可以是我们自己视图中的 view 的 id,每一个 id 需要单独在 标签中定义,android:targetId 表示目标 ID 需要进行过渡转换的 view,而 android:excludeId 表示我们不需要该 ID 的 view 进行过渡转场。上面的那段代码的意思是说,除了状态栏和导航栏以外所有的 view,都执行 explode 动画。

第二步:
styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources><style name="AppTheme.Main"><item name="android:windowExitTransition">@transition/main_exit</item></style><style name="AppTheme.Detail"><item name="windowActionBar">false</item><item name="android:windowNoTitle">true</item><item name="android:windowTranslucentStatus">true</item><item name="android:windowAllowEnterTransitionOverlap">false</item><item name="android:windowEnterTransition">@transition/detail_enter</item></style><style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"><!-- Customize your theme here. --><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item><item name="android:windowContentTransitions">true</item></style>
</resources>

第三步:

ActivityOptions options =ActivityOptions.makeSceneTransitionAnimation(this, mTv, "tv");Intent intent = new Intent(this, MainActivity.class);intent.putExtra("city", "中国");startActivityForResult(intent, REQUEST_CODE_COUNTRY,options.toBundle()/*ActivityOptions.makeSceneTransitionAnimation(this).toBundle()*/);

android转场动画的两种方式相关推荐

  1. android动画变黑,Activity添加进入和退出动画的两种方式,解决黑色区域问题

    Activity添加进入和退出动画的两种方式,解决黑色区域问题 给Activity添加进入和退出动画的操作,大家一定不会陌生.常见的有两种方式,一种是通过style文件给Activity设置Theme ...

  2. android asynctask源码分析,Android通过Handler与AsyncTask两种方式动态更新ListView(附源码)...

    本文实例讲述了Android通过Handler与AsyncTask两种方式动态更新ListView的方法.分享给大家供大家参考,具体如下: 有时候我们需要修改已经生成的列表,添加或者修改数据,noti ...

  3. Android点击图片随机,android 设置图片随机出现-两种方式

    android 设置图片随机出现-两种方式, 第一种方式:得到图片对应的Drawable实例,通过setImageDrawable(drawable)实现 //ImageView对应的id ivBg ...

  4. android打开另外的app两种方式,内置到自己本身的app,重新打开app,

    android打开另外的app两种方式,内置到自己本身的app空间,重新打开app空间, 目录 1.内置到自己本身的app空间, 2.重新打开app空间, 1.内置到自己本身的app空间, 被打开的a ...

  5. Android页面数据传递的两种方式

    在android中实现页面中数据的传递有两种方式: 1:第一种数据传递的方式是通过inputExtra方法来进行数据的传递的 2:第二中方法是通过bundle的方法来实现数据的传递的 接下来我们首先来 ...

  6. android 设置图片随机出现-两种方式

    android 设置图片随机出现-两种方式, 第一种方式:得到图片对应的Drawable实例,通过setImageDrawable(drawable)实现 //ImageView对应的idivBg = ...

  7. android动态居中布局,Android动态添加布局的两种方式

    释放双眼,带上耳机,听听看~! 前言 大多数时候我们布局都是用xml来布局的,但有些时候也是会用到动态布局的,尤其是在一些大项目中,动态布局更是体现的淋漓尽致. 所以今天我们就来学习一些动态加添布局的 ...

  8. android动态改变布局,Android 动态添加布局的两种方式

    前言 大多数时候我们布局都是用xml来布局的,但有些时候也是会用到动态布局的,尤其是在一些大项目中,动态布局更是体现的淋漓尽致. 所以今天我们就来学习一些动态加添布局的两种方式,分别是 动态添加xml ...

  9. android客户端认证服务端的两种方式

    Your app shouldn't suffer SSL's problems http://thoughtcrime.org/blog/authenticity-is-broken-in-ssl- ...

  10. Android获取IP地址的两种方式(准确版)

    原文:https://blog.csdn.net/sinat_16458039/article/details/50260589 最近看了好多网上获取IP地址的例子,发现好多都不完全准确,这里我写一下 ...

最新文章

  1. TF-IDF与余弦相似性的应用
  2. 有进步--第二周作业
  3. 读书几年收藏的编程利器网站,给大家分享出来
  4. Swift使用CoreLocation,你必须要看这一篇
  5. 代码组织和部署 文件操作 node.js 1
  6. Access链接表的使用
  7. WIN8下安装USB转串口驱动出现“文件的哈希值不在指定的目录”的解决办法
  8. PMP第六版-49个子过程ITTO总结
  9. oracle定时任务按照小时,ORACLE定时任务时间间隔设置
  10. Python内置函数及其用法
  11. 知道创宇爬虫题--代码持续更新中
  12. 南充计算机职业学校有哪些专业,南充旅游计算机职业中专学校2020年招生简介...
  13. 剥opgw光缆工具_ADSS光缆开剥光缆常用方法及开剥注意点
  14. oracle erp 架构,Oracle ERP (EBS)基础篇-体系架构
  15. 手机直播系统 服务器,手机直播系统平台搭建部署开发
  16. 页面分享到微博、qq、qqzone
  17. MDM 与 MAM 的区别
  18. 电阻标称值E24等系列
  19. 北大ACM线上比赛有感
  20. Android自定义组件——3D立体旋转控件

热门文章

  1. 缠论找日线找第二类买点买入程序
  2. Spring colud gateway 源码小计
  3. 老打印机USB改无线连接
  4. 计算机无法识别打印机usb,USB无法识别打印机的解决方案和教程
  5. 示波器带宽定义与来源
  6. activex chrome插件_10个超实用的设计师专属Chrome小插件
  7. SQL使用(一)-----联合查询
  8. vr视频制作软件哪个好?Nibiru creator是企业的标配
  9. java dvr_java – 如何设置与DVR的连接并解码数据?
  10. Disk for DB is too low. Cassandra state detected DOWN. Disk space for DB not retrievable