什么是ScaleAnimation

ScaleAnimation即缩放动画,应用场景特别多,比如常见的隐藏菜单点击显示

下面我分两种方式来介绍ScaleAnimation如何使用。

1. xml文件形式
文件名:anim_scale_in.xml
效果:呈现view放大显示效果
源码:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><scale
        android:interpolator="@android:anim/decelerate_interpolator"android:duration="1000"android:fillAfter="true"android:fromXScale="0.0"android:fromYScale="0.0"android:pivotX="50%"android:pivotY="50%"android:toXScale="1.0"android:toYScale="1.0" />
</set>

属性解释:
interpolator:动画插入器,该功能在xml里设置貌似无效,需在代码中加
fromXScale:从自身x轴长度多少倍开始缩放,如:fromXScale= 0.5表示从自身X轴长度0.5倍开始缩放
toXScale:缩放到自身x轴长度多少倍结束,如:toXScale = 2.0表示x轴缩放到自身x轴长度2倍结束
上面两条意思就是:该view的x轴从自身x轴长度的0.5倍开始缩放到自身x轴长度的2倍结束
fromYScale:从自身y轴长度多少倍开始缩放,如:fromYScale= 0.5表示从自身y轴长度0.5倍开始缩放
toYScale:缩放到自身y轴长度多少倍结束,如:toYScale = 2.0表示x轴缩放到自身y轴长度2倍结束
pivotX:动画相对于控件X坐标的开始位置
pivotY:动画相对于控件Y坐标的开始位置
如:pivotX = 50%,pivotY = 50% 表示从该控件的中心开始缩放

   //表示控件左下角开始android:pivotX="0"android:pivotY="100%"//表示控件左上角开始android:pivotX="0"android:pivotY="0"//表示控件右下角开始android:pivotX="100%"android:pivotY="100%"//表示控件右上角开始android:pivotX="100%"android:pivotY="0"

………………………………………………………………………………………………………………….
文件名:anim_scale_out.xml
效果: 呈现view缩小的效果
源码:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><scale
        android:interpolator="@android:anim/accelerate_interpolator"android:duration="1000"android:fillAfter="true"android:fromXScale="1.0"android:fromYScale="1.0"android:pivotX="50%"android:pivotY="50%"android:toXScale="0"android:toYScale="0" />
</set>

………………………………………………………………………………………………………………….

OK,现在有了xml布局文件,我们需要用Java代码让他工作起来,如下;
 /*** 缩放变大动画** @param context* @param view 目标view*/public static void startScaleInAnim(Context context, View view) {Animation animation = AnimationUtils.loadAnimation(context, R.anim.anim_scale_in);if (view != null)view.startAnimation(animation);}/*** 缩放缩小动画** @param context* @param view 目标view*/public static void startScaleOutAnim(Context context, View view) {Animation animation = AnimationUtils.loadAnimation(context, R.anim.anim_scale_out);if (view != null)view.startAnimation(animation);}

我单独封装在一个动画工具类中,哪里需要就哪里调用。很方便


2.纯Java代码形式

updating……

下面看看代码的执行效果:

缩放同时还可以添加透明度变化,如下:

放大+淡入:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><scale
        android:interpolator="@android:anim/decelerate_interpolator"android:duration="1000"android:fillAfter="true"android:fillEnabled="true"android:fromXScale="0"android:fromYScale="0"android:pivotX="50%"android:pivotY="50%"android:toXScale="1.0"android:toYScale="1.0" /><!--同时配置淡入功能--><alpha
        android:duration="700"android:fillAfter="true"android:fromAlpha="0"android:toAlpha="1" />
</set>

缩小+淡出

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><scale
        android:interpolator="@android:anim/accelerate_interpolator"android:duration="1000"android:fillAfter="true"android:fromXScale="1.0"android:fromYScale="1.0"android:pivotX="50%"android:pivotY="50%"android:toXScale="0"android:toYScale="0" /><!--同时配置淡出功能--><alpha
        android:duration="700"android:fillAfter="true"android:fromAlpha="1"android:toAlpha="0" />
</set>

效果如下:

下拉菜单显示与收回,效果:

显示:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><scale
        android:interpolator="@android:anim/decelerate_interpolator"android:duration="300"android:fillAfter="true"android:fillEnabled="true"android:fromXScale="1.0"android:fromYScale="0"android:pivotX="100%"android:pivotY="0"android:toXScale="1.0"android:toYScale="1.0" /><!--同时配置淡入功能--><alpha
        android:duration="300"android:fillAfter="true"android:fromAlpha="0"android:toAlpha="1" />
</set>

收起:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><scale
        android:interpolator="@android:anim/accelerate_interpolator"android:duration="300"android:fillAfter="true"android:fromXScale="1.0"android:fromYScale="1.0"android:pivotX="100%"android:pivotY="0"android:toXScale="1.0"android:toYScale="0" /><!--同时配置淡出功能--><alpha
        android:duration="300"android:fillAfter="true"android:fromAlpha="1"android:toAlpha="0" />
</set>

效果:

缩放下拉与收回效果:

显示:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><scale
        android:interpolator="@android:anim/decelerate_interpolator"android:duration="200"android:fillAfter="true"android:fillEnabled="true"android:fromXScale="0"android:fromYScale="0"android:pivotX="100%"android:pivotY="0"android:toXScale="1.0"android:toYScale="1.0" /><!--同时配置淡入功能--><alpha
        android:duration="200"android:fillAfter="true"android:fromAlpha="0"android:toAlpha="1" />
</set>

收起:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><scale
        android:interpolator="@android:anim/accelerate_interpolator"android:duration="200"android:fillAfter="true"android:fromXScale="1.0"android:fromYScale="1.0"android:pivotX="100%"android:pivotY="0"android:toXScale="0"android:toYScale="0" /><!--同时配置淡出功能--><alpha
        android:duration="200"android:fillAfter="true"android:fromAlpha="1"android:toAlpha="0" />
</set>

效果:

类似游戏按钮的按下放大再还原效果:

  public static void animScaleIn(View view){//缩放动画ScaleAnimation animation = new ScaleAnimation(1,1.2f,1,1.2f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);animation.setDuration(100);animation.setFillAfter(true);animation.setRepeatMode(Animation.REVERSE);animation.setRepeatCount(1);//透明度动画AlphaAnimation animation1 = new AlphaAnimation(1,0.8f);animation1.setDuration(100);animation1.setRepeatCount(1);animation1.setRepeatMode(Animation.REVERSE);animation1.setFillAfter(true);//装入AnimationSet中AnimationSet set = new AnimationSet(true);set.addAnimation(animation);set.addAnimation(animation1);if (view != null)view.startAnimation(set);}

效果如下:

备注:由于我的图片是导出视频再用PS转换成的gif,故效率上有所损失,实际动画效果和速度比图片的快。

Android动画之ScaleAnimation使用相关推荐

  1. Android 动画之ScaleAnimation应用详解

    本节讲解ScaleAnimation 动画在应用中的实现,有需要的朋友可以参考下 android中提供了4中动画: AlphaAnimation 透明度动画效果 ScaleAnimation 缩放动画 ...

  2. Android 动画之ScaleAnimation应用具体解释

    android中提供了4中动画: AlphaAnimation 透明度动画效果 ScaleAnimation 缩放动画效果 TranslateAnimation 位移动画效果 RotateAnimat ...

  3. android scaleanimation动画,Android 动画之ScaleAnimation应用详解

    android中提供了4中动画: AlphaAnimation 透明度动画效果 ScaleAnimation 缩放动画效果 TranslateAnimation 位移动画效果 RotateAnimat ...

  4. android scaleanimation动画,【Android动画九章】-RotateAnimation(旋转动画)和ScaleAnimation(尺寸动画)...

    [Android动画九章]-RotateAnimation(旋转动画)和ScaleAnimation(尺寸动画) public abstract class Animation extends Obj ...

  5. Android图形动画 使用ScaleAnimation

    使用ScaleAnimation实现了一个类似于翻转的动画效果. 感觉ScaleAnimation算是一个比较好用的动画类了,看了一下API感觉方法和构造方法也都很简单. 就不再赘述太多直接上代码吧- ...

  6. Android动画效果translate、scale、alpha、rotate详解

    动画类型 Android的animation由四种类型组成 XML中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面 ...

  7. 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)

    Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变). 第二类就是 Frame动画,即顺序的播放事先做好的图像,与g ...

  8. android动画的实现原理,Android动画的实现原理 .

    1.动画运行模式 独行模式 中断模式 2.Animation类 每个动画都重载了父类的applyTransformation方法这个方法的主要作用是把一些属性组装成一个Transformation类, ...

  9. Android 动画分析学习笔记

    一:分类: Android动画分三种:view动画(对场景中的对象不断做图像变换<平移,缩放,旋转,透明度>).帧动画(顺序播放一系列图像产生动画效果).属性动画(动态改变对象属性). 二 ...

最新文章

  1. 标准h5的定位_H5中的定位
  2. docker 可视化管理工具 dockerui 简介
  3. 解决yarn报错:Found incompatible module (yarn config set ignore-engines true)
  4. C++赋值运算符和拷贝构造函数区别
  5. oracle复制数据库文件不动,复制数据库中需要注意的几点事项
  6. 论文浅尝 - JWS2020 | FEEL: 实体抽取和链接的集成框架
  7. 关于c# SESSION丢失问题解决办法
  8. 【NOIP2014】【Luogu2141】珠心算测验(枚举,合并两数组相同元素个数)
  9. jdk的官方下载地址
  10. 如何在桌面添加计算机日历工具,Win7电脑在桌面添加时钟、日历、货币、天气、CPU仪表盘小工具方法...
  11. 杨辉三角(Python)
  12. 一打卡作弊软件CEO被判5年6个月,网友:这也太...
  13. 阿里云发送短信工具类
  14. 在计算机中移动硬盘一般用作什么,移动硬盘是什么
  15. HiveSQL中级进阶常用技巧
  16. 游戏企业该如何做好网络安全防护?
  17. 企业电销如何获得高质量精准流量,大数据获客直击精准客流
  18. JS + Echarts实现中国地图 China.js
  19. 阿里面试:分析为什么B+树更适合作为索引的结构以及索引原理
  20. K均值聚类算法(Kmeans)讲解及源码实现

热门文章

  1. 2022年初级会计考试经典试题及答案
  2. Windows下Redis集群搭建(超详细教程)
  3. 视频监控系统智能识别分析
  4. c语言中rename的用法,rename命令怎么使用
  5. JuiceSSH:安卓平台免费好用的 SSH 客户端
  6. 【C语言】让你不再因为指针而感到头疼
  7. git新建分支及提交代码到分支
  8. 360亿元买域名,值得吗?
  9. python取消注释代码_python去除注释
  10. 微信小程序使用阿里图库iconfont