Android视图动画-View-Animation

其中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来进行观察。动画的播放代码在最下文已给出。

<?xml version="1.0" encoding="utf-8"?>





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

<?xml version="1.0" encoding="utf-8"?>


这里我们分别设置了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。

示例2:百分比Pivot

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

<?xml version="1.0" encoding="utf-8"?>


示例3:父View百分比Pivot

<?xml version="1.0" encoding="utf-8"?>


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

alpha动画

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

<?xml version="1.0" encoding="utf-8"?>


rotate(旋转) 动画

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

<?xml version="1.0" encoding="utf-8"?>

<rotate xmlns:android=“http://schemas.android.com/apk/res/android”
android:fromDegrees=“0”
android:toDegrees=“360”
android:pivotY=“50%”
android:pivotX=“50%”
android:duration=“3000”

translate(位移) 动画

说白了就是移动View的位置,就是从一个点移动到另一个点,最重要的就是确定两个点,那么则需要确定两对X,Y坐标了。以下参数的使用方式和在最上边提到的pivot是一样的都可以使用精确值和百分比。

<?xml version="1.0" encoding="utf-8"?>


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

Set(集合动画)

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

<?xml version="1.0" encoding="utf-8"?>


<alpha
android:fromAlpha=“0.0”
android:toAlpha=“1.0”

<rotate
android:pivotX=“50%”
android:pivotY=“50%”
android:fromDegrees=“0”
android:toDegrees=“180”

动态创建动画

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

//创建Alpha动画
var alpha = AlphaAnimation(0.0F, 1.0F)
alpha.duration = 3000
this.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 = 3000
set.addAnimation(alpha)
set.addAnimation(rotate)

从Animation继承的属性

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

动画的播放

//加载动画
this.btnOpenAnimation.setOnClickListener {
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

com/2024/03/13/H4lCoPEF.jpg" />

[外链图片转存中…(img-imbhP3NV-1713358991427)]

[外链图片转存中…(img-iBMF60ZX-1713358991427)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 30
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值