android 创建文件夹_Android 动画小记

精简介绍Android中的动画,主要介绍用法。

动画种类

包括了:补间动画、逐帧动画、属性动画,前两者统称为视图动画。

补间动画

包括了平移、旋转、缩放和透明度四种,每种动画支持xml和代码设置。另外还有一种组合动画,就是将四种基础动画进行任意组合。

PS:注意补间动画后其实View的事件响应区域并没有发生改变,也就是如果使用平移动画,平移后最终视图停下的位置,这时候并不响应点击,类似的情况还包括了:放大或缩小的View,透明度为0的View,其实可点击位置和动画前一致。

特殊应用场景:

Activity切换,使用overridePendingTransition方法;

Fragment切换,使用FragmentTransactionsetCustomAnimations方法。

动画属性值

将所有的动画xml放在资源文件夹下的anim文件夹下。

平移、旋转、缩放、透明度和组合动画对应的标签分别为translate、rotate、scale、alpha和set。

公共属性含义

android:duration 时长

ndroid:startOffset 延迟开始时间,单位ms

android:fillBefore 完播视图是否会停留在初始位置,默认为true

android:fillAfter 完播视图是否会停留在结束位置,优先于fillBefore值,默认为false

android:repeatMode 重复播放动画模式,restart代表正序重放,reverse代表倒序回放,默认为restart

android:repeatCount 重放次数,-1为无限重复

android:interpolator 动画插值器,@android:anim可以选择Android提供的

属性值的距离表示方式:固定数字、百分比、父布局百分比。

为数字时(如50),基于View的左上角偏移50px的点,代码中是Animation.ABSOLUTE;

为百分比时(如50%),基于View的左上角偏移自身宽或高50%,代码中是Animation.RELATIVETOSELF;

为百分比p时(如50%p),基于View的左上角偏移父布局宽或高50%,代码中是Animation.RELATIVETOPARENT。

平移动画

android:fromXDelta 水平方向起始值

android:toXDelta 水平方向结束值

android:fromYDelta 垂直方向起始值

android:toYDelta 垂直方向结束值

旋转动画

android:fromDegrees 开始角度

android:toDegrees 结束角度

android:pivotX 旋转点x坐标

android:pivotY 旋转点y坐标

缩放动画

android:fromXScale X方向开始缩放倍数

android:toXScale X方向结束缩放倍数

android:fromYScale Y方向开始缩放倍数

android:toYScale Y方向结束缩放倍数

android:pivotX 缩放点x坐标

android:pivotY 缩放点y坐标

透明度

android:fromAlpha 开始透明度

android:toAlpha 结束透明度

代码设置动画

加载动画资源文件

val animation = AnimationUtils.loadAnimation(this, R.anim.test_animation)

动画开始

btn.startAnimation(animation)

动画结束

btn.clearAnimation()

动画对象

TranslateAnimationRotateAnimationScaleAnimationAlphaAnimation、AnimationSet

动画监听器,调用Animation对象的setAnimationListener方法即可,其中Listener可以使用AnimatorListenerAdapter,这样不需要重写所有的接口方法。

逐帧动画

用一组图片,然后控制每张图片的停留时间,来形成一个动画。

同样在anim文件夹下创建动画文件,然后使用animation-list为根标签。

android:oneshot 设置是否只播放一次,默认为false

设置每帧动画

涉及对象AnimationDrawable,直接获取view的drawable对象,然后强转为AnimationDrawable,其中start动画开始,stop动画结束。

不过这种动画方式容易引起OOM,因为需要加载大量的图片资源。

属性动画

解决视图动画的痛点:视图的属性并不改变,容易给用户造成错觉;动画形式单一。

核心类:ValueAnimator和ObjectAnimator。

使用ValueAnimator,其本质并不修改View的相关属性,只是提供一个进度值。

创建,都可以传多个参数

ValueAnimator.ofInt(int value)

ValueAnimator.ofFloat(float values)

ValueAnimator.ofObject(int values)

动画设置方法

setDuration:动画时长

setStartDelay:开始延时时长

setRepeatCount:动画重复次数

setRepeatMode:动画重复模式

addUpdateListener:核心方法,在接口中通过animation.getAnimatedValue()获取当前值,然后对View中的某些属性进行设置。

常用的属性:width、height、alpha、x、y、scaleX、scaleY等,在设置完成后调用view.requestLayout()方法。

也可以通过xml设置,在res文件夹中的animator文件夹下。

其中属性包含了视图动画中所有的基本属性,特殊属性包括了:

根标签:animator

android:valueFrom 初始值

android:valueTo 结束值

android:valueType 变化值类型,可选floatType & intType

加载xml文件,直接将对象强转为ValueAnimator

AnimatorInflater.loadAnimator(this, R.animator.test_animator)

ObjectAnimator,对ValueAnimator进行封装,直接作用于View上,更改其中的属性值。

ObjectAnimator.ofFloat(Object object, String property, float ....values)

object,一般传入View,property传入view的属性。

xml形式,使用objectAnimator根标签,特殊属性:

android:valueFrom:初始值

android:valueTo:结束值

android:valueType 变化值类型 :floatType & intType

android:propertyName 对象变化的属性名称

常用属性:alpha、rotation、translationX、scaleX、translationY、scaleY

注意,如果想要对象对话生效,需要满足两个条件:提供属性set方法和对属性的改变必须通过某种方法反映出来。

动画修改View的宽高

使用ValueAnimator,动态修改LayoutParam中的width和heigh;

给View进行包装一下

ObjectAnimator.ofInt(wrapper, "width", 500)

11ac26fd020c92dffd41587f9377f4c1.png

组合动画:AnimatorSet

ObjectAnimator简写

view.animate().scaleX(1.0f).scaleY(1.0f).setDuration(200).start()

欢迎关注微信公众号:SimFG,让我们一起学习一起进步

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

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

相关文章

2021金蝶全球创见者大会成功举办, 500强企业共话EBC数字战斗力

11月27日,由金蝶主办的“2021全球创见者大会”成功举办。大会以“用数字战斗力,向管理要效益”为主题,求索不确定时代,EBC如何帮助500强及中小企业拥抱数字战斗力,构建企业韧性。 据了解,金蝶全球创见者大…

使用管控策略,设定多账号组织全局访问边界

简介: 企业上云多账号架构中,如何做到从上到下管理的同时,处理好员工的权限边界问题? 由多账号上云模式说起 多账号上云模式的产生 我们的企业客户上云,一般都是从尝试部署少量业务开始,然后逐步将更多业…

使用MaxCompute LOAD命令批量导入OSS数据最佳实践—STS方式LOAD开启KMS加密OSS数据

简介: MaxCompute使用load overwrite或load into命令将外部存储的数据(如:oss)导入到MaxCompute前的授权操作。 MaxCompute使用load overwrite或load into命令将外部存储的数据(如:oss)导入到M…

pca降维的基本思想_R语言进行PCA分析

点击上方「蓝字」关注我写在前面前面我们知道了降维分析学习了PCoA分析今天学习PCA分析...PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征…

c语言线性分类回归库 台湾,最全的线性回归算法库总结—— scikit-learn篇

原标题:最全的线性回归算法库总结—— scikit-learn篇本文建议收藏后食用更加美味scikit-learn对于线性回归提供了比较多的类库,这些类库都可以用来做线性回归分析,本文就对这些类库的使用做一个总结,重点讲述这些线性回归算法库的…

吉麦新能源与联想签订战略合作协议,共同拥抱智能网联汽车升维时代

11月25日,吉麦新能源汽车与联想战略合作签约仪式成功举行,双方正式建立战略合作伙伴关系。未来,双方将在车联网、云解决方案及服务、IT基础架构产品服务、智慧工厂服务领域开展深入合作,合力推动新能源造车数智化转型,…

供应链商品域DDD实践

简介: DDD是一套方法论,实践能否成功,不仅仅是个技术问题,更是执行贯彻实施的问题。本文将就DDD的基本概念和DDD的实施进行分享。 作者 | 侧帽 来源 | 阿里技术公众号 前言 供应链商品域DDD实践时间不长,在实践过程也…

20岁,Universal GIS拥抱新生的GIS信创

近20年来,在快速发展的IT新技术和国家应用需求的双轮驱动下,我国GIS技术和产业得到了飞速发展,GIS软件应用范围从几个行业深入到了数字中国建设中的数字经济、数字政务、数字社会、数字生态建设的几乎所有行业和领域。GIS软件已成为国家治理体…

如何用Netty写一个高性能的分布式服务框架?

byte[] -->堆外内存 / 堆外内存--> byte[] -->java对象。 优化:省去 byte[] 环节,直接 读/写 堆外内存,这需要扩展对应的序列化框架。 String 编码/解码优化。 Varint 优化:多次 writeByte 合并为 writeShort/writeInt/w…

C语言rec文件如何打开,REC 文件扩展名: 它是什么以及如何打开它?

REC 疑难解答典型的 REC 开放挑战Squared 5 MPEG Streamclip 不在你尝试加载 REC 文件并收到错误,例如 “%%os%% 无法打开 REC 文件扩展名”。 通常,这是因为你没有安装适用于 %%os%% 的 Squared 5 MPEG Streamclip。 操作系统不知道如何处理你的 REC 文…

Quick BI:降低使用门槛,大东鞋业8000家门店的数据导航

简介: 通过引入MaxCompute和Quick BI,大东解决了以往数据查询即刻导致数据库闪崩的状况,还搭建起完善的报表体系,稳定应对高频、高并发的数据分析。 大东鞋业一季大约有500款的新品。大区下辖的各个分公司要对这500款新品进行订货…

绿盟科技发布安全知识图谱技术白皮书

随着全球数字化和万物互联的加速发展,近年来勒索病毒的攻击手段不断升级,例如今年美国最大燃油管道受攻击导致美国17个州和华盛顿特区进入紧急状态,引起全球关注。当下企业如何提高安全运营知识以面对不断升级的威胁攻击? 近日&a…

「应用管理与交付」为什么会成为云原生新的价值聚焦点?

简介: 为什么“云原生应用管理与交付”会成为 Kubernetes 之上重要的价值聚焦点?CNCF App Delivery SIG 在推动 Kubernetes 之上应用层技术快速演进的过程中将扮演什么角色?这个领域又将发生哪些值得大家期待的创新?让我们一起了解…

android 4.4官方下载,安卓系统电脑版-android x86 4.4 iso下载官方最新版【pc版】-西西软件下载...

Android-X86是由Beyounn和Cwhuang主持设计的。提供了一套完整的可行源代码树,配套文档以及Live CD与Live USB。Android系统主要应用在智能手机以及平板电脑设备上。日前,越来越多使用英特尔和AMD处理器的计算机也开始运行Android系统。如何才 能让Androi…

dataframe iloc_如何使用iloc和loc 对Pandas Dataframe进行索引和切片

在这篇文章中,我们将使用iloc和loc来处理数据。更具体地说,我们将通过iloc和loc例子来学习切片和索引。一旦我们将一个数据集加载为Pandas dataframe,我们通常希望根据某些条件开始访问该数据的特定部分。例如,如果我们的数据集包…

Flink 和 Iceberg 如何解决数据入湖面临的挑战

简介: 4.17 上海站 Meetup 胡争老师分享内容:数据入湖的挑战有哪些,以及如何用 Flink Iceberg 解决此类问题。 一、数据入湖的核心挑战 数据实时入湖可以分成三个部分,分别是数据源、数据管道和数据湖(数仓&#xf…

高并发下的 HashMap 为什么会死循环

作者 | tech-bus.七十一来源 | 程序员巴士前言HashMap并发情况下产生的死循环问题在JDK 1.7及之前版本是存在的,JDK 1.8 通过增加loHead头节点和loTail尾节点进行了修复,虽然进行了修复,但是如果涉及到并发情况下需要使用hash表,建…

唯品会:在 Flink 容器化与平台化上的建设实践

简介: 唯品会 Flink 的容器化实践应用,Flink SQL 平台化建设,以及在实时数仓和实验平台上的应用案例。 转自dbaplus社群公众号 作者:王康,唯品会数据平台高级开发工程师 自 2017 年起,为保障内部业务在平…

python怎么变成exe_Python怎样打包成exe?

分类:Python | 作者:凹凸曼 | 发表于2011/03/01Python怎样打包成exe?已关闭评论 发现PyInstaller 是个不错的东东,解决打包单个exe的问题,使用非常简单,不用编写setup脚本&#xff1…

PolarDB-X 2.0:使用一个透明的分布式数据库是一种什么体验

简介: 透明分布式,是PolarDB-X即将发布的能力,它能让应用在使用PolarDB-X的过程中,犹如使用单机数据库一般的体验。与传统的中间件类型的“分布式数据库”相比,有了透明分布式能力的PolarDB-X,不再需要应用…