Android 5.0学习之Activity过渡动画

原创 2014年12月08日 18:47:50

前言


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属性启用窗口的内容转换(效果)。你还可以指定进入、退出、和共享元素的转换:

  1. <style name="myTheme" parent="android:Theme.Material">  
  2.         <!-- 允许使用transitions -->  
  3.         <item name="android:windowContentTransitions">true</item>  
  4.   
  5.         <!-- 指定进入和退出transitions -->  
  6.         <item name="android:windowEnterTransition">@transition/explode</item>  
  7.         <item name="android:windowExitTransition">@transition/explode</item>  
  8.   
  9.         <!-- 指定shared element transitions -->  
  10.         <item name="android:windowSharedElementEnterTransition">  
  11.             @transition/change_image_transform</item>  
  12.         <item name="android:windowSharedElementExitTransition">  
  13.             @transition/change_image_transform</item>  
  14. </style>  
定义transition动画:

  1. <transitionSet xmlns:android="http://schemas.android.com/apk/res/android">  
  2.     <explode/>  
  3.     <changeBounds/>  
  4.     <changeTransform/>  
  5.     <changeClipBounds/>  
  6.     <changeImageTransform/>  
  7. </transitionSet>  

1.2代码设置

  1. // 允许使用transitions  
  2. getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);  
  3.   
  4. // 设置一个exit transition  
  5. getWindow().setExitTransition(new Explode());//new Slide()  new Fade()  
Window.setEnterTransition():设置进入动画

Window.setExitTransition():设置退出效果

Window.setSharedElementEnterTransition():设置共享元素的进入动画

Window.setSharedElementExitTransition():设置共享元素的退出动画


2.Activity跳转方法:

进入退出动画跳转:

  1. startActivity(intent,  
  2.               ActivityOptions.makeSceneTransitionAnimation(this).toBundle());  

共享元素跳转:

为了使有一个共享元素的两个activities间使用过渡动画:

1.在你的主题中启用窗口内容过渡

2.在你的主题样式中指定共享元素的过渡

3.定义你的过渡动画为XML资源

4.使用android:transitionName属性给两个布局中的共享元素指定一个相同的名字(名字一定不要写错)

5.使用ActivityOptions.makeSceneTransitionAnimation() 方法

代码:

  1. // 共享跳转  
  1. intent = new Intent(Transitions.this, Transitions4.class);  
  2.                 startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this,view,"shareName").toBundle());  
跳转目标xml:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2.   
  3. <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  4.                 android:orientation="vertical"  
  5.                 android:layout_width="match_parent"  
  6.                 android:layout_height="match_parent"  
  7.                 android:background="@android:color/white">  
  8.     <LinearLayout  
  9.             android:orientation="horizontal"  
  10.             android:id="@+id/ll"  
  11.             android:background="#2faaf3"  
  12.             android:elevation="2dip"  
  13.             android:layout_width="fill_parent" android:layout_height="200dp"/>  
  14.     <TextView  
  15.             android:id="@+id/btn_test"  
  16.             android:elevation="8dip"  
  17.             android:padding="10dip"  
  18.             android:layout_x="300dip"  
  19.             android:layout_y="175dip"  
  20.             android:transitionName="shareName"  
  21.             android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/myrect"  
  22.             android:layout_below="@+id/ll" android:layout_alignParentEnd="true"  
  23.             android:layout_marginRight="56dp"/>  
  24. </AbsoluteLayout>  
如果有多个共享元素:

  1. ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,  
  2.         Pair.create(view1, "agreedName1"),  
  3.         Pair.create(view2, "agreedName2"));  
去试试吧~!

android 5.x—过渡动画Transition

android 5.x 提供了3中过渡动画: 进入:一个进入的过渡(动画)决定activity中的所有的视图怎么进入屏幕 退出:一个退出的过渡(动画)决定一个activity中的所有视图怎么退出屏幕。...
  • Peak1Chen
  • Peak1Chen
  • 2016年05月06日 15:57
  • 2502

android5.0之Activity过渡动画

android5.0之Activity过渡动画Android5.0提供了3种Transition类型。 进入动画:一个进入的过渡动画决定一个Activity中的所有视图怎么进入屏幕。 退出动画:一个退...
  • qq_33689414
  • qq_33689414
  • 2016年06月18日 17:53
  • 5416

Android 5.X Activity过渡动画,以及漂亮的共享元素效果

曾经的Android在Activity进行跳转的时候,只是非常生硬的进行切换,即使使用overPendingtransition(int inId,int outId)这个方法来给Activity增加...
  • qq_19560943
  • qq_19560943
  • 2017年01月25日 16:38
  • 1551

实现Android5.0过渡动画兼容库

Android5.0之后为我们提供了许多炫酷的界面过渡效果,其中共享元素过渡也是很有亮点的一个效果,但这个效果只能在Android5.0之后使用,那今天我们就来将共享元素过渡效果兼容到Android4...
  • zhangke3016
  • zhangke3016
  • 2016年11月06日 23:26
  • 3608

android过渡动画之makeSceneTransitionAnimation学习笔记

android的过渡动画已经出了好久了,一直没怎么使用。自己还是懒啊,昨天在看blog的时候,看到了亓斌的blog里有相关的介绍。正好,自己也就跟着学一下,写一个例子做为应用。 http://blo...
  • chenguang79
  • chenguang79
  • 2016年12月07日 16:00
  • 4217

Android自定义加载动画库zLoading

Android自定义动画总结更新一下,增加了对话框Dialog模式,今天来简单的分享下如何使用吧。效果图如下: GIF有点大,手机流量请三思。 效果图 演示效果动画 上一个动画链接:Android自...
  • littlesmallless
  • littlesmallless
  • 2017年04月11日 00:45
  • 6510

Android的加载动画AVLoadingIndicatorView

AVLoadingIndicatorView是一个实现了各种各样加载效果的库,每一种效果都很精美。老规矩,上图: 项目地址: https://github.com/8181...
  • chenzhi0712
  • chenzhi0712
  • 2017年03月07日 10:56
  • 2072

android 使用View Animation实现动画加载界面

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 今天给大家一个使用View Animation实现动画加载界面的实现。     首先先看一下实现...
  • jdsjlzx
  • jdsjlzx
  • 2015年01月04日 10:45
  • 21433

【Android】Android开发之常用的loading等待效果实现,仿微博等待动画。两种实现方式详解

作者:程序员小冰 (转载请说明出处)博客地址:http://blog.csdn.net/qq_21376985长期维护的Android项目,里面包括常用功能实现,以及知识点详解, 当然还有Java中的...
  • qq_21376985
  • qq_21376985
  • 2016年10月18日 11:24
  • 16990

Android自定义加载动画(持续更新中...)

准备做一个Android自定义加载动画的合集,主要通过自定义View实现一些常见的加载动画,也会模仿一些主流APP好看的加载动画。项目源码同步上传到了个人github上,欢迎大家star,fork,提...
  • tyk0910
  • tyk0910
  • 2016年12月16日 10:37
  • 8713
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 5.0学习之Activity过渡动画
举报原因:
原因补充:

(最多只允许输入30个字)