安卓全局活动切换动画,windowAnimationStyle与overridePendingTransition两种实现

关于android:windowAnimationStyle

安卓全局活动切换动画,windowAnimationStyle与overridePendingTransition两种实现

Android动画全篇系列(十一)——Activity转场动画

Android Activity跳转动画 - overridePendingTransition用法及原理分析

一、overridePendingTransition 介绍 :

/**
/**
*在{@link#startActivity(Intent)}的一种风格之后立即调用
*或{@link#finish}来指定一个显式过渡动画
*接下来执行。
*<p>截至{@linkandroid.os.Build.VERSION_CODES#JELLY_BEAN}的替代方案
*将其用于启动活动就是提供所需的动画
*通过{@link ActivityOptions}捆绑包将信息发送到
*{@link#startActivity(Intent,Bundle)}或相关函数。这允许
*您可以指定自定义动画,即使在从开始活动时也是如此
*在当前顶级活动的上下文之外。
*@param enterAnim : 要用于的动画资源的资源ID
*传入活动。使用0表示没有动画。
*@param exitAnim : 要用于的动画资源的资源ID
*传出的活动。使用0表示没有动画。*/
public void overridePendingTransition(int enterAnim, int exitAnim) {try {ActivityTaskManager.getService().overridePendingTransition(mToken, getPackageName(), enterAnim, exitAnim);} catch (RemoteException e) {}
}

上面的注释中可以看到,

  • 这个方法需要在startActivity()或者finish()方法之后立即被调用。

启动后:

startActivity(new Intent(A.this, B.class));
overridePendingTransition(inAnim, outAnim);

结束时:

finish();
activity.overridePendingTransition(inAnim, outAnim);
  • 第一个参数enterAnim:设置下一个即将到来的Activity的进入动画;
  • 第二个参数exitAnim:设置当前即将退出的这个Activity的退出动画。

第一个参数就是进入时的动画,第二个参数就是离开时的参数。不管是startActivity()还是finish()时使用,都遵循这个原则

  • 当设置为0时表示没有动画。

二、demo

1、定义动画

anim/open_enter :

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><scaleandroid:duration="@android:integer/config_longAnimTime"android:fromXScale="0.1"android:fromYScale="0.1"android:toXScale="1.0"android:toYScale="1.0" />
</set>

anim/open_exit :

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><scaleandroid:duration="@android:integer/config_longAnimTime"android:fromXScale="1.0"android:fromYScale="1.0"android:toXScale="0.1"android:toYScale="0.1" />
</set>

anim/close_exit :

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><alphaandroid:duration="@android:integer/config_longAnimTime"android:fromAlpha="1.0"android:toAlpha="0.0" />
</set>

anim/close_enter:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><alphaandroid:duration="@android:integer/config_longAnimTime"android:fromAlpha="0.0"android:toAlpha="1.0"/>
</set>

2、使用方式一:

<style name="AnimAppTheme" parent="@style/Theme.AppCompat.DayNight.NoActionBar"><item name="android:windowAnimationStyle">@style/ActivityAnimationTheme</item>
</style><style name="ActivityAnimationTheme" parent="@android:style/Animation.Activity"><!--打开activity时,新进入的activity执行的动画--><item name="android:activityOpenEnterAnimation">@anim/open_enter</item><!--打开activity时,原来的activity执行的动画--><item name="android:activityOpenExitAnimation">@anim/open_exit</item><!--    --><!--退出activity时,退出的activity执行的动画--><item name="android:activityCloseExitAnimation">@anim/close_exit</item><!--退出activity时,重新显示的activity执行的动画--><item name="android:activityCloseEnterAnimation">@anim/close_enter</item>
</style>
  • 从A1启动A2:

    • android:activityOpenEnterAnimation:A2进入动画
    • android:activityOpenExitAnimation:A1退出动画
  • 从A2返回A1:

    • android:activityCloseEnterAnimation:A1进入动画
    • android:activityCloseExitAnimation:A2退出动画

3、使用方式二:


public class BaseActivity extends AppCompatActivity {private static final String TAG = BaseActivity.class.getSimpleName();@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);overridePendingTransition(R.anim.open_enter, R.anim.open_exit);Log.e(TAG, "has been created : 【缩放】");}/*** finish方法比onDestroy方法先执行,* 我们的overridePendingTransition需要在finish里面执行才生效。*/@Overridepublic void finish() {super.finish();overridePendingTransition(R.anim.close_enter, R.anim.close_exit);Log.e(TAG, "has been finish : 【透明度】");}@Overrideprotected void onDestroy() {super.onDestroy();//这里面定义的动画并未生效//overridePendingTransition(R.anim.close_enter,R.anim.close_exit);Log.e(TAG, "has been Destroyed");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/59497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

链表(详解)

一、链表 1.1、什么是链表 1、链表是物理存储单元上非连续的、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表的指针地址实现&#xff0c;有一系列结点&#xff08;地址&#xff09;组成&#xff0c;结点可动态的生成。 2、结点包括两个部分&#xff1a;&#x…

经典问题解析四

关于动态内存分配 new 和 malloc 的区别是什么&#xff1f; delete 和 free 的区别是什么&#xff1f; new 关键字与 malloc 函数的区别 new 关键字是 C 的一部分 malloc 是由 C 库函数提供的函数 new 是以具体类型为单位进行内存分配 malloc 以字节为单位进行内存分配 …

【1267. 统计参与通信的服务器】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 这里有一幅服务器分布图&#xff0c;服务器的位置标识在 m * n 的整数矩阵网格 grid 中&#xff0c;1 表示单元格上有服务器&#xff0c;0 表示没有。 如果两台服务器位于同一行或者同一列&#xff…

OpenCV最常用的50个函数

Python版&#xff1a;OpenCV提供了众多图像处理算子和函数&#xff0c;涵盖了各种任务和技术。以下是OpenCV中一些常用的50个算子和函数&#xff1a; cv2.imread&#xff1a;用于读取图像文件。cv2.imshow&#xff1a;用于显示图像。cv2.imwrite&#xff1a;用于保存图像。cv2…

【Terraform学习】使用 Terraform 从 EC2 实例访问 S3 存储桶(Terraform-AWS最佳实战学习)

使用 Terraform 从 EC2 实例访问 S3 存储桶 实验步骤 前提条件 安装 Terraform&#xff1a; 地址 下载仓库代码模版 本实验代码位于 task_ec2_s3connet 文件夹中。 变量文件 variables.tf 在上面的代码中&#xff0c;您将声明&#xff0c;aws_access_key&#xff0c;aws_…

百亿数据查询秒级响应,观测体系之日志中心该如何玩转?

日志是处理生产故障、性能优化、业务分析的重要参考依据&#xff0c;是系统稳定运行不可或缺的一部分。随着业务系统规模急剧膨胀增大&#xff0c;尤其是是微服务架构逐渐普及&#xff0c;一个系统可能涉及多个应用模块与服务实例&#xff0c;传统模式下运维人员去定位问题显得…

一文速学-让神经网络不再神秘,一天速学神经网络基础-输出层(四)

前言 思索了很久到底要不要出深度学习内容&#xff0c;毕竟在数学建模专栏里边的机器学习内容还有一大半算法没有更新&#xff0c;很多坑都没有填满&#xff0c;而且现在深度学习的文章和学习课程都十分的多&#xff0c;我考虑了很久决定还是得出神经网络系列文章&#xff0c;不…

反射的笔记

一.概念 运行过程中,对任意一个类都能获取类中的属性和方法,对任意一个对象都能调用对象中的属性和方法,动态获取信息及调用对象的方法,实现功能的反射机制 作用:动态获取类的信息 相关类主要包括:Class 类型; Constructor 构造方法; Method 方法; Field 属性,Class外的其他…

HTML5-1-标签及属性

文章目录 语法规范标签规范标签列表通用属性基本布局 页面的组成&#xff1a; HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09;是用来描述网页的一种语言&#xff0c;它不是一种编程语言&#xff0c;而是一种标记语言。 HTML5 是下一代 HTM…

vue3+antdesign table实现表格行颜色

实现效果&#xff1a; 代码&#xff1a; html: <a-table:columns"stockColumns":data-source"stockData"class"ant-table-striped":rowClassName"rowClassName"></table> js: const rowClassName computed(() > {re…

Windows下MATLAB调用Python函数操作说明

MATLAB与Python版本的兼容 具体可参看MATLAB与Python版本的兼容 操作说明 操作说明请参看下面两个链接&#xff1a; 操作指南 简单说明&#xff1a; 我安装的是MATLAB2022a和Python3.8.6&#xff08;安装时请勾选所有可以勾选的&#xff0c;包括路径&#xff09;。对应版本安…

归一化的作用,sklearn 安装

目录 归一化的作用&#xff1a; 应用场景说明 sklearn 准备工作 sklearn 安装 sklearn 上手 线性回归实战 归一化的作用&#xff1a; 归一化后加快了梯度下降求最优解的速度; 归一化有可能提高精度(如KNN) 应用场景说明 1&#xff09;概率模型不需要归一化&#xff…

ArrayList与顺序表

文章目录 一. 顺序表是什么二. ArrayList是什么三. ArrayList的构造方法四. ArrayList的常见方法4.1 add()4.2 size()4.3 remove()4.4 get()4.5 set()4.6 contains()4.7 lastIndexOf()和 indexOf(&#xff09;4.8 subList()4.9 clear() 以上就是ArrayList的常见方法&#xff01…

未检查的转换: ‘java.lang.Object‘ 转换为 ‘java.util.List

fastjson方式 Object object ... // 获取待转换的objectList<WbsCategory> list JSON.parseObject(JSON.toJSONString(object), new TypeReference<List<WbsCategory>>() {}); 在这个示例中&#xff0c;我们使用JSON.toJSONString()将object对象转换…

RHCE——九、SELinux

SELinux 一、概念1、作用2、SELinux与传统的权限区别 二、SELinux工作原理1、名词解释主体&#xff08;Subject&#xff09;目标&#xff08;Object&#xff09;策略&#xff08;Policy&#xff09;安全上下文&#xff08;Security Context&#xff09; 2、文件安全上下文查看1…

element——switch接口成功后赋值打开开关

应用场景 基本用法使用v-model双向绑定值&#xff0c;进行开关控制 例子1:需求&#xff1a; **点击switch&#xff0c;出弹窗&#xff0c;点击弹窗保存按钮调接口成功后再赋值&#xff08;row.orderButtonValue“1”&#xff09;打开switch开的状态变颜色。 在vue 中使用 :va…

安全开发-JS应用NodeJS指南原型链污染Express框架功能实现审计WebPack打包器第三方库JQuery安装使用安全检测

文章内容 环境搭建-NodeJS-解析安装&库安装安全问题-NodeJS-注入&RCE&原型链案例分析-NodeJS-CTF题目&源码审计打包器-WebPack-使用&安全第三方库-JQuery-使用&安全 环境搭建-NodeJS-解析安装&库安装 Node.js是运行在服务端的JavaScript 文档参考…

分布式事务篇-2.4 Spring-Boot整合Seata

文章目录 前言一、pom jar导入:二、项目配置&#xff1a;2.1 配置 说明&#xff1a;2.1 .1 seata server 端:2.1 .2 seata client 端: 2.2 开启seata 对于数据源的代理:2.3 seata-client 的注册中心&#xff1a;2.4 seata-client 的配置中心&#xff1a;2.5 去掉手写的数据源代…

内存压缩算法——LZ4

LZ4 是由 Yann Collet 开发的一种追求极致压缩与解压速度的压缩算法,Yann Collet 还开发了另外一个近年大热的 zstd 压缩算法。zstd 现在属于 Facebook 的开源项目。 在当前的安卓和苹果操作系统中,内存压缩技术就使用的是lz4算法,及时压缩手机内存以带来更多的内存空间。本…

【第四阶段】kotlin语言的mutator函数学习

1.mutator特性1&#xff1a;使用list可以直接 - fun main() {val list mutableListOf(123,456,789)//特性1 可是直接使用list -list 111list-123println(list) }执行结果 2.mutator特性2&#xff1a;removeIF() 如果实现是true 会自动遍历整个集合&#xff0c;一个一个的移除…