千家信息网

Android视图动画怎么实现

发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,本文小编为大家详细介绍"Android视图动画怎么实现",内容详细,步骤清晰,细节处理妥当,希望这篇"Android视图动画怎么实现"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知
千家信息网最后更新 2024年11月22日Android视图动画怎么实现

本文小编为大家详细介绍"Android视图动画怎么实现",内容详细,步骤清晰,细节处理妥当,希望这篇"Android视图动画怎么实现"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

介绍

视图动画主要有两种:

一、Tween Animation译为"补间动画"
1、scale译为"规模、比例",是对View进行特定范围的缩放
2、alpha通过改变View的透明度实现View隐现的效果
3、translate译为"转移",是对View进行位置的移动
4、rotate译为"旋转",是让View围绕特定的点进行旋转
PS:所有View的移动、隐藏、旋转仅仅是看到的动画效果,实际View的位置/大小/比例并没有发生本质上的改变(比如说View的位置通过动画进行移动后你注册的点击事件还是需要点击到View的原始位置才可以被触发)。

二、Frame Animation译为逐帧动画
这个比较容易理解就是将多个具有特定连贯动作的图片在短时间内进行快速的切换达到动画的效果,本质上所有的动画效果都是这种思想。

如何创建视图动画文件目录

动画文件要存放在res/anim文件夹下,访问时采用R.anim.XXX的方式。默认是没有这个文件夹的需要手动创建(右键res目录-->New-->Android Resource Directory-->确定。)


image

动画文件的创建方式为:右键anim文件夹选择new,然后点击Animation Resource file,选择动画类型即可创建。


image

输入后会自动提示动画名称,然后输入名称,确定即可。


image

scale(缩放) 动画

这个动画参数相对来说比较多, 就我个人而言在学习这个动画的时候花费时间是最长的。

这个动画主要是实现View的缩放,首先要想,要实现一个缩放的动画首先要确定什么参数/信息(好比说想切割一张特定大小的纸张要确定宽和高一样),那么第一个就是要确定要围绕哪个点(pivot)进行缩放。

还需要知道在动画开始(from)时View的大小(比例),以及动画结束(to)时View要处于的大小(比例)。就是要确定以下六个参数才可以完成一次缩放动画。

X则指定控件的宽度,Y则指定控件的高度,值越大则控件所占位置越大。

Android坐标从左上角开始算起。


image

其中fromXScaletoXScalefromYScaletoYScale使用浮点类型,1.0表使原始大小,0.5则是缩放一半,1.5则是扩大原大小的一半。举例:原View宽高100、150,1.0:(100,150),0.5:(50,75),1.5:(150,225)。也可以使用精确值(DP/PX)。

pivotXpivotY有三种表使方法,第一是采用像素值,第二则是较自身的百分比,第三则是较父View的百分比。

为了方便观察,使用两个同等位置和大小不同颜色的View来进行观察。动画的播放代码在最下文已给出。

    

示例1:使用像素值确定Pivot点

这里我们分别设置了pivotXpivotY为200(px),这个是从View本身来算起的,View的左上角为(0,0)点,然后X轴坐标向右,Y则向下分别走200像素,最终得到了箭头指向的点(Pivot),那么开始点确定了。

再看其它参数,fromXScale指定的是在动画开始时X坐标也就是宽度的大小(这里是按照比例计算的),0.5则代表View原始宽度的一半,fromYScale则是高度了。

既然是向特定的比例进行缩放,仅仅确定开始的大小是不够的,还要确定在动画播放到最后所要达到的大小,所以就有了toXScaletoYScale,这两个则是指定在动画播放完成后View所处的大小。

这里我们是从View的0.5缩放到1.0,也就是从原始View的一半经过3秒(duration用来控制动画时长,1000为1秒。)后变成原始View的大小也就是1.0。


image


image

示例2:百分比Pivot

使用百分比确定Pivot也很简单,那么Pivot的位置就是:以View的左上角即(0,0)点为基础加上View特定的宽高百分比。


image


image

示例3:父View百分比Pivot

这个计算和上边那个其实是一样的,只是基于的点不同而已,上边是基于自身来算起,那么这个则是基于View的父布局来计算的。那么Pivot的位置就是:以View的左上角即(0,0)点为基础加上父View特定的宽高百分比。


image


image

alpha动画

这个可以说就非常简单了,主要是实现颜色的过度效果,fromAlpha则是动画开始的透明度,toAlpha则是在动画最后显示的透明度。0.0代表完全透明1.0则是View的原色。


image

rotate(旋转) 动画

首先要想完成旋转要确定那些参数?肯定要确定旋转要围绕的点也就是pivot,这个在scale动画也用到了,用法都一样,不在多说。这里出现了名为degrees也就是角度的概念,也就是以特定点(pivot)为中心从多少度(fromDegrees),旋转到多少度(toDegrees)。以下示例是从0转到360度,正好一圈。


image

translate(位移) 动画

说白了就是移动View的位置,就是从一个点移动到另一个点,最重要的就是确定两个点,那么则需要确定两对X,Y坐标了。

以下参数的使用方式和在最上边提到的pivot是一样的都可以使用精确值和百分比。

其中黑色线条框住的是View的原始位置,黄色框住的是View动画开始时的位置,紫色线条则是整个View的70%的占比,最后集中到的点就是View要移动到的最终的位置也就是结束点。


image

Set(集合动画)

如何理解Set(集合动画),其实很简单,比如现在有一个需求,我们既要旋转又要有渐渐出现的效果,那么就要使用set了,说白了就是将多个动画组合起来。只要把上边几个都学会了,使用这个set简直so easy。

        


image

动态创建动画

上边所展示的都是通过xml文件写的动画,都是静态写好了的。那么想要动态的创建动画对象又该如何?其实很简单,通过代码的方式创建动画它们的名称和使用xml文件创建时名称都是对应的,提供的构造函数也都是必备的参数值。

 //创建Alpha动画var alpha = AlphaAnimation(0.0F, 1.0F)alpha.duration = 3000this.txtAnimation.startAnimation(alpha)//创建Rotate动画var rotate = RotateAnimation(0F, 360F, Animation.RELATIVE_TO_SELF, 50F, Animation.RELATIVE_TO_SELF, 50F)//创建Scale动画var scale = ScaleAnimation(0F, 1F, 0F, 1F, Animation.RELATIVE_TO_SELF, 50F, Animation.RELATIVE_TO_SELF, 50F)//创建translate动画var translate = TranslateAnimation(    Animation.RELATIVE_TO_SELF,    10F,    Animation.RELATIVE_TO_SELF,    80F,    Animation.RELATIVE_TO_SELF,    0F,    Animation.RELATIVE_TO_SELF,    70F)//创建Set动画var set = AnimationSet(this, null)set.duration = 3000set.addAnimation(alpha)set.addAnimation(rotate)

从Animation继承的属性

以上所有的动画对象都是从Animation类继承来的,所有有一些公共的属性也会继承过来。


image

动画的播放

//加载动画this.btnOpenAnimation.setOnClickListener {    var animation = AnimationUtils.loadAnimation(this, R.anim.translate_anim)    this.txtAnimation.startAnimation(animation)}

Tween Animation(逐帧动画)

这个是Drawable形式的动画,存放在drawable文件夹中,使用animation-list节点来表示。图片素材是提前准备好的。自己动手尝试下马上就会理解了。

                                                                        

这里我们给一个TextView设置了background属性。

    

具体调用

var animationDrawable = this.txtAnimation.background as AnimationDrawableanimationDrawable.start()

显示效果

读到这里,这篇"Android视图动画怎么实现"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

动画 位置 大小 就是 文件 百分 百分比 也就是 参数 效果 原始 比例 移动 视图 上边 译为 名称 坐标 左上角 文件夹 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海防水网络技术联系方式 宝山区节能软件开发服务试验设备 未定事件簿有什么服务器 成都启程新维网络技术有限公司 信息网络安全的三个阶段 网络安全为主题的申论 软件测试和软件开发哪个难_ 上海常用的外贸软件开发公司 病毒对网络安全的影响 济宁优券集网络技术 鸿蒙操作系统软件开发工具有哪些 江阴信息软件开发进货价 网络服务器根据什么可分为 网络安全工程师与程序员哪个好 黄浦区数据网络技术服务欢迎咨询 签订网络安全责任书小结 反电诈网络安全教育心得300字 mdi服务器申请就能进吗 设置服务器策略有什么用 普陀区个性化软件开发价格查询 家庭服务器nas需要公网 朝阳区进口软件开发单价 大学网络安全教育的简报 海信电视怎么连接群晖服务器 测控软件数据库 多线程 访问数据库 临沂专科软件开发招聘 国内引文检索数据库排行 软件开发到应用步骤 软件开发属于应税劳务么
0