1.使用overridePendingTransition方法实现Activity跳转动画

overridePendingTransition方法是Activity中提供的Activity跳转动画方法,通过该方法可以实现Activity跳转时的动画效果,简单例子如下:

Intent intent =newIntent(MainActivity.this, SecondActivity.class);

startActivity(intent);

overridePendingTransition(R.anim.slide_in_left, R.anim.slide_in_left);

注意:overridePendingTransition在startActivity或者是finish方法立刻执行才有效

2、使用style的方式定义Activity的切换动画

(1)定义Application的style

Android:icon="@mipmap/ic_launcher"

Android:label="@string/app_name"

Android:supportsRtl="true"

Android:theme="@style/AppTheme">

(2)定义具体的AppTheme样式其中这里的windowAnimationStyle就是我们定义Activity切换动画的style。而@anim/slide_in_top就是我们定义的动画文件,也就是说通过为Appliation设置style,然后为windowAnimationStyle设置动画文件就可以全局的为Activity的跳转配置动画效果。

@color/colorPrimary

@color/colorPrimaryDark

@color/colorAccent

@style/activityAnim

@anim/slide_in_top

@anim/slide_in_top

而在windowAnimationStyle中存在四种动画:

activityOpenEnterAnimation 用于设置打开新的Activity并进入新的Activity展示的动画

activityOpenExitAnimation 用于设置打开新的Activity并销毁之前的Activity展示的动画

activityCloseEnterAnimation 用于设置关闭当前Activity进入上一个Activity展示的动画

activityCloseExitAnimation 用于设置关闭当前Activity时展示的动画

3.使用ActivityOptions切换动画实现Activity跳转动画

通过overridePendingTransition方法基本上可以满足我们日常中对Activity跳转动画的需求了,但MD风格出来之后,overridePendingTransition这种老旧、生硬的方式怎么能适合我们的MD风格的App呢?google在新的sdk中给我们提供了另外一种Activity的过度动画——ActivityOptions。并且提供了兼容包——ActivityOptionsCompat。ActivityOptionsCompat是一个静态类,提供了相应的Activity跳转动画效果,通过其可以实现不少炫酷的动画效果。

(1)在跳转的Activity中设置contentFeature

@Override protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// 设置contentFeature,可使用切换动画

getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);

Transition explode = TransitionInflater.from(this).inflateTransition(Android.R.transition.explode);

getWindow().setEnterTransition(explode);

setContentView(R.layout.activity_three);

}

(2)在startActivity执行跳转逻辑的时候调用startActivity的重写方法,执行ActivityOptions.makeSceneTransitionAnimation方法

/** * 点击按钮,实现Activity的跳转操作 * 通过Android5.0及以上代码的方式实现activity的跳转动画 */

button3.setOnClickListener(new View.OnClickListener() {

@Override public void onClick(View v) {

Intent intent = new Intent(MainActivity.this, ThreeActivity.class);

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

}

});

activity跳转动画效果

(四)使用ActivityOptions之后内置的动画效果通过style的方式

这种方式其实就是通过style的方式展示和使用ActivityOptions过度动画,下面是实现通过定义style方式定义过度动画的步骤:

(1)编写过度动画文件

首先我们需要在Application项目res目录下新建一个transition目录,然后创建资源文件,然后使用这些系统自带的过渡动画效果,这里设置了过度时长为300ms。

(2)定义style文件

@color/colorPrimary

@color/colorPrimaryDark

@color/colorAccent

@transition/activity_explode

@transition/activity_explode

在Application的style文件中添加:

@transition/activity_explode

@transition/activity_explode

并指定过渡动画效果为我们刚刚定义的过渡动画文件。

(3)执行跳转逻辑点击按钮,实现Activity的跳转操作 * 通过Android5.0及以上style的方式实现activity的跳转动画

button4.setOnClickListener(new View.OnClickListener()

{ @Override public void onClick(View v) {

/** * 调用ActivityOptions.makeSceneTransitionAnimation实现过度动画 */

Intent intent = new Intent(MainActivity.this, FourActivity.class);

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

}

});

这样执行之后也可以展示出Activity跳转过度动画了,其和通过代码方式实现的效果是类似的,而且这种动画效果是全局的。

(五)使用ActivityOptions动画共享组件的方式实现跳转Activity动画

这里的共享组件动画效果是指将前面一个Activity的某个子View与后面一个Activity的某个子View之间有过渡效果,即在这种过度效果下实现Activity的跳转操作。那么如何实现两个组件View之间实现过渡效果呢?

(1)定义共享组件在Activity a中的button按钮点击transitionName属性:

Android:layout_width="match_parent"

Android:layout_height="wrap_content"

Android:layout_below="@+id/button4"

Android:layout_marginTop="10dp"

Android:layout_marginRight="10dp"

Android:layout_marginLeft="10dp" Android:text="组件过度动画"

Android:background="@color/colorPrimary"

Android:transitionName="shareNames" />

在Activity b的布局文件中为组件定义transitionName属性,这样这两个组件相当于有了过度对应关系,这里需要注意的是这两个组件的transitionName属性的值必须是相同的。

xmlns:Android="http://schemas.Android.com/apk/res/Android"

Android:id="@+id/activity_second"

Android:layout_width="match_parent"

Android:layout_height="match_parent"

Android:gravity="center_horizontal" Android:orientation="vertical"

Android:transitionName="shareNames" >

Android:layout_width="match_parent"

Android:layout_height="match_parent"

Android:background="@color/colorAccent"

Android:layout_marginTop="10dp"

Android:layout_marginBottom="10dp" />

(2)调用startActivity执行跳转动画点击按钮,实现Activity的跳转操作 * 通过Android5.0及以上共享组件的方式实现activity的跳转动画

button5.setOnClickListener(new View.OnClickListener() {

@Override public void onClick(View v) {

Intent intent = new Intent(MainActivity.this, FiveActivity.class);

startActivity(intent,

ActivityOptions.makeSceneTransitionAnimation(MainActivity.this, button5, "shareNames").toBundle()); }

}

);

需要说明的是这里调用的ActivityOptions.makeSceneTransitionAnimation方法,传递了三个参数,其中第一个参数为context对象,第二个参数为启动Activity的共享组件,第三个参数为启动Activity的共享组件transitionName属性值。这样经过调用之后我们就实现了从Activity a跳转到Activity b的时候a中的组件到b中组件的过度效果。

这里写图片描述

过渡动画总结

overridePendingTransition方法从Android2.0开始,基本上能够覆盖我们activity跳转动画的需求;

ActivityOptions API是在Android5.0开始的,可以实现一些炫酷的动画效果,更加符合MD风格;

ActivityOptions还可以实现两个Activity组件之间的过度动画;

android 页面过渡动画,Activity过渡动画的实现方法相关推荐

  1. android 应用切换动画,怎么在Android应用中利用Activity对动画进行切换

    怎么在Android应用中利用Activity对动画进行切换 发布时间:2020-11-27 16:19:53 来源:亿速云 阅读:107 作者:Leah 今天就跟大家聊聊有关怎么在Android应用 ...

  2. Android 编程下设置 Activity 切换动画

    为 Activity 设置切换动画 我们知道,我们可以在 AndroidManifest.xml 文件中,通过 android:theme 属性设置 Activity 的主题.主题中定义了关于 Act ...

  3. android中的所有activity间动画跳转

    在之前的一篇博客里介绍过activity间动画跳转的问题,但是真正做软件发现并不能满足我们的要求,因为使用overridePendingTransition(int enterAnim, intexi ...

  4. Android 动画之View动画效果和Activity切换动画效果

    View动画效果: 1.>>Tween动画 通过对View的内容进行一系列的图形变换(平移.缩放.旋转.透明度变换)实现动画效果,补间动画需要使用<set>节点作为根节点,子节 ...

  5. android窗口动画和过渡动画(activity和dialog)

    from:http://blog.sina.com.cn/s/blog_ba23fa6f0102v32g.html 窗口动画和过渡动画是指在窗口(activity或dialog)切换时的显示动画,窗口 ...

  6. Android——浅析Activity过渡动画

    Activity过渡动画 前言 分解动画 效果视频 解析 滑动动画 效果视频 解析 淡出动画 效果视频 解析 共享元素 共享单个元素 效果视频 解析 共享多个元素 效果视频 全部代码 第一个Activ ...

  7. android 延时播放动画,HollyTransition: 让APP丝滑般流畅:深入解读Android过渡动画Transition. 共享元素动画、场景动画、过场动画、延时动画...

    HollyTransition 零.导读 深入解读Android过渡动画Transition: 页面切换动画(过场动画) 共享元素动画 延时动画 场景动画 一.Transition前世今生 为了支持各 ...

  8. Android 动画与过渡

    (一) 动画 JetpackCompose提供了强大且可扩展的API,可以轻松地在应用程序的UI中实现各种动画.下面描述了如何使用这些API以及根据动画场景使用哪些API. 动画在现代移动应用程序中至 ...

  9. Android 动画和过渡

    Android 动画和过渡 (一) 动画 JetpackCompose提供了强大且可扩展的API,可以轻松地在应用程序的UI中实现各种动画.下面描述了如何使用这些API以及根据动画场景使用哪些API. ...

最新文章

  1. 助你进大厂,这些Mysql索引底层知识你是必须知道的。
  2. 【semantic】本体和语义网的研究方向
  3. 计算机视觉开源库OpenCV之CommandLineParser使用方法
  4. 陕西科技大学18计算机调剂,2018年陕西科技大学考研调剂信息公布
  5. 列表、元组、字典、集合的定义、操作与综合练习
  6. 这篇 Linux 总结得很棒啊!
  7. 眼花缭乱的数据库,怎样选择?给你这个书单,想学哪个学哪个
  8. android自定义图片过渡效果,教你做出炫酷的Android动画效果
  9. 超市收银机属于通用计算机,我是一名刚入超市做收银的,我录入货品后微信收钱之后没有在超市电脑上按确定导入账目导致超市系统上多出来钱这改正过来会很难吗?...
  10. 一个经典的多线程同步问题
  11. 推荐系统数据稀疏性问题
  12. springboot单元测试_springboot2.x基础教程:单元测试
  13. 写滚动字幕html5源码,[转载]滚动字幕的源代码
  14. Windows10 Windows许可证即将过期
  15. 如何把PDF中的英文翻译成中文
  16. 约当标准型_特征向量到约当标准型
  17. Vue最佳实践(项目经验总结,定期更新)
  18. 什么是知识图谱?通俗易懂
  19. XPO学习(6)----实现一个简单的留言薄(ASP.NET)
  20. 软件缺陷的严重程度和优先级

热门文章

  1. 【Vegas原创】分别用Toad、EM解表锁
  2. c#中将HTML文件转换成PDF文件
  3. c++中关于SQLite中文乱码的解决方法
  4. C#中跨线程访问控件问题解决方案
  5. java.net.UnknownServiceException: CLEARTEXT communication to wanandroid.com not permitted by network
  6. android自带中文字体,Android更换系统默认显示的字体使用自定义字体
  7. matlab中nlfilter函数,matlab的一些关于块分类的函数~~~
  8. Android23版本以上删除HttpClient的解决办法
  9. vc连接mysql 查询_vc连接数据库中查询代码如何写呀 急急急!!!!!!
  10. 批量设置 style