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,一经查实,立即删除!

相关文章

命题公式的主合取范式C语言,命题公式主范式的自动生成与形式输出.pdf

收稿日期 2006 04 19 作者简介 张会凌 1954 男 甘肃成县人 甘肃联合大学数学与信息学院副教授 主要从事微分几何与计算机方面 的研究 文章编号 1672 691X 2006 05 0049 04 命题公式主范式的自动生成与形式输出 张会凌 甘肃联合大学 数学与信息学院 甘肃 兰州 730000 摘 要 在文…

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…

mamcache登录、_gomemcache首页、文档和下载 - memcache客户端库 - Go语言中文网 - Golang中文社区...

**安装**使用 go get$ go get github.com/bradfitz/gomemcache/memcache此命令后gomemcache即可使用。它的来源将是:$GOPATH/src/github.com/bradfitz/gomemcache/memcache**示例**import ("github.com/bradfitz/gomemcache/memcache")func main() {mc : …

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实践时间不长,在实践过程也…

wps编号无法继续_wps怎么自动编号【解决步骤】

我们在使用电脑工作的过程中时常会遇到各种奇奇怪怪的问题,比如最近就有不少用户来问小编关于wps怎么自动编号的问题,于是小编就在网上查了一下wps怎么自动编号的解决方法,其实wps怎么自动编号操作起来很容易只需要1:打开一个wps文…

c语言EOF0x99,C语言选择题99道.doc

C语言选择题99道1.有以下程序int f1(int x,int y){ return x>y?x:y; }int f2(int x,int y){ return x>y?y:x; }main(){int a4,b3,c5,d,e,f; df1(a,b); df1(d,c); ef2(a,b); ef2(e,c); fabc-d-e; printf("%d,%d,%d\n",d,f,e);}执行后输出的结果是______。 A&a…

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

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

php与python缺点_php和python的比较

hon 的应用现在越来越多了,想多了解点 pygtk 和 django 的东西,但只 有一些 php 和 C 的基础, 而 python 的语法还是比较独特的。 接触 python 半年多,总结一点和 php 的比较以及优缺点。 首先, python 的性能一直比较…

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

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

css x轴不滚动_css – 固定div,动态内容不滚动

我有一个固定的div与动态加载的li元素.现在我希望div-content在有超过9个li元素和滚动条时滚动:这就是它的样子:此时固定div继续在页脚上,内容无法滚动.这是所有div的css:#fixed-div {position: fixed;width: 30%;margin-top:290px;padding-t…

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…

最小覆盖模型matlab_数学规划模型的matlab求解 非线性最小二乘lsqnonlin

数学规划模型是优化模型的一种,包括线性规划模型(目标函数和约束条件都是线性函数的优化问题);非线性规划模型(目标函数或者约束条件是非线性的函数); 整数规划(决策变量是整数值得规划问题);多目标规划(具有多个目标函数的规划问题) ;目标规划(具有不同…

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

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