android scaleanimation 动画方向,Animation 动画详解(一)——alpha、scale、translate、rotate、set的xml属性及用法…[通俗易懂]

android scaleanimation 动画方向,Animation 动画详解(一)——alpha、scale、translate、rotate、set的xml属性及用法…[通俗易懂]一、概述Android的animation由四种类型组成:alpha、scale、translate、rotate,对应android官方文档地址:《AnimationResources》alpha渐变透明度动画效果scale渐变尺寸伸缩动画效果translate画面转换位置移动动画效果rotate画面转移旋转动画效果下面我们逐个讲讲每个标签的属性及用法。动作定义文件应该存放在res/anim文…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、概述

Android的animation由四种类型组成:alpha、scale、translate、rotate,对应android官方文档地址:《Animation Resources》

alpha渐变透明度动画效果

scale渐变尺寸伸缩动画效果

translate画面转换位置移动动画效果

rotate画面转移旋转动画效果

下面我们逐个讲讲每个标签的属性及用法。

动作定义文件应该存放在res/anim文件夹下,访问时采用R.anim.XXX.xml的方式,位置如图:

d6d6c5dc88b5

scale标签是缩放动画,可以实现动态调控件尺寸的效果,有下面几个属性:

android:fromXScale起始的X方向上相对自身的缩放比例,浮点值,比如1.0代表自身无变化,0.5代表起始时缩小一倍,2.0代表放大一倍;

android:toXScale结尾的X方向上相对自身的缩放比例,浮点值;

android:fromYScale起始的Y方向上相对自身的缩放比例,浮点值,

android:toYScale结尾的Y方向上相对自身的缩放比例,浮点值;

android:pivotX缩放起点X轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p,当为数值时,表示在当前View的左上角,即原点处加上50px,做为起始缩放点;如果是50%,表示在当前控件的左上角加上自己宽度的50%做为起始点;如果是50%p,那么就是表示在当前的左上角加上父控件宽度的50%做为起始点x轴坐标。(具体意义,后面会举例演示)

android:pivotY缩放起点Y轴坐标,取值及意义跟android:pivotX一样。

下面看一个实例,当scale里的属性这样设置时,效果会怎样呢:

android:fromXScale=”0.0″

android:toXScale=”1.4″

android:fromYScale=”0.0″

android:toYScale=”1.4″

android:pivotX=”50″

android:pivotY=”50″

android:duration=”700″/>

(1)、pivotX取值数值时(50)

这个控件,宽度和高度都是从0放大到1.4倍,起始点坐标在控件左上角(坐标原点),向x轴正方向和y轴正方向都加上50像素;

根据pivotX,pivotY的意义,控件的左上角即为控件的坐标原点,这里的起始点是在控件的原点的基础上向X轴和Y轴各加上50px,做为起始点,如下图中图二所示

图一                                                             图二

d6d6c5dc88b5

d6d6c5dc88b5

(2)、pivotX取值百分数时(50%)

下面再看看当pivotX、pivotY取百分数的时候,起始点又在哪里?

上面我们讲了,pivotX的值,当取50%时,表示在原点坐标的基础上加上的自己宽度的50%,看看效果:

android:fromXScale=”0.0″

android:toXScale=”1.4″

android:fromYScale=”0.0″

android:toYScale=”1.4″

android:pivotX=”50%”

android:pivotY=”50%”

android:duration=”700″/>

缩放位置大小仍然从0-1.4,只改变pivotX和pivotY;起始点位置如下图中图二所示:

图一                                                                 图二

d6d6c5dc88b5

d6d6c5dc88b5

(3)、pivotX取值50%p时

前面说过,当取值在百分数后面加上一个字母p,就表示,取值的基数是父控件,即在原点的基础上增加的值是父标签的百分值。

android:fromXScale=”0.0″

android:toXScale=”1.4″

android:fromYScale=”0.0″

android:toYScale=”1.4″

android:pivotX=”50%p”

android:pivotY=”50%p”

android:duration=”700″/>

效果图,及起始点坐标图如下所示:

d6d6c5dc88b5

d6d6c5dc88b5

Animation类是所有动画(scale、alpha、translate、rotate)的基类,这里以scale标签为例,讲解一下,Animation类所具有的属性及意义。关于Animation类的官方文档位置为:《Animation》

android:duration动画持续时间,以毫秒为单位

android:fillAfter如果设置为true,控件动画结束时,将保持动画最后时的状态

android:fillBefore如果设置为true,控件动画结束时,还原到开始动画前的状态

android:fillEnabled与android:fillBefore 效果相同,都是在动画结束时,将控件还原到初始化状态

android:repeatCount重复次数

android:repeatMode重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义是重复的类型,即回放时的动作。

android:interpolator设定插值器,其实就是指定的动作效果,比如弹跳效果等,不在这小节中讲解,后面会单独列出一单讲解。

对于android:duration,就不再讲解了,就是动画的持续时长,以毫秒为单位,下面看看android:fillAfter和android:fillBefore

android:fromXScale=”0.0″

android:toXScale=”1.4″

android:fromYScale=”0.0″

android:toYScale=”1.4″

android:pivotX=”50%”

android:pivotY=”50%”

android:duration=”700″

android:fillAfter=”true”

/>

d6d6c5dc88b5

android:fromXScale=”0.0″

android:toXScale=”1.4″

android:fromYScale=”0.0″

android:toYScale=”1.4″

android:pivotX=”50%”

android:pivotY=”50%”

android:duration=”700″

android:fillBefore=”true”

/>

android:fillBefore=”true”                                 android:fillEnable=”true”

d6d6c5dc88b5

d6d6c5dc88b5

上面顺便列出了,当仅设定fillEanble为true时的效果,这两个的标签的效果完全相同。

android:fromXScale=”0.0″

android:toXScale=”1.4″

android:fromYScale=”0.0″

android:toYScale=”1.4″

android:pivotX=”50%”

android:pivotY=”50%”

android:duration=”700″

android:fillBefore=”true”

android:repeatCount=”1″

android:repeatMode=”restart”

/>

androidRepeatMode设为restart                       androidRepeatMode设为reverse

d6d6c5dc88b5

d6d6c5dc88b5

android:fromAlpha动画开始的透明度,从0.0 –1.0 ,0.0表示全透明,1.0表示完全不透明

android:toAlpha动画结束时的透明度,也是从0.0 –1.0 ,0.0表示全透明,1.0表示完全不透明

使用示例:

android:fromAlpha=”1.0″

android:toAlpha=”0.1″

android:duration=”3000″

android:fillBefore=”true”>

d6d6c5dc88b5

android:duration动画持续时间,以毫秒为单位

android:fillAfter如果设置为true,控件动画结束时,将保持动画最后时的状态

android:fillBefore如果设置为true,控件动画结束时,还原到开始动画前的状态

android:fillEnabled与android:fillBefore 效果相同,都是在动画结束时,将控件还原到初始化状态

android:repeatCount重复次数

android:repeatMode重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义是重复的类型,即回放时的动作。

android:interpolator设定插值器,其实就是指定的动作效果,比如弹跳效果等,不在这小节中讲解,后面会单独列出一单讲解。

与scale标签意义一样,就不再缀述。

android:fromDegrees开始旋转的角度位置,正值代表顺时针方向度数,负值代码逆时针方向度数

android:toDegrees结束时旋转到的角度位置,正值代表顺时针方向度数,负值代码逆时针方向度数

android:pivotX缩放起点X轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p,具体意义已在scale标签中讲述,这里就不再重讲

android:pivotY缩放起点Y轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p

android:fromDegrees=”0″

android:toDegrees=”-650″

android:pivotX=”50%”

android:pivotY=”50%”

android:duration=”3000″

android:fillAfter=”true”>

围绕自身从0度逆时针旋转650度                            围绕自身从0度顺时针旋转650度

android:fromDegrees=”0″                                       android:fromDegrees=”0″

android:toDegrees=”-650″                                      android:toDegrees=”650″

d6d6c5dc88b5

d6d6c5dc88b5

android:duration动画持续时间,以毫秒为单位

android:fillAfter如果设置为true,控件动画结束时,将保持动画最后时的状态

android:fillBefore如果设置为true,控件动画结束时,还原到开始动画前的状态

android:fillEnabled与android:fillBefore 效果相同,都是在动画结束时,将控件还原到初始化状态

android:repeatCount重复次数

android:repeatMode重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义是重复的类型,即回放时的动作。

android:interpolator设定插值器,其实就是指定的动作效果,比如弹跳效果等,不在这小节中讲解,后面会单独列出一单讲解。

与scale标签意义一样,就不再缀述。

android:fromXDelta起始点X轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p,具体意义已在scale标签中讲述,这里就不再重讲

android:fromYDelta起始点Y轴从标,可以是数值、百分数、百分数p 三种样式;

android:toXDelta结束点X轴坐标

android:toYDelta结束点Y轴坐标

android:fromXDelta=”0″

android:toXDelta=”-80″

android:fromYDelta=”0″

android:toYDelta=”-80″

android:duration=”2000″

android:fillBefore=”true”>

d6d6c5dc88b5

android:duration动画持续时间,以毫秒为单位

android:fillAfter如果设置为true,控件动画结束时,将保持动画最后时的状态

android:fillBefore如果设置为true,控件动画结束时,还原到开始动画前的状态

android:fillEnabled与android:fillBefore 效果相同,都是在动画结束时,将控件还原到初始化状态

android:repeatCount重复次数

android:repeatMode重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义是重复的类型,即回放时的动作。

android:interpolator设定插值器,其实就是指定的动作效果,比如弹跳效果等,不在这小节中讲解,后面会单独列出一单讲解。

与scale标签意义一样,就不再缀述。

前面我们讲解了各个标签动画的意义及用法,但他们都是独立对控件起作用,假设我现在想上面的textView控件做一个动画——从小到大,旋转出场,而且透明度也要从0变成1,即下面的这个效果,该怎么办?

d6d6c5dc88b5

这就需要对指定的控件定义动作合集,Set标签就可以将几个不同的动作定义成一个组;

set标签自已是没有属性的,他的属性都是从Animation继承而来,但当它们用于Set标签时,就会对Set标签下的所有子控件都产生作用。

属性有:(从Animation类继承的属性)

android:duration动画持续时间,以毫秒为单位

android:fillAfter如果设置为true,控件动画结束时,将保持动画最后时的状态

android:fillBefore如果设置为true,控件动画结束时,还原到开始动画前的状态

android:fillEnabled与android:fillBefore 效果相同,都是在动画结束时,将控件还原到初始化状态

android:repeatCount重复次数

android:repeatMode重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义是重复的类型,即回放时的动作。

android:interpolator设定插值器,其实就是指定的动作效果,比如弹跳效果等,不在这小节中讲解,后面会单独列出一单讲解。

与scale标签意义一样,就不再缀述。

上面这个效果,所对应的XML代码为:

android:duration=”3000″

android:fillAfter=”true”>

android:fromAlpha=”0.0″

android:toAlpha=”1.0″/>

android:fromXScale=”0.0″

android:toXScale=”1.4″

android:fromYScale=”0.0″

android:toYScale=”1.4″

android:pivotX=”50%”

android:pivotY=”50%”/>

android:fromDegrees=”0″

android:toDegrees=”720″

android:pivotX=”50%”

android:pivotY=”50%”/>

上面我仅仅是列出了每个标签及其属性的意义及应用之后的效果演示,但上面是如何将定义动画的xml应用到textView控件中的却迟迟没说,这一小节,就以scale动画为例,讲述如何将定义好的scle动作添加到指定控件中。

先看最终效果图:

d6d6c5dc88b5

新建一个工程,并且在res文件夹下,新建一个anim文件夹,然后再新建一个scaleanim.xml文件,结构如图所示:

d6d6c5dc88b5

scaleanim.xml的代码为:(从TextView中心点,从0放大到1.4倍,反复一次,最后还原到初始化状态)

android:fromXScale=”0.0″

android:toXScale=”1.4″

android:fromYScale=”0.0″

android:toYScale=”1.4″

android:pivotX=”50%”

android:pivotY=”50%”

android:duration=”700″

android:fillBefore=”true”

android:repeatCount=”1″

android:repeatMode=”restart”

/>

xmlns:tools=”http://schemas.android.com/tools”

android:layout_width=”match_parent”

android:layout_height=”match_parent”

android:orientation=”vertical”

tools:context=”com.harvic.animation_demo.MainActivity”>

android:layout_width=”match_parent”

android:layout_height=”wrap_content”

android:layout_margin=”10dip”

android:text=”scale animation”/>

android:id=”@+id/tv”

android:layout_width=”100dip”

android:layout_height=”200dip”

android:background=”#ff00ff”

android:text=”@string/hello_world”

android:layout_gravity=”center_horizontal”/>

publicclassMainActivityextendsActivity {

Button scaleBtn ;

Animation scaleAnimation;

TextView tv;

@Override

protectedvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

scaleAnimation = AnimationUtils.loadAnimation(this, R.anim.scaleanim);

scaleBtn = (Button)findViewById(R.id.btn_animation);

tv =(TextView)findViewById(R.id.tv);

scaleBtn.setOnClickListener(newView.OnClickListener() {

@Override

publicvoidonClick(View v) {

// TODO Auto-generated method stub

tv.startAnimation(scaleAnimation);

}

});

}

}

(1)通过scaleAnimation = AnimationUtils.loadAnimation(this, R.anim.scaleanim);从XML文件中获取动画

(2)利用startAnimation将动画传递给指定控件显示。

http://blog.csdn.net/harvic880925/article/details/39996643

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184103.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • calico跨网段不通_多对网桥ip地址相同

    calico跨网段不通_多对网桥ip地址相同Calico简介Calico是一个基于BGP协议的网络互联解决方案。它是一个纯3层的方法,使用路由来实现报文寻址和传输。相比flannel,ovs等SDN解决方案,Calico避免了层叠网络带来的性能损耗。将节点当做router,位于节点上的container被当做router的直连设备。利用Kernel来实现高效的路由转发。节点间的路由信息通过BGP协议在…

    2025年7月29日
    4
  • 放出一套完整的进销存软件源码[通俗易懂]

    放出一套完整的进销存软件源码[通俗易懂]商易进销存2.0vb+sqlserver下载地址:http://60.2.39.130/microerp/源码非常完整,从速下载,过期失效,不接受菜鸟们的技术帮助请求。

    2022年5月31日
    203
  • Java服务器端结构[通俗易懂]

    Java服务器端结构[通俗易懂]数据库连接池:应用程序想要访问数据库中的数据,需要和数据库建立连接。而数据库连接池就是用来负责分配、管理和释放数据库连接,你可以把数据库连接池理解为一把钥匙,而数据库就是锁。没有数据库连接池 ,应用程序就不方便访问数据库。1)数据库连接池允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个 2)释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数

    2022年6月3日
    28
  • FDD 与 TDD LTE区别

    FDD 与 TDD LTE区别虽然国内4G牌照迟迟不见发布,但私底下各大运营商和终端商早已摩拳擦掌,各网用户尤其是备受折磨的中国移动用户也都在期待4G时代的到来。放眼望去,目前在全球81个国家已有213张LTE商用网络,其中FDD-LTE商用网络192张、TD-LTE商用网络11张,而中国4G如箭在弦,被认为是一场由中国移动积极促成的产业大跃进。随着大家不断谈论4G,相关的新名词也不断涌现,包括不同制式的网

    2022年5月30日
    37
  • C#利用浏览按钮获得文件路径和文件夹路径

    生成文件夹路径privatevoidbtnChoose_Click(objectsender,EventArgse)生成文件夹路径privatevoidbtnChoose_Clic

    2021年12月24日
    42
  • 八路抢答器c语言程序,八路抢答器-51单片机(附Proteus仿真、C代码、原理图及PCB、论文和元器件清单)…

    八路抢答器c语言程序,八路抢答器-51单片机(附Proteus仿真、C代码、原理图及PCB、论文和元器件清单)…获取全套设计资源,请见后文说明…设计要求1)抢答器同时供8名选手或2个代表队比赛,分别用8个按钮S0-S7表示;2)设置一个系统清除和抢答控制开关S,该开关由主持人控制;3)抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止;4)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30s等)。当主持人启动“开始”按键后,定时器进行减计…

    2022年10月20日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号