复习-android动画

今天重新看了看有关动画的知识。

常用动画:

1.视图动画(包括:Tween动画(也叫补间动画) 和 帧动画两种)

补间动画:

补间动画主要是对View对象设置动画效果,仅仅是改变了视觉效果,并没有改变View的属性。最明显的一个现象就是:对View实现了平移动画效果之后,点击事件还是在View原来的位置才能响应。

    AlphaAnimation 透明度动画

    ScaleAnimation 缩放动画

    TranslateAnimation 平移动画

    RotateAnimation 旋转动画

补间动画的使用都有xml 和 java代码两种方式。

选择ScaleAnimation来看看具体使用方法

方式一:

scale.xml

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="3000"
    android:fromXScale="1"
    android:fromYScale="1"
    android:pivotX="0"
    android:pivotY="0"
    android:toXScale="2"
    android:toYScale="2">

</scale>

在Activity中使用

Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.scale);
tv_count.startAnimation(animation);//开始动画

注:

android:fromXScale:动画开始时,控件在水平方向相对于自己的缩放比例,浮点值。

android:fromYScale:动画开始时,控件在垂直方向相对于自己的缩放比例,浮点值。

android:toXScale:动画结束时,控件在水平方向相对于自己的缩放比例,浮点值。

android:toYScale:动画结束时,控件在垂直方向相当于自己的缩放比例,浮点值。

android:pivotX:缩放中心点X轴坐标,它的值有三种方式:数值,百分数,百分数p,例如50, 50%, 50%p。

android:pivotY:缩放中心点Y轴坐标,值同上。

默认情况下坐标原点位于控件左上角,向右(X轴正方向)向下(Y轴正方向)

50:表示在当前控件的左上角,即原点处X轴、Y轴分别加上50px,作为缩放中心点。

50%:表示在当前控件的左上角,即原点处x轴、y轴分别加上控件自身宽高的50%,作为缩放中心点。

50%p:表示在当前控件的左上角,即原点处x轴、y轴分别加上父控件宽高的50%,作为缩放中心点。

 

方式二:

ScaleAnimation类的构造函数如下:

1.public ScaleAnimation(Context context, AttributeSet attrs)
2.public ScaleAnimation(float fromX, float toX, float fromY, float toY)
3.public ScaleAnimation(float fromX, float toX, float fromY, float toY,float pivotX, float pivotY)
4.public ScaleAnimation(float fromX, float toX, float fromY, float toY,int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)

使用第四种构造方法

ScaleAnimation animation = new ScaleAnimation(1f, 2f, 1f, 2f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
animation.setDuration(3000);
tv_count.startAnimation(animation);

注:

pivotXType 和 pivotYType 也分别有三种,对应上面xml中的类似50, 50%, 50%p。

Animation.ABSOLUTE:对应于上面xml中的50
Animation.RELATIVE_TO_SELF:对应于上面xml中的50%
Animation.RELATIVE_TO_PARENT:对应于上面xml中的50%p 

 

其他三种动画用法类似,不再赘述。

 

帧动画

就是把多张静态图片放在一起,通过控制让其一帧一帧的显示,就跟放电影一样。

要实现帧动画,需要用到AnimationDrawable。

 

2.属性动画

可以对任何对象的属性做动画,而不仅仅是View,甚至可以没有对象。而且,属性动画的效果要比视图动画更丰富,更容易使用。

属性动画原理:属性动画要求作用对象(如View)提供该属性(如View的scaleX属性)的getter、setter方法。属性动画根据作用对象那个的属性的起点值、终点值、TypeEvaluator 在动画过程中根据插值器(Interpolator)计算当前时间对应的值,然后作用到相应的属性上从而使作用对象发生相应的改变。

主要用到:ValueAnimator 和 ObjectAnimator。

插值器(Interpolator):决定 值 的变化模式(匀速,加速等)

估值器(TypeEvaluator):决定 值 的具体变化逻辑

ValueAnimator类是先改变值,然后手动赋值给对象的属性从而实现动画,是间接对对象属性进行操作;

ObjectAnimator类是先改变值,然后自动赋值给对象的属性从而实现动画,是直接对对象属性进行操作;

 

3.转场动画

顾名思义,场景改变时的动画。通常指Activity切换时的动画效果。一般的,使用 overridePendingTransition 方法就可以满足我们的需求了,而android 5.0推出了全新的转场动画,动画效果更加丰富了。

全新的转场动画总体上分为两种:一种是分解、滑动、淡入淡出,另一种就是共享元素动画。

4.矢量动画

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值