什么是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"><scaleandroid: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"
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><scaleandroid: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);}

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


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

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

放大+淡入:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><scaleandroid: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" /><!--同时配置淡入功能--><alphaandroid: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"><scaleandroid: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" /><!--同时配置淡出功能--><alphaandroid: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"><scaleandroid: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" /><!--同时配置淡入功能--><alphaandroid: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"><scaleandroid: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" /><!--同时配置淡出功能--><alphaandroid: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"><scaleandroid: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" /><!--同时配置淡入功能--><alphaandroid: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"><scaleandroid: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" /><!--同时配置淡出功能--><alphaandroid: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. 缩放动画 ScaleAnimation 总结

    最近用到了ScaleAnimation来实现图片放大需求,今天就把使用过程中学习的一些东西总结记录一下,希望能对大家有所帮助. - ScaleAnimation是 Android官方提供的动画类Ani ...

  2. Android的动画:ScaleAnimation,AlphaAnimation,RotateAnimation,TranslateAnimation,Code,DrawableAnimation

    简介 动画有下面两种情况同一个图形通过视图在界面上进行透明度,缩放,旋转,平移的变化(View动画)在界面的同一个位置上不断切换显示不同的图片(Drawable动画)动画的分类View Animati ...

  3. android缩放动画的两种实现方法

    在android开发.我们会常常使用到缩放动画,普通情况下缩放动画有两种实现方式.一种是直接通过java代码去实现,第二种是通过配置文件实现动画,以下是两种动画的基本是用法: Java代码实现: // ...

  4. 补间动画详解五 缩放动画ScaleAnimation

    ScaleAnimation是尺寸变化动画的类,控制View的尺寸变化. ScaleAnimation类官方文档: https://developer.android.com/reference/an ...

  5. 缩放动画 ScaleAnimation

    缩放动画可以演示一个视图在宽高上的渐变效果.它的主要属性有: fromXScale动画起始时 X坐标上的伸缩倍数 0.0表示收缩到没有 fromYScale动画起始时 Y坐标上的伸缩倍数 toXSca ...

  6. android缩放动画后,Android ObjectAnimator:缩放后动画填充

    我使用ObjectAnimator对scaleX和scaleY动画有问题.Android ObjectAnimator:缩放后动画填充 在动画结束时,Drawable内部被调整大小,但不是ImageV ...

  7. android 焦点动画,在一个视图/imageview上获得焦点时,实现android缩放动画?_animation_开发99编程知识库...

    我想實現一個縮放 anmimation,當它獲得焦點時查看( 或者 ImageView ) . 以下是我的實現:public class ScaleFocusImageView extends Ima ...

  8. AndroidUI 视图动画-缩放动画效果 (ScaleAnimation)

    放动画效果,可以使用ScaleAnimation: <Buttonandroid:id="@+id/btnScale2"android:layout_width=" ...

  9. android组合动画还原,Android - Fragment,View动画,组合动画,属性动画

    转载请注明出处:https://blog.csdn.net/mythmayor/article/details/72876871 1.什么是Fragment 片段,碎片 * 从Android 3.0 ...

  10. Android之动画精讲一:从setTranslationX谈属性动画和view动画的区别

    转载:http://blog.csdn.net/yanzi1225627/article/details/47850471 最近又用到了动画,决定把几次项目里用到的动画走过的弯路总结一下,顺便梳理下a ...

最新文章

  1. 看到数学就打怵不是你的错:百万人调查发现上黑板做题、作业太多、家长陪写都会引发焦虑|PNAS...
  2. python小数输出01_python:格式化输出(上)
  3. 开发办公APP时间估算
  4. java动态代理--代理接口无实现类
  5. 并发编程--用SingleFlight合并重复请求
  6. CSS快速学习8:圆角切图、滚动条和图片整合技术
  7. mysql er图 linux_ER图设计
  8. java弹幕爬取,手把手教你爬取B站弹幕(超详细)!
  9. 阿里设计师:B端产品国际版体验设计
  10. android系统 通知管理,告别打扰 Android系统的通知管理
  11. 老人智能手表方案/案列/APP/小程序/网站
  12. 【雅思大作文考官范文】——第十三篇:'traditions and technology' essay
  13. ESB企业服务总线 --- ESB概述
  14. Pandas时间序列进阶(日期范围,频率,移位,时区处理)
  15. 深度优先搜索练习之神奇的矩环
  16. “即刻搜索”使用率几乎为零
  17. ESP8266EX 串口WIFI无线模块
  18. 灰色模型相关---理论基础
  19. MySQL快速入门笔记
  20. python tk模块 小作业

热门文章

  1. 科技爱好者周刊:第 74 期
  2. 用计算机唱十只兔子,十只兔子为什么是禁歌 这首童谣恐怖在哪里
  3. 关于目前CIM(BIM+GIS)行业的一些看法
  4. IObit Uninstaller(卸载工具) v10.0.2.20
  5. 中国目前拥有的人造卫星的种类及其作用
  6. ajax请求406,Ajax请求返回(406不可接受)
  7. 图片扫描纠偏java_Delphi 下 用 ImageEN 进行图像纠偏
  8. 如何申请自己的免费企业邮箱
  9. 短视频拍摄流程-----今抖云创
  10. ESP32 学习笔记(二十九) ESP32 低功耗模式