Android 缩放动画 ScaleAnimation
什么是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相关推荐
- 缩放动画 ScaleAnimation 总结
最近用到了ScaleAnimation来实现图片放大需求,今天就把使用过程中学习的一些东西总结记录一下,希望能对大家有所帮助. - ScaleAnimation是 Android官方提供的动画类Ani ...
- Android的动画:ScaleAnimation,AlphaAnimation,RotateAnimation,TranslateAnimation,Code,DrawableAnimation
简介 动画有下面两种情况同一个图形通过视图在界面上进行透明度,缩放,旋转,平移的变化(View动画)在界面的同一个位置上不断切换显示不同的图片(Drawable动画)动画的分类View Animati ...
- android缩放动画的两种实现方法
在android开发.我们会常常使用到缩放动画,普通情况下缩放动画有两种实现方式.一种是直接通过java代码去实现,第二种是通过配置文件实现动画,以下是两种动画的基本是用法: Java代码实现: // ...
- 补间动画详解五 缩放动画ScaleAnimation
ScaleAnimation是尺寸变化动画的类,控制View的尺寸变化. ScaleAnimation类官方文档: https://developer.android.com/reference/an ...
- 缩放动画 ScaleAnimation
缩放动画可以演示一个视图在宽高上的渐变效果.它的主要属性有: fromXScale动画起始时 X坐标上的伸缩倍数 0.0表示收缩到没有 fromYScale动画起始时 Y坐标上的伸缩倍数 toXSca ...
- android缩放动画后,Android ObjectAnimator:缩放后动画填充
我使用ObjectAnimator对scaleX和scaleY动画有问题.Android ObjectAnimator:缩放后动画填充 在动画结束时,Drawable内部被调整大小,但不是ImageV ...
- android 焦点动画,在一个视图/imageview上获得焦点时,实现android缩放动画?_animation_开发99编程知识库...
我想實現一個縮放 anmimation,當它獲得焦點時查看( 或者 ImageView ) . 以下是我的實現:public class ScaleFocusImageView extends Ima ...
- AndroidUI 视图动画-缩放动画效果 (ScaleAnimation)
放动画效果,可以使用ScaleAnimation: <Buttonandroid:id="@+id/btnScale2"android:layout_width=" ...
- android组合动画还原,Android - Fragment,View动画,组合动画,属性动画
转载请注明出处:https://blog.csdn.net/mythmayor/article/details/72876871 1.什么是Fragment 片段,碎片 * 从Android 3.0 ...
- Android之动画精讲一:从setTranslationX谈属性动画和view动画的区别
转载:http://blog.csdn.net/yanzi1225627/article/details/47850471 最近又用到了动画,决定把几次项目里用到的动画走过的弯路总结一下,顺便梳理下a ...
最新文章
- 看到数学就打怵不是你的错:百万人调查发现上黑板做题、作业太多、家长陪写都会引发焦虑|PNAS...
- python小数输出01_python:格式化输出(上)
- 开发办公APP时间估算
- java动态代理--代理接口无实现类
- 并发编程--用SingleFlight合并重复请求
- CSS快速学习8:圆角切图、滚动条和图片整合技术
- mysql er图 linux_ER图设计
- java弹幕爬取,手把手教你爬取B站弹幕(超详细)!
- 阿里设计师:B端产品国际版体验设计
- android系统 通知管理,告别打扰 Android系统的通知管理
- 老人智能手表方案/案列/APP/小程序/网站
- 【雅思大作文考官范文】——第十三篇:'traditions and technology' essay
- ESB企业服务总线 --- ESB概述
- Pandas时间序列进阶(日期范围,频率,移位,时区处理)
- 深度优先搜索练习之神奇的矩环
- “即刻搜索”使用率几乎为零
- ESP8266EX 串口WIFI无线模块
- 灰色模型相关---理论基础
- MySQL快速入门笔记
- python tk模块 小作业
热门文章
- 科技爱好者周刊:第 74 期
- 用计算机唱十只兔子,十只兔子为什么是禁歌 这首童谣恐怖在哪里
- 关于目前CIM(BIM+GIS)行业的一些看法
- IObit Uninstaller(卸载工具) v10.0.2.20
- 中国目前拥有的人造卫星的种类及其作用
- ajax请求406,Ajax请求返回(406不可接受)
- 图片扫描纠偏java_Delphi 下 用 ImageEN 进行图像纠偏
- 如何申请自己的免费企业邮箱
- 短视频拍摄流程-----今抖云创
- ESP32 学习笔记(二十九) ESP32 低功耗模式