动画 -- View动画 -- 缩放动画
一、概念
缩放动画,子类:ScaleAnimation,标签:
它可以使View具有放大或者缩小的动画效果。
二、实现
1. XML实现
android:fromXScale:起始的x方向上相对自身的缩放比例,浮点值,比如1.0表示起始时自身无变化,0.5表示缩小一倍,2.0表示放大一倍;
android:toXScale:结尾的x方向上相对自身的缩放比例,浮点值;
android:fromYScale:起始的y方向上相对自身的缩放比例,浮点值;
android:toYScale:结尾的y方向上相对自身的缩放比例,浮点值;
android:pivotX:缩放起点x轴坐标,可以是 数值、百分数、百分数p 三种样式,比如 50、50%、50%p,
50,表示在当前View的左上角x轴坐标加上50px做为起始点x轴坐标;
50%,表示在当前View的左上角x轴坐标加上自己宽度的50%做为起始点x轴坐标;
50%p,表示在当前View的左上角x轴坐标加上父控件宽度的50%做为起始点x轴坐标。
android:pivotY:缩放起点y轴坐标,取值及意义跟android:pivotX一样。
//res/anim/scale_animation.xml<?xml version="1.0" encoding="utf-8"?> //布局<?xml version="1.0" encoding="utf-8"?> //代码,MainActivityprivate void scaleAnimationXML() { Animation scaleAnimation = AnimationUtils.loadAnimation(this, R.anim.scale_animation); mAnimate_tv.setAnimation(scaleAnimation); mAnimate_tv.startAnimation(scaleAnimation); }private void stopAnimation() { mAnimate_tv.clearAnimation();}@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); scaleAnimationXML();}@Overrideprotected void onDestroy() { super.onDestroy(); stopAnimation();}
2. 代码实现
构造方法:
public ScaleAnimation(float fromX, float toX, float fromY, float toY,int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
参数说明:
float fromX:起始的x方向上相对自身的缩放比例,浮点值,比如1.0表示起始时自身无变化,0.5表示缩小一倍,2.0表示放大一倍;
float toX:结尾的x方向上相对自身的缩放比例,浮点值;
float fromY:起始的y方向上相对自身的缩放比例,浮点值;
float toY:结尾的y方向上相对自身的缩放比例,浮点值;
int pivotXType:缩放起点x轴参考类型,
Animation.ABSOLUTE(绝对像素值);
Animation.RELATIVE_TO_SELF(参考自己);Animation.RELATIVE_TO_PARENT(参考父容器)。
float pivotXValue:缩放起点x轴坐标,
当pivotXType为ABSOLUTE时,当前View的左上角x轴坐标加上绝对像素值做为起始点x轴坐标;
当pivotXType为RELATIVE_TO_SELF或RELATIVE_TO_PARENT时,当前View的左上角x轴坐标加上 参考物宽度*pivotXValue 做为起始点x轴坐标。
int pivotYType:缩放起点y轴参考类型;
float pivotYValue:缩放起点y轴坐标。
//布局<?xml version="1.0" encoding="utf-8"?> //代码,MainActivityprivate void scaleAnimationCode() { mAnimation = new ScaleAnimation(0, 1.0f, 0, 1.0f, Animation.RELATIVE_TO_SELF, 1.5f, Animation.RELATIVE_TO_SELF, 1.5f); mAnimation.setDuration(3000); mAnimation.setRepeatCount(2); mAnimation.setFillAfter(true); mAnimate_tv.setAnimation(mAnimation); mAnimate_tv.startAnimation(mAnimation);}private void stopAnimation() { mAnimate_tv.clearAnimation();}@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); scaleAnimationCode();}@Overrideprotected void onDestroy() { super.onDestroy(); stopAnimation();}
更多相关文章
- 一行代码搞定Android屏幕适配
- SuperMap iMobile for Android定位实现
- 【Android应用实例之二】跟随手指的小球——自定义View应用
- Android读书笔记---View基础
- Android(安卓)SVG矢量图/矢量动画、Vector和VectorDrawable矢量
- 2014-11-8Android学习------Android(安卓)仿真翻页效果实现原理
- android资料--Android通过手势(多点)缩放和拖拽图片
- Android(安卓)OpenGL ES(二)绘制三角形
- 五幅图学会Android(安卓)Canvas的坐标系变换(rotate translate s