android转场动画的两种方式
有空学习一下转场动画的使用
方法一:在代码中设置
分解,滑动进入,淡入淡出
参考: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转场动画的两种方式相关推荐
- android动画变黑,Activity添加进入和退出动画的两种方式,解决黑色区域问题
Activity添加进入和退出动画的两种方式,解决黑色区域问题 给Activity添加进入和退出动画的操作,大家一定不会陌生.常见的有两种方式,一种是通过style文件给Activity设置Theme ...
- android asynctask源码分析,Android通过Handler与AsyncTask两种方式动态更新ListView(附源码)...
本文实例讲述了Android通过Handler与AsyncTask两种方式动态更新ListView的方法.分享给大家供大家参考,具体如下: 有时候我们需要修改已经生成的列表,添加或者修改数据,noti ...
- Android点击图片随机,android 设置图片随机出现-两种方式
android 设置图片随机出现-两种方式, 第一种方式:得到图片对应的Drawable实例,通过setImageDrawable(drawable)实现 //ImageView对应的id ivBg ...
- android打开另外的app两种方式,内置到自己本身的app,重新打开app,
android打开另外的app两种方式,内置到自己本身的app空间,重新打开app空间, 目录 1.内置到自己本身的app空间, 2.重新打开app空间, 1.内置到自己本身的app空间, 被打开的a ...
- Android页面数据传递的两种方式
在android中实现页面中数据的传递有两种方式: 1:第一种数据传递的方式是通过inputExtra方法来进行数据的传递的 2:第二中方法是通过bundle的方法来实现数据的传递的 接下来我们首先来 ...
- android 设置图片随机出现-两种方式
android 设置图片随机出现-两种方式, 第一种方式:得到图片对应的Drawable实例,通过setImageDrawable(drawable)实现 //ImageView对应的idivBg = ...
- android动态居中布局,Android动态添加布局的两种方式
释放双眼,带上耳机,听听看~! 前言 大多数时候我们布局都是用xml来布局的,但有些时候也是会用到动态布局的,尤其是在一些大项目中,动态布局更是体现的淋漓尽致. 所以今天我们就来学习一些动态加添布局的 ...
- android动态改变布局,Android 动态添加布局的两种方式
前言 大多数时候我们布局都是用xml来布局的,但有些时候也是会用到动态布局的,尤其是在一些大项目中,动态布局更是体现的淋漓尽致. 所以今天我们就来学习一些动态加添布局的两种方式,分别是 动态添加xml ...
- android客户端认证服务端的两种方式
Your app shouldn't suffer SSL's problems http://thoughtcrime.org/blog/authenticity-is-broken-in-ssl- ...
- Android获取IP地址的两种方式(准确版)
原文:https://blog.csdn.net/sinat_16458039/article/details/50260589 最近看了好多网上获取IP地址的例子,发现好多都不完全准确,这里我写一下 ...
最新文章
- TF-IDF与余弦相似性的应用
- 有进步--第二周作业
- 读书几年收藏的编程利器网站,给大家分享出来
- Swift使用CoreLocation,你必须要看这一篇
- 代码组织和部署 文件操作 node.js 1
- Access链接表的使用
- WIN8下安装USB转串口驱动出现“文件的哈希值不在指定的目录”的解决办法
- PMP第六版-49个子过程ITTO总结
- oracle定时任务按照小时,ORACLE定时任务时间间隔设置
- Python内置函数及其用法
- 知道创宇爬虫题--代码持续更新中
- 南充计算机职业学校有哪些专业,南充旅游计算机职业中专学校2020年招生简介...
- 剥opgw光缆工具_ADSS光缆开剥光缆常用方法及开剥注意点
- oracle erp 架构,Oracle ERP (EBS)基础篇-体系架构
- 手机直播系统 服务器,手机直播系统平台搭建部署开发
- 页面分享到微博、qq、qqzone
- MDM 与 MAM 的区别
- 电阻标称值E24等系列
- 北大ACM线上比赛有感
- Android自定义组件——3D立体旋转控件
热门文章
- 缠论找日线找第二类买点买入程序
- Spring colud gateway 源码小计
- 老打印机USB改无线连接
- 计算机无法识别打印机usb,USB无法识别打印机的解决方案和教程
- 示波器带宽定义与来源
- activex chrome插件_10个超实用的设计师专属Chrome小插件
- SQL使用(一)-----联合查询
- vr视频制作软件哪个好?Nibiru creator是企业的标配
- java dvr_java – 如何设置与DVR的连接并解码数据?
- Disk for DB is too low. Cassandra state detected DOWN. Disk space for DB not retrievable