Android Animation之ScaleAnimation用法详解[通俗易懂]

Android Animation之ScaleAnimation用法详解[通俗易懂]ScaleAnimation用法详解ScaleAnimation是Animation的子类,其有四个构造方法:1、publicScaleAnimation(Contextcontext,AttributeSetattrs)方法的两个参数中context就不再解释了,上下文变量,attrs是属性集。一般很少利用该构造方法构造ScaleAnimation,因为还要在XML文件里

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

Jetbrains全系列IDE稳定放心使用

ScaleAnimation用法详解

ScaleAnimation是Animation的子类,其有四个构造方法:

1、public ScaleAnimation(Context context, AttributeSet attrs)
方法的两个参数中context就不再解释了,上下文变量,attrs是属性集。一般很少利用该构造方法构造ScaleAnimation,因为还要在XML文件里设置属性的值,比较麻烦,不建议使用。

2、public ScaleAnimation(float fromX, float toX, float fromY, float toY)
 

fromX表示x坐标轴上动画的起始位置,这个值并不是坐标,而是一个比例,比如fromX=0.5f,那么就表示播放动画的控件的x坐标都要乘以0.5,这是播放动画时控件的初始的x轴的状态,toX表示动画结束时控件x轴方向的位置,同样也是个比例,比如toX=1.0f,那么动画结束时x轴方向上控件恢复原状,fromY和toY是Y分别是表示Y轴方向上动画的初始位置和结束位置,也都是一个比例值。该情况下下坐标系是控件左上角为原点的。

代码例子:

final Animation testAnimation = newScaleAnimation(0.5f,1.0f,1.0f,1.0f);
testAnimation.setFillAfter(true);
testAnimation.setDuration(1000);
imageView.setOnClickListener(newView.OnClickListener() {
           @Override
           public void onClick(View v) {
               imageView.startAnimation(testAnimation);
           }
       });

代码解读:动画一开始的时候,控件的每个点的x坐标都乘以0.5,y坐标不变,即水平方向上向左压缩一半,动画结束的时候控件的每个点的x坐标恢复原值,y坐标也为原始值。setFillAfter(true)的作用是动画结束时保持结束的位置不动,setDuration(1000)是将动画时长设为1000ms。

3、public ScaleAnimation(float fromX, float toX, float fromY, float toY,float pivotX,float pivotY)

该构造方法中有6个参数,前4个参数的意义和构造方法2的参数一样,不再赘述,这里重点说一下后两个参数的用法,pivotX和pivotY是一个点的横、纵坐标,这个坐标是真正的坐标值,而不再是一个比例,坐标系还是取控件的左上点为原点,我们记这个点为P,点P有什么作用呢?它的作用就是作为一个固定点,在动画播放的过程中,这个点保持不动,而周围的点围绕着这点进行缩放。在构造方法2中,pivotX和pivotY的值都为0,即相对于控件的左上角的那个点进行缩放变换。

代码举例:

final Animation testAnimation = newScaleAnimation(0.5f,0.8f,0.5f,0.8f,500.0f,0.0f);
testAnimation.setFillAfter(true);
testAnimation.setDuration(1000);
imageView.setOnClickListener(newView.OnClickListener() {
           @Override
           public void onClick(View v) {
               imageView.startAnimation(testAnimation);
           }
       });

代码解读:初始化动画的时候,后两个参数为500.0f和0.0f,这意味着缩放要围绕点(500.0f,0.0f)进行,变换过程为控件的各个点的x坐标从(500-x)*0.5+x变化到(500-x)*0.8+x,y坐标从(500-y)*0.5+y变化到(500-y)*0.8+y,当然,x轴方向和y轴方向的变化是同时进行的。

4、public ScaleAnimation(float fromX, float toX, float fromY, float toY,int pivotXType,floatpivotXValue, int pivotYType, float pivotYValue)

该构造方法一共有8个参数,前4个参数的意义和构造方法2的4个参数相同,这里重点说一下后面4个参数的意义,总的来说后面4个参数的作用和构造方法3的后两个参数一样,是为了设定一个固定点,使得缩放是相对于这个固定点进行的。pivotXType和pivotYType指定的是一种类型,这两个参数的值一般是一致的,取值是Animation. ABSOLUTE、Animation.RELATIVE_TO_SELF、Animation.RELATIVE_TO_PARENT三者之一。

(1)      如果pivotXType和pivotYType取值为Animation. ABSOLUTE,那么pivotXValue和pivotYValue表示的是坐标的绝对值,这时构造方法4的所起的的效果和构造方法3相同,这里不再详细解释了;

(2)      如果pivotXType和pivotYType取值为Animation. RELATIVE_TO_SELF,pivotXValue和pivotYValue的值的是百分比(1表示100%),缩放的固定点就是(width*pivotXValue,height*pivotYValue),width和height分别是控件的宽度和高度,坐标系的原点还是控件的左上角。比如pivotXValue = 0.5f, pivotYValue=0.5f,那么所设定的固定点就是控件的中心点,缩放动画是相对于控件的中心进行的,代码举例:

final Animation testAnimation = newScaleAnimation(0.5f,0.8f,0.5f,0.8f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
        imageView.setOnClickListener(newView.OnClickListener() {
            @Override
            public void onClick(View v) {
               imageView.startAnimation(testAnimation);
            }
        });
        testAnimation.setFillAfter(true);
       testAnimation.setDuration(1000);

(3)      如果pivotXType和pivotYType取值为Animation. RELATIVE_TO_Parent,pivotXValue和pivotYValue的值的是百分比(1表示100%),缩放的固定点就是(width*pivotXValue,height*pivotYValue),width和height分别是控件的父容器的宽度和高度,坐标系的原点还是该控件的左上角。比如pivotXValue = 0.5f, pivotYValue=0.5f,那么所设定的固定点就是控件的中心点,缩放动画是相对于控件的中心进行的,代码举例:

final Animation testAnimation = newScaleAnimation(0.5f,0.8f,0.5f,0.8f,Animation.RELATIVE_TO_PARENT,0.0f,Animation.RELATIVE_TO_PARENT,0.5f);
        imageView.setOnClickListener(newView.OnClickListener() {
            @Override
            public void onClick(View v) {
               imageView.startAnimation(testAnimation);
            }
        });
        testAnimation.setFillAfter(true);
       testAnimation.setDuration(1000);
 

 以上是ScaleAnimation的4种构造方法的简单讲解,一般初始化后,在设定一些属性值,比如setFillAfter、setDuration之后,就可以给控件用了,调用方法是View.startAnimation(Animation anim)。理解ScaleAnimation的构造方法的参数的准确意义,基本上就可以满足对缩放动画的基本的需求了。

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/181488.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 5个Web前端开发软件,零基础入门完全够用了!

    对于刚刚入行不久的Web前端编程小白来说,在开发工具的选择方面或许会显得有些力不从心,毕竟网络上众说纷纭,相关的开发工具也是非常之多,以至于许多小伙伴一时不知道从何下手。为了解决这个问题,今天就为大家介绍几个不错的开发工具,感兴趣的朋友可以自己尝试一下:1、Notepad++这个软件就不多说了,记事本的增强版,主要应用在Windows平台下,大部分人都应该使用过,非常轻巧灵活,运行速度快,支持多窗口切换,可编辑语言也非常多,自动补全、语法提示和检查等功能都不错,对于前端开发入门来说,可以作为一个不错的选

  • 为什么补码是按位取反加一_补码为什么加1

    为什么补码是按位取反加一_补码为什么加1首先,阅读这篇文章的你,肯定是一个在网上已经纠结了很久的读者,因为你查阅了所有你能查到的资料,然后他们都会很耐心的告诉你,补码:就是按位取反,然后加一。准确无误,毫无破绽。但是,你搜遍了所有俯拾即是而且准确无误的答案,却仍然选择来看这篇毫不起眼的文章,原因只有一个,只因为你还没有得到你想要的东西。            因为你想要的,不是1+1=2,而是,1+1为什么等于2。当然,我们不讨论

  • navicat导入sql文件成功但没有表_mysql读取excel

    navicat导入sql文件成功但没有表_mysql读取excelExcel导入mysql数据丢失昨天晚上弄了一个晚上都没解决,来这里求助下,谢谢各位了for($j=3;$j<=$highestRow;$j++)//表头不读取{$a=$objPHPExcel->getActiveSheet()->getCell(“A”.$j)->getValue();$a=iconv(“UTF-8″,”GBK//IGNORE”,$a);//转码$b…

  • 对全连接层(fully connected layer)的通俗理解

    对全连接层(fully connected layer)的通俗理解我的机器学习教程「美团」算法工程师带你入门机器学习已经开始更新了,欢迎大家订阅~任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~定义…

  • 解决虚拟机选择桥接模式连不上网

    解决虚拟机选择桥接模式连不上网虚拟机装的centos7,使用桥接模式,且与主机在同一网段,主机与虚拟机可以互相ping通,且主机使用secureCRT可以连接虚拟机。主机可以上网,但是虚拟机里centos就是连不上网,以前都可以上网。再查了一堆资料都没解决后,总算找到一篇解决办法。原文:原文地址保证你Vmware里面的虚拟机是关机状态 右键点击电脑屏幕右下角小电脑图标,选择打开网络与共享中心,然后点…

  • pycharm专业版下载安装教程_pycharm2021专业版安装教程

    pycharm专业版下载安装教程_pycharm2021专业版安装教程Pycharm官网地址(下载):https://link.zhihu.com/?target=https%3A//www.jetbrains.com/pycharm/download/other.html有各种不同版本的Pycharm供下载,本文选择Pycharm专业版下载,建议下载2020.1.5版本.安装教程下载完成之后,就按照步骤开始安装了,点击Next:我选择安装在F盘,因为C盘太占用空间了,会比较卡,点击Next:一定要选着添加到环境变量中,不然后面还要手动配置环境变量,比较麻烦,

发表回复

您的电子邮箱地址不会被公开。

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