android5.x之Activity过渡动画
来源:互联网 发布:matplotlib python 编辑:程序博客网 时间:2024/05/17 03:06
android5.0之Activity过渡动画
Android5.0提供了3种Transition类型。
- 进入动画:一个进入的过渡动画决定一个Activity中的所有视图怎么进入屏幕。
- 退出动画:一个退出的过渡动画决定一个Activity中的所有视图怎么退出屏幕。
- 共享元素:一个共享元素过渡动画决定2个Activitys之间的过渡,怎么共享他们的视图。
其中进入和退出效果有:
- explode(分解):从屏幕中间进或出,移动视图。
- slide(滑动):从屏幕边缘进或出,移动试图。
- fade(淡出):通过改变屏幕上的视图的不透明度,达到添加或移除视图。
共享元素包括:
- changeBounds:改变目标视图的布局边界。
- changeClipBounds:裁剪目标视图边界。
- changeTransform:改变目标的缩放比例和旋转角度。
- changeImageTransform:改变目标图片的大小和缩放比例。
- overlay
效果图
过渡动画有2中实现方案,一种通过xml实现(全局),一种是通过代码实现,在此之前介绍介个方法
- setExitTransition() - 当A 跳转到 B时,使A中的View退出场景的transition
- setEnterTransition() - 当A 跳转到 B时,使B中的View进入场景的transition
- setReturnTransition() - 当B 返回到 A时,使B中的View退出场景的transition
- setReenterTransition() - 当B 返回到 A时,使A中的View进入场景的transition
A:进入和退出动画效果
xml实现
1.在style.xml中设置
<!--设置支持过渡动画--><item name="android:windowContentTransitions">true</item><!--设置进入动画 通过分解方式进入--><item name="android:windowEnterTransition">@transition/explode</item> <!--设置退出动画 通过分解方式退出--><item name="android:windowExitTransition">@transition/explode</item><item name="android:windowReenterTransition">@transition/explode</item><item name="android:windowReturnTransition">@transition/explode</item>
2.在res目录下,新建一个transition文件夹,创建xxx.xml文件(就是动画xml)
explode.xml<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"> <explode android:duration="500" android:interpolator="@android:interpolator/accelerate_decelerate" /></transitionSet>silde.xml<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"> <slide android:duration="500" android:interpolator="@android:interpolator/accelerate_decelerate" /></transitionSet>fade.xml<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"> <fade android:duration="500" android:interpolator="@android:interpolator/accelerate_decelerate" /></transitionSet>
3.跳转Activity页面代码(比较容易忘):
Intent intent = new Intent(MainActivity.this, SlideActivity.class); startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
代码实现
1.在跳转Activity页面时,例如A页面跳转到B页面:A页面关键代码:
Intent intent = new Intent(MainActivity.this, SlideActivity.class); startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
B页面关键代码:代码需放在setContentView()之前
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);getWindow().setEnterTransition(new Explode());getWindow().setExitTransition(new Explode());//getWindow().setReenterTransition(new Explode());//getWindow().setReturnTransition(new Explode());setContentView()
B:共享元素动画
- setSharedElementEnterTransition();A->B,B进入动画
- setSharedElementExitTransition();A->B,A退出动画
- setSharedElementReenterTransition();B->A,A进入动画
- setSharedElementReturnTransition();B->A,B退出动画
xml实现
1.在style.xml中
<!--设置支持过渡动画--><item name="android:windowContentTransitions">true</item><item name="android:windowSharedElementEnterTransition">@transition/share1</item><item name="android:windowSharedElementExitTransition">@transition/share2</item><item name="android:windowSharedElementReenterTransition">@transition/share3</item><item name="android:windowSharedElementReturnTransition">@transition/share4</item>
2.xml动画(res/transition/xxx.xml)
share1.xml<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"> <changeBounds 改变目标视图的布局边界 android:duration="500" android:interpolator="@android:interpolator/accelerate_decelerate" /></transitionSet>share2.xml<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"> <changeClipBounds 裁剪目标视图边界 android:duration="500" android:interpolator="@android:interpolator/accelerate_decelerate" /></transitionSet>share3.xml<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"> <changeTransform 改变目标视图的缩放比例和旋转角度 android:duration="500" android:interpolator="@android:interpolator/accelerate_decelerate" /></transitionSet>share4.xml<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"> <changeImageTransform 改变目标视图图片的大小和缩放比例 android:duration="500" android:interpolator="@android:interpolator/accelerate_decelerate" /></transitionSet>set动画中可以多种动画组合
3.跳转页面代码:
一个共享元素 Intent intent3 = new Intent(MainActivity.this, Share1Activity.class); startActivity(intent3, ActivityOptions.makeSceneTransitionAnimation(this, button4, "share").toBundle());多个共享元素startActivity(intent3, ActivityOptions.makeSceneTransitionAnimation(this, new Pair<View, String>(button4, "share"), new Pair<View, String>(button4, "share")).toBundle());new Pair()是可变参数共享元素的key:view控件 ,value:与android:transitionName="share" 相同(也可以通过代码设置setTransitionName())<Button android:id="@+id/btn4" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="share" android:transitionName="share" />
0 0
- android5.x之Activity过渡动画
- android5.0之Activity过渡动画
- android5.0之Activity过渡动画
- Android5.X Activity跳转动画
- Android 5.x的Activity过渡动画.
- Android5.0Activity的转场动画、过渡动画、过场动画、跳转动画
- Android 5.0学习之Activity过渡动画
- Android 5.0学习之Activity过渡动画
- Android5.0之Activity的转场动画
- Android5.0之Activity的转场动画
- Android5.0之Activity的转场动画
- Android5.0之Activity的转场动画
- Android5.0之Activity的转场动画
- Android5.0之Activity的转场动画
- 群英传之Android 5.X过渡动画
- 关闭Activity过渡动画
- Activity过渡动画
- Activity过渡动画
- 关于内部类的一些Demo要点
- Hibernate openSession() 和 getCurrentSession的区别
- 浅谈软件兼容性测试
- ConvertUtils工具类的使用
- 微信小程序(微信应用号)组件讲解[申明:来源于网络]
- android5.x之Activity过渡动画
- ElasticSearch详解一之——client连接
- build spark standalone NoClassDefFoundError com/fasterxml/jackson/databind/Module
- [Swift]String Relative
- AdvStringGrid 使用技巧(2)(转载)
- 巴西本地支付_Boleto
- JAVA 简单的计算器
- android基本架构
- 基于windows的Ubuntu双系统安装