实现activity跳转动画的若干种方式
第一种: (使用overridePendingTransition方法实现Activity跳转动画)
在Activity中代码如下
/**
* 点击按钮实现跳转逻辑
*/
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/**
* 在调用了startActivity方法之后立即调用overridePendingTransition方法
*/
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_in_left);
}
});
在anim文件下代码如下
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shareInterpolator="false"
Android:zAdjustment="top"> <translate
Android:duration="200"
Android:fromXDelta="-100.0%p"
Android:toXDelta="0.0" />
</set>
第二种: (使用style的方式定义Activity的切换动画)
从清单文件入手
<!-- 系统Application定义 -->
<application
Android:allowBackup="true"
Android:icon="@mipmap/ic_launcher"
Android:label="@string/app_name"
Android:supportsRtl="true"
Android:theme="@style/AppTheme">
进入AppTheme
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="Android:windowAnimationStyle">@style/activityAnim</item>
</style> <!-- 使用style方式定义activity切换动画 -->
<style name="activityAnim">
<item name="Android:activityOpenEnterAnimation">@anim/slide_in_top</item>
<item name="Android:activityOpenExitAnimation">@anim/slide_in_top</item>
</style>
!
在windowAnimationStyle中存在四种动画
activityOpenEnterAnimation // 用于设置打开新的Activity并进入新的Activity展示的动画
activityOpenExitAnimation // 用于设置打开新的Activity并销毁之前的Activity展示的动画
activityCloseEnterAnimation // 用于设置关闭当前Activity进入上一个Activity展示的动画
activityCloseExitAnimation // 用于设置关闭当前Activity时展示的动画
Activity中的测试代码如下
/**
* 点击按钮,实现Activity的跳转操作
* 通过定义style的方式实现activity的跳转动画
*/
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/**
* 普通的Intent跳转Activity实现
*/
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
});
第三种: (使用ActivityOptions切换动画实现Activity跳转动画)
第一步
@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_main);
}
第二步
/**
* 点击按钮,实现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());
}
});
第四种: (使用ActivityOptions之后内置的动画效果通过style的方式)
先在Application项目res目录下新建一个transition目录,然后创建资源文件activity_explode,编写如下代码
<explode xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:duration="300" />
定义style文件
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item> <item name="Android:windowEnterTransition">@transition/activity_explode</item>
<item name="Android:windowExitTransition">@transition/activity_explode</item>
</style>
执行跳转逻辑
/**
* 点击按钮,实现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());
}
});
第五种: (使用ActivityOptions动画共享组件的方式实现跳转Activity动画)
在Acitivity_A中布局文件中定义共享组件
<Button
Android:id="@+id/button5"
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"
/>
在Acitivity_B中布局文件中关联共享组件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
> <TextView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@color/colorAccent"
Android:layout_marginTop="10dp"
Android:layout_marginBottom="10dp"
/>
执行跳转逻辑
/**
* 点击按钮,实现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());
}
});
总结:
overridePendingTransition方法从Android2.0开始,基本上能够覆盖我们activity跳转动画的需求;
ActivityOptions API是在Android5.0开始的,可以实现一些炫酷的动画效果,更加符合MD风格;
ActivityOptions还可以实现两个Activity组件之间的过度动画; *
关于我
微信公众号:infree6 或者直接扫码

实现activity跳转动画的若干种方式的更多相关文章
- 【起航计划 004】2015 起航计划 Android APIDemo的魔鬼步伐 03 App->Activity->Animation Activity跳转动画 R.anim.×× overridePendingTransition ActivityOptions类
App->Activity->Animation示例用于演示不同Activity切换时动态效果. android 5.0例子中定义了6种动画效果: 渐变Fade In 缩放Zoom In ...
- (转)Android四大组件——Activity跳转动画、淡出淡入、滑出滑入、自定义退出进入
文章转自:http://blog.csdn.net/qq_30379689/article/details/52494270 Activity跳转动画.淡入淡出.滑入滑出.自定义退出进入 前言: 系统 ...
- Android四大组件——Activity跳转动画、淡出淡入、滑出滑入、自定义退出进入
Activity跳转动画.淡入淡出.滑入滑出.自定义退出进入 前言: 系统中有两个定义好的Activity跳转动画:fade_in.fade_out.slide_in_left.slide_out_r ...
- 【Android 复习】 : Activity之间传递数据的几种方式
在Android开发中,我们通常需要在不同的Activity之间传递数据,下面我们就来总结一下在Activity之间数据传递的几种方式. 1. 使用Intent来传递数据 Intent表示意图,很多时 ...
- iOS开发 跳转场景的三种方式
iOS开发 跳转场景的三种方式 2012年10月17日, 15:32 假设A跳转到B,三种方法:1.按住ctrl键,拖动A上的控件(比如说UIButton)到B上,弹出菜单,选择Modal.不需要写任 ...
- js页面跳转常用的几种方式(转)
js页面跳转常用的几种方式 转载 2010-11-25 作者: 我要评论 js实现页面跳转的几种方式,需要的朋友可以参考下. 第一种: 复制代码代码如下: <script langu ...
- jQuery Mobile页面跳转切换的几种方式
jQuery Mobile在移动开发中越来越受到欢迎. 而他的各个版本号也在持续不断的更新中.相同的我也非常喜欢它,它加快了我们开发HTML5的速度. 同一时候又具备jQuery一样的操作方法. 学起 ...
- Android Activity跳转动画,让你的APP瞬间绚丽起来
我们都知道绚丽的APP总会给用户耳目一新的感觉,为了抓住用户更大网络公司使出浑身解数让自己的产品更绚丽,而绚丽最简单的效果就是Activity跳转效果,不仅可以让用户看起来舒服,而且实现起来也特别简单 ...
- Android的Activity跳转动画各种效果整理
Android的Activity跳转就是很生硬的切换界面.其实Android的Activity跳转可以设置各种动画,本文整理了一些,还有很多动画效果,就要靠我们发挥自己的想象力 大家使用Android ...
随机推荐
- C++ Circle
作业链接 https://github.com/How-Come/object-oriented/tree/master/Circle
- 团队作业—预则立&&他山之石(改)
首先特别感谢刘乾学长腾出他宝贵的时间接受我的采访,为我们提出宝贵的建议,深表感谢. 1.他山之石,可以攻玉.借鉴前人的经验可以使我们减少很多走弯路的地方,这也是本次采访的目的,参考历届学长的经验,让我 ...
- mysql用户创建及授权
一. 创建用户: 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - 指 ...
- python第五课——流程控制语句
流程控制语句: 分类: 1).顺序结构 2).判断结构解析:如果...否则... 3).循环结构 1.判断结构: 格式分类:三种格式 格式一: ① if 条件表达式: 语句块 ② 执行流程: 计算机会 ...
- .NET平台下开源三维 GIS (地形与游戏)平台资料
.net平台下开源(免费)三维(地形,游戏)GIS平台 open source (free) 3d (terrain,game) gis platform based on .net (C#) Axi ...
- 【转】对H264进行RTP封包原理
1. 引言 H.264/AVC 是ITU-T 视频编码专家组(VCEG)和ISO/IEC 动态图像专家组(MPEG )联合组成的联合视频组(JVT)共同努力制订的新一代视频编码标准,它最大的优 ...
- 小H和密码
链接:https://www.nowcoder.com/acm/contest/72/B来源:牛客网 题目描述 小H在击败怪兽后,被一个密码锁挡住了去路 密码锁由N个转盘组成,编号为1 ...
- 统计单词出现的最多次数(Trie树)
A Time Limit: 60ms Memory limit: 65536K 有疑问?点这里^_^ 题目描写叙述 给出n(1<= n && n <= 2*10^6) ...
- UNIX网络编程 卷2 源代码使用
1. 下载源码,W. Richard Stevens的主页:http://www.kohala.com/start/ wget http://www.kohala.com/start/unpv22e/ ...
- 三、用Delphi10.3 创建一条JSON数据的第三种方法,非常简洁的写法
一.用Delphi10.3构造一个JSON数据的第三种方法,并格式化输出,代码如下: uses // System.JSON, System.JSON.Types, System.JSON.Write ...