转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持!


前言


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

<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动画:

<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">    <explode/>    <changeBounds/>    <changeTransform/>    <changeClipBounds/>    <changeImageTransform/></transitionSet>

1.2代码设置

// 允许使用transitionsgetWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);// 设置一个exit transitiongetWindow().setExitTransition(new Explode());//new Slide()  new Fade()
Window.setEnterTransition():设置进入动画

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

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

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


2.Activity跳转方法:

进入退出动画跳转:

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

共享元素跳转:

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

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

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

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

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

5.使用ActivityOptions.makeSceneTransitionAnimation()方法

代码:

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

<?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>
如果有多个共享元素:

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

更多相关文章

  1. c#开发android时layout.axml没有智能提示
  2. 【Android】安卓六大布局基本了解
  3. Android开发指南-二维图形
  4. android 多击事件的实现方法
  5. 添加 C/C++ 代码
  6. android studio 下,Activity跳转之共享元素
  7. Android(安卓)MVVM框架熟悉
  8. Android(安卓)Jetpack-Navigation 初见
  9. Android(安卓)学习路线总结

随机推荐

  1. Android(安卓)下拉搜索提示框的实现
  2. android 跨进程访问service方法
  3. 自定义布局RelativeLayout 画网格线
  4. Android自定义VIEW取得XML的自定义值
  5. android开关机动画和铃声配置
  6. Android简明开发教程十:数据绑定Data Bind
  7. IntelliJ IDEA/Android(安卓)Studio svn
  8. SharedPreferences读写介绍
  9. cocos2d win7 安卓环境配置开发
  10. android 源代码 debug