Android 5.0 Activity转场动画实战:分解与共享元素效果

0 下载量 26 浏览量 更新于2024-08-29 收藏 170KB PDF 举报
"Android5.0之Activity的转场动画的示例" 在Android开发中,Activity的转场动画是用户体验的重要组成部分。在Android 5.0(Lollipop)之前,开发者通常通过`overridePendingTransition()`方法配合补间动画来实现Activity的入场和出场效果。然而,这些早期的动画效果较为简单,缺乏多样性。从Android 5.0开始,Google引入了更加丰富和炫酷的转场动画机制,使得Activity切换更加生动和自然。 1. 旧转场动画回顾 在Android 5.0之前,开发者会使用如下的方式启动带有动画的Activity: ```java startActivity(new Intent(this, Main3Activity.class)); overridePendingTransition(R.anim.in, R.anim.out); ``` 其中,`R.anim.in`和`R.anim.out`分别代表入场和出场的补间动画XML文件,例如: 入场动画(in.xml): ```xml <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:toYDelta="0" android:fromYDelta="100%" android:duration="1500"/> </set> ``` 出场动画(out.xml): ```xml <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="1500" android:fromYDelta="0" android:toYDelta="-100%"/> </set> ``` 这种动画作用于整个Activity,无法对Activity内的特定元素进行单独的入场/出场动画设置。若需对元素进行动画处理,需要在布局XML中为每个元素指定动画,这无疑增加了开发复杂度。 2. Android 5.0之后的转场动画 在Android 5.0及更高版本中,Activity的转场动画主要包括以下两类: 2.1 分解、滑动进入、淡入淡出 这类动画效果包括元素的分解、滑动和透明度变化。开发者可以使用系统提供的动画效果,如`Slide`、`Fade`等,或者自定义转场动画。例如,要实现分解效果,可以这样启动Activity: ```java Intent intent = new Intent(this, Main3Activity.class); ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(this, (View) findViewById(R.id.some_view), "transitionName"); startActivity(intent, options.toBundle()); ``` 这里的关键是`makeSceneTransitionAnimation`方法,它允许指定一个共享的视图元素及其过渡名称,用于动画效果。 2.2 共享元素动画 共享元素动画是Android 5.0引入的一个亮点,它允许在不同Activity之间平滑地过渡共享的UI元素。比如,一个图片在第一个Activity中显示,当切换到第二个Activity时,这个图片仍然保持其位置和大小,同时伴随着平滑的过渡效果。要实现共享元素动画,需要在布局XML中为共享元素设置相同的`transitionName`属性,并在启动Activity时指定: ```xml <!-- 第一个Activity的布局 --> <ImageView android:id="@+id/image_view" android:transitionName="shared_image" ... /> <!-- 第二个Activity的布局 --> <ImageView android:id="@+id/image_view" android:transitionName="shared_image" ... /> ``` 启动Activity时: ```java Intent intent = new Intent(this, SecondActivity.class); ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(this, (View) findViewById(R.id.image_view), "shared_image"); startActivity(intent, options.toBundle()); ``` 通过这些新特性,Android开发者能够创建更加吸引人的用户界面,提高应用的视觉体验。在实际开发中,结合Android 5.0之后的转场动画,可以为用户提供更流畅、更具沉浸感的交互体验。