Android 5.0学习之Activity过渡动画
2017-03-29 16:34
441 查看
前言
Activity Transition:
提供了三种Transition类型:
进入:一个进入的过渡(动画)决定activity中的所有的视图怎么进入屏幕。
退出:一个退出的过渡(动画)决定一个activity中的所有视图怎么退出屏幕。
共享元素:一个共享元素过渡(动画)决定两个activities之间的过渡,怎么共享(它们)的视图。
它的作用就是共享两个acitivity种共同的元素,在Android 5.0下支持如下效果:
changeBounds - 改变目标视图的布局边界
changeClipBounds - 裁剪目标视图边界
changeTransform - 改变目标视图的缩放比例和旋转角度
changeImageTransform - 改变目标图片的大小和缩放比例
使用步骤:
1.设置动画(两种方式):
1.1xml设置
当你定义继承了material主题样式时,使用android:windowContentTransitions属性启用窗口的内容转换(效果)。你还可以指定进入、退出、和共享元素的转换:
[html] view
plaincopy
<style name="myTheme" parent="android:Theme.Material">
<!-- 允许使用transitions -->
<item name="android:windowContentTransitions">true</item>
<!-- 指定进入和退出transitions -->
<item name="android:windowEnterTransition">@transition/explode</item>
<item name="android:windowExitTransition">@transition/explode</item>
<!-- 指定shared element transitions -->
<item name="android:windowSharedElementEnterTransition">
@transition/change_image_transform</item>
<item name="android:windowSharedElementExitTransition">
@transition/change_image_transform</item>
</style>
定义transition动画:
[html] view
plaincopy
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<explode/>
<changeBounds/>
<changeTransform/>
<changeClipBounds/>
<changeImageTransform/>
</transitionSet>
1.2代码设置
[java] view
plaincopy
// 允许使用transitions
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
// 设置一个exit transition
getWindow().setExitTransition(new Explode());//new Slide() new Fade()
Window.setEnterTransition():设置进入动画
Window.setExitTransition():设置退出效果
Window.setSharedElementEnterTransition():设置共享元素的进入动画
Window.setSharedElementExitTransition():设置共享元素的退出动画
2.Activity跳转方法:
进入退出动画跳转:
[java] view
plaincopy
startActivity(intent,
ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
共享元素跳转:
为了使有一个共享元素的两个activities间使用过渡动画:
1.在你的主题中启用窗口内容过渡
2.在你的主题样式中指定共享元素的过渡
3.定义你的过渡动画为XML资源
4.使用android:transitionName属性给两个布局中的共享元素指定一个相同的名字(名字一定不要写错)
5.使用ActivityOptions.makeSceneTransitionAnimation() 方法
代码:
[java] view
plaincopy
// 共享跳转
[java] view
plaincopy
intent = new Intent(Transitions.this, Transitions4.class);
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this,view,"shareName").toBundle());
跳转目标xml:
[html] view
plaincopy
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<LinearLayout
android:orientation="horizontal"
android:id="@+id/ll"
android:background="#2faaf3"
android:elevation="2dip"
android:layout_width="fill_parent" android:layout_height="200dp"/>
<TextView
android:id="@+id/btn_test"
android:elevation="8dip"
android:padding="10dip"
android:layout_x="300dip"
android:layout_y="175dip"
android:transitionName="shareName"
android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/myrect"
android:layout_below="@+id/ll" android:layout_alignParentEnd="true"
android:layout_marginRight="56dp"/>
</AbsoluteLayout>
如果有多个共享元素:
[java] view
plaincopy
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
Pair.create(view1, "agreedName1"),
Pair.create(view2, "agreedName2"));
去试试吧~!
Activity Transition:
提供了三种Transition类型:
进入:一个进入的过渡(动画)决定activity中的所有的视图怎么进入屏幕。
退出:一个退出的过渡(动画)决定一个activity中的所有视图怎么退出屏幕。
共享元素:一个共享元素过渡(动画)决定两个activities之间的过渡,怎么共享(它们)的视图。
<span style="font-size:18px;color:#ff6666;">支持这些进入和退出的过渡动画:</span>
<span style="font-size:18px;">explode(分解) –进或出地移动视图,从屏幕中间 slide(滑动) -进或出地移动视图,从屏幕边缘 fade(淡出) –通过改变屏幕上视图的不透明度达到添加或者移除视图(的效果)</span>
<span style="font-size:18px;color:#ff6666;">在以上动画基础上还可以添加还支持共享元素过渡:(以上效果的共享元素效果基于分解动画基础上进行)</span>
它的作用就是共享两个acitivity种共同的元素,在Android 5.0下支持如下效果:
changeBounds - 改变目标视图的布局边界
changeClipBounds - 裁剪目标视图边界
changeTransform - 改变目标视图的缩放比例和旋转角度
changeImageTransform - 改变目标图片的大小和缩放比例
使用步骤:
1.设置动画(两种方式):
1.1xml设置
当你定义继承了material主题样式时,使用android:windowContentTransitions属性启用窗口的内容转换(效果)。你还可以指定进入、退出、和共享元素的转换:
[html] view
plaincopy
<style name="myTheme" parent="android:Theme.Material">
<!-- 允许使用transitions -->
<item name="android:windowContentTransitions">true</item>
<!-- 指定进入和退出transitions -->
<item name="android:windowEnterTransition">@transition/explode</item>
<item name="android:windowExitTransition">@transition/explode</item>
<!-- 指定shared element transitions -->
<item name="android:windowSharedElementEnterTransition">
@transition/change_image_transform</item>
<item name="android:windowSharedElementExitTransition">
@transition/change_image_transform</item>
</style>
定义transition动画:
[html] view
plaincopy
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<explode/>
<changeBounds/>
<changeTransform/>
<changeClipBounds/>
<changeImageTransform/>
</transitionSet>
1.2代码设置
[java] view
plaincopy
// 允许使用transitions
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
// 设置一个exit transition
getWindow().setExitTransition(new Explode());//new Slide() new Fade()
Window.setEnterTransition():设置进入动画
Window.setExitTransition():设置退出效果
Window.setSharedElementEnterTransition():设置共享元素的进入动画
Window.setSharedElementExitTransition():设置共享元素的退出动画
2.Activity跳转方法:
进入退出动画跳转:
[java] view
plaincopy
startActivity(intent,
ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
共享元素跳转:
为了使有一个共享元素的两个activities间使用过渡动画:
1.在你的主题中启用窗口内容过渡
2.在你的主题样式中指定共享元素的过渡
3.定义你的过渡动画为XML资源
4.使用android:transitionName属性给两个布局中的共享元素指定一个相同的名字(名字一定不要写错)
5.使用ActivityOptions.makeSceneTransitionAnimation() 方法
代码:
[java] view
plaincopy
// 共享跳转
[java] view
plaincopy
intent = new Intent(Transitions.this, Transitions4.class);
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this,view,"shareName").toBundle());
跳转目标xml:
[html] view
plaincopy
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<LinearLayout
android:orientation="horizontal"
android:id="@+id/ll"
android:background="#2faaf3"
android:elevation="2dip"
android:layout_width="fill_parent" android:layout_height="200dp"/>
<TextView
android:id="@+id/btn_test"
android:elevation="8dip"
android:padding="10dip"
android:layout_x="300dip"
android:layout_y="175dip"
android:transitionName="shareName"
android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/myrect"
android:layout_below="@+id/ll" android:layout_alignParentEnd="true"
android:layout_marginRight="56dp"/>
</AbsoluteLayout>
如果有多个共享元素:
[java] view
plaincopy
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
Pair.create(view1, "agreedName1"),
Pair.create(view2, "agreedName2"));
去试试吧~!
相关文章推荐
- Android 5.0学习之Activity过渡动画
- ym—— Android 5.0学习之Activity过渡动画
- Android 5.0学习之Activity过渡动画
- Android 5.0学习之Activity共享元素过渡动画
- android 5.0 -- Activity 过渡动画
- Android学习之Android 5.0分享动画实现微信点击全屏效果
- Android 对Activity设置统一的过渡动画效果
- Android 5.X 新特性详解(三)——Activity过渡动画
- android中Activity切换动画学习心得
- Android 5.0学习之动画
- Android 5.0学习之动画
- Android 5.0 Activity切换动画
- Android 5.0 Lollipop中新的Activity过渡效果介绍
- Android进阶UI之5.0——过渡动画
- 关于android 5.0转场动画的学习
- Android学习之5.X过渡动画的实现
- android Lollipop(5.0)--activity跳转动画
- 【android】平滑Activity过渡动画效果,类库已分离,使用只需1行代码
- 2014-11-6Android学习------activity切换特效--------动画Animation学习篇
- Android 5.0 Activity切换动画