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"><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使用相关推荐
- Android 动画之ScaleAnimation应用详解
本节讲解ScaleAnimation 动画在应用中的实现,有需要的朋友可以参考下 android中提供了4中动画: AlphaAnimation 透明度动画效果 ScaleAnimation 缩放动画 ...
- Android 动画之ScaleAnimation应用具体解释
android中提供了4中动画: AlphaAnimation 透明度动画效果 ScaleAnimation 缩放动画效果 TranslateAnimation 位移动画效果 RotateAnimat ...
- android scaleanimation动画,Android 动画之ScaleAnimation应用详解
android中提供了4中动画: AlphaAnimation 透明度动画效果 ScaleAnimation 缩放动画效果 TranslateAnimation 位移动画效果 RotateAnimat ...
- android scaleanimation动画,【Android动画九章】-RotateAnimation(旋转动画)和ScaleAnimation(尺寸动画)...
[Android动画九章]-RotateAnimation(旋转动画)和ScaleAnimation(尺寸动画) public abstract class Animation extends Obj ...
- Android图形动画 使用ScaleAnimation
使用ScaleAnimation实现了一个类似于翻转的动画效果. 感觉ScaleAnimation算是一个比较好用的动画类了,看了一下API感觉方法和构造方法也都很简单. 就不再赘述太多直接上代码吧- ...
- Android动画效果translate、scale、alpha、rotate详解
动画类型 Android的animation由四种类型组成 XML中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面 ...
- 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)
Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变). 第二类就是 Frame动画,即顺序的播放事先做好的图像,与g ...
- android动画的实现原理,Android动画的实现原理 .
1.动画运行模式 独行模式 中断模式 2.Animation类 每个动画都重载了父类的applyTransformation方法这个方法的主要作用是把一些属性组装成一个Transformation类, ...
- Android 动画分析学习笔记
一:分类: Android动画分三种:view动画(对场景中的对象不断做图像变换<平移,缩放,旋转,透明度>).帧动画(顺序播放一系列图像产生动画效果).属性动画(动态改变对象属性). 二 ...
最新文章
- 标准h5的定位_H5中的定位
- docker 可视化管理工具 dockerui 简介
- 解决yarn报错:Found incompatible module (yarn config set ignore-engines true)
- C++赋值运算符和拷贝构造函数区别
- oracle复制数据库文件不动,复制数据库中需要注意的几点事项
- 论文浅尝 - JWS2020 | FEEL: 实体抽取和链接的集成框架
- 关于c# SESSION丢失问题解决办法
- 【NOIP2014】【Luogu2141】珠心算测验(枚举,合并两数组相同元素个数)
- jdk的官方下载地址
- 如何在桌面添加计算机日历工具,Win7电脑在桌面添加时钟、日历、货币、天气、CPU仪表盘小工具方法...
- 杨辉三角(Python)
- 一打卡作弊软件CEO被判5年6个月,网友:这也太...
- 阿里云发送短信工具类
- 在计算机中移动硬盘一般用作什么,移动硬盘是什么
- HiveSQL中级进阶常用技巧
- 游戏企业该如何做好网络安全防护?
- 企业电销如何获得高质量精准流量,大数据获客直击精准客流
- JS + Echarts实现中国地图 China.js
- 阿里面试:分析为什么B+树更适合作为索引的结构以及索引原理
- K均值聚类算法(Kmeans)讲解及源码实现