android转场动画的两种方式
2017-05-25 15:30
281 查看
有空学习一下转场动画的使用
参考:http://blog.csdn.net/u012702547/article/details/51289789
用法:
首先,把之前启动Activity的代码改成下面的写法:
添加完成之后,在Main2Activity中设置该Activity的进出场动画即可:
1.分解
OK,就是这么简单,哦,对了,大家一定要记得在styles.xml文件中添加下面一行代码,表示激活Activity中元素的过渡效果:
2.滑动进入
3.淡入淡出
4.共享元素
使用共享元素动画的时候,我们需要首先给MainActivity和Main2Activity中的两个button分别添加Android:transitionName=”mybtn”属性,并且该属性的值要相同,这样系统才知道这两个控件是共享元素。设置完成之后,接下来就是启动Activity的代码了,如下:
如果需要有多个共享元素,使用Pair
步骤:
1.在 res/ 目录下创建 transition 文件夹,在该文件夹下定义界面转场动画和共享元素的动画。
2.在 res/value/style 文件中为每个 Activity 指定转场动画的 style ,并在 AndroidManifest.xml 文件中为每个 Activity 设置对应的 android:theme。
3.在 Activity 调用 startActivity() 切换动画前,使用 ActivityOptionsCompat 来创建转场动画时的共享对象。
同样是上面的三种效果,这里只演示一种集合
第一步:
detail_enter.xml
main_exit.xml
标签里面定义需要转场(或者不需要转场)的目标 id ,这个 id 可以使系统自带的,也可以是我们自己视图中的 view 的 id,每一个 id 需要单独在 标签中定义,android:targetId 表示目标 ID 需要进行过渡转换的 view,而 android:excludeId 表示我们不需要该 ID 的 view 进行过渡转场。上面的那段代码的意思是说,除了状态栏和导航栏以外所有的 view,都执行 explode 动画。
第二步:
styles.xml
第三步:
方法一:在代码中设置
分解,滑动进入,淡入淡出参考: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 animation动画效果的两种实现方式
- Android系统移植与调试之------->如何修改开机动画的两种方式剖析【转】
- Android开发之常用的loading等待效果实现,仿微博等待动画。两种实现方式详解
- Android动画的两种使用方式。
- 【Android】Android开发之常用的loading等待效果实现,仿微博等待动画。两种实现方式详解
- Android_设置动画效果的两种方式
- Android 页面跳转动画的两种实现方式
- android旋转动画的两种实现方式
- Android 给layout设置动画的两种方式
- android实现图片闪烁动画效果的两种实现方式(实用性高)
- Android动画Animation的两种加载执行方式
- Android 图片旋转动画两种实现方式
- Android系统移植与调试之------->如何修改开机动画的两种方式剖析
- 【Android开发】图形图像处理技术-实现Android动画的两种方式
- android位移动画的两种实现方式
- android旋转动画的两种实现方式
- Android系统移植与调试之------->如何修改开机动画的两种方式剖析
- android位移动画的两种实现方式
- 【Android】Android开发之常用的loading等待效果实现,仿微博等待动画。两种实现方式详解