码迷,mamicode.com
首页 > 移动开发 > 详细

Android笔记(六十四) android中的动画——补间动画(tweened animation)

时间:2015-12-23 07:03:45      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:

      补间动画就是只需要定义动画开始和结束的位置,动画中间的变化由系统去补齐。

      补间动画由一下四种方式:

      1.AplhaAnimation——透明度动画效果

      2.ScaleAnimation ——缩放动画效果

      3.TranslateAnimation——位移动画效果

      4.RotateAnimation——旋转动画效果

1.AplhaAnimation

      AplhaAnimation的参数:

      fromAlpha:动画开始时的透明度,0.0表示完全透明

      toAlpha:动画结束时的透明度,1.0表示完全不透明

package cn.lixyz.animator;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener {

    private ImageView iv;
    private Button alpha;

    private AlphaAnimation alphaAnimation;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    private void initView() {
        iv = (ImageView) findViewById(R.id.image);
        alpha = (Button) findViewById(R.id.alpha);
        alpha.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.alpha:
            alphaAnimation = new AlphaAnimation(0.1f, 1);
            alphaAnimation.setDuration(1000);
            alphaAnimation.setRepeatCount(3);
            alphaAnimation.setRepeatMode(Animation.REVERSE);
            iv.startAnimation(alphaAnimation);
            alphaAnimation.setAnimationListener(new AnimationListener() {

                @Override
                public void onAnimationStart(Animation animation) {
                    Log.d("TTTT", "动画开始");
                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                    Log.d("TTTT", "动画重复");

                }

                @Override
                public void onAnimationEnd(Animation animation) {
                    Log.d("TTTT", "动画结束");

                }
            });

            break;
        }
    }
}

      常用属性:

      setRepeatCount(int repeatCount)——设置重复次数

      setFillAfter(boolean)——动画执行完后是否停留在执行完的状态

      setStartOffset(long startOffset)——执行前的等待时间 

2.ScaleAnimation 

      ScakeAnimation的参数:

      fromX:动画起始时X坐标上的伸缩尺寸

      toX:动画结束时X坐标上的伸缩尺寸

      fromY:动画起始时Y坐标上的伸缩尺寸

      toY:动画结束时Y坐标上的伸缩尺寸

      pivotXType:动画在X轴相对于物件位置类型

      pivotXValue:动画相对于物件的X坐标的开始位置

      pivotYType:动画在Y轴相对于物件位置类型

      pivotYValue:动画相对于物件的Y坐标的开始位置

package cn.lixyz.animator;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.ScaleAnimation;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener {

    private ImageView iv;
    private Button scale;

    private ScaleAnimation scaleAnimation;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    private void initView() {
        iv = (ImageView) findViewById(R.id.image);
        scale = (Button) findViewById(R.id.scale);
        scale.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.scale:
            scaleAnimation = new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f, Animation.RELATIVE_TO_SELF, 0.5f,
                    Animation.RELATIVE_TO_SELF, 0.5f);
            scaleAnimation.setDuration(3000);
            iv.startAnimation(scaleAnimation);

            break;
        }
    }
}

      常用属性:

      setRepeatCount(int repeatCount)——设置重复次数

      setFillAfter(boolean)——动画执行完后是否停留在执行完的状态

      setStartOffset(long startOffset)——执行前的等待时间

3.TranslateAnimation

      TranslateAnimation的参数

      fromXDelta: 动画开始的点离当前View X坐标上的差值

      toXDelta: 动画结束的点离当前View X坐标上的差值

      fromYDelta: 动画开始的点离当前View Y坐标上的差值

      toYDelta动画开始的点离当前View Y坐标上的差值

package cn.lixyz.animator;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener {

    private ImageView iv;
    private Button transla;

    private TranslateAnimation translaAnimation;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    private void initView() {
        iv = (ImageView) findViewById(R.id.image);
        transla = (Button) findViewById(R.id.transla);
        transla.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.transla:
            translaAnimation = new TranslateAnimation(0, 150, 0, 0);
            translaAnimation.setDuration(1000);
            iv.startAnimation(translaAnimation);
            break;
        }
    }
}

      常用属性:

      animation.setDuration(long durationMillis)——设置动画持续时间
      animation.setRepeatCount(int i)——设置重复次数
      animation.setRepeatMode(Animation.REVERSE)——设置反方向执行

4.RotateAnimation

      RotateAnimation的参数:

      fromDegrees——旋转的开始角度。

      toDegrees——旋转的结束角度。

      pivotXType——X轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

      pivotXValue——X坐标的伸缩值。

      pivotYType——Y轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

      pivotYValue——Y坐标的伸缩值。

package cn.lixyz.animator;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener {

    private ImageView iv;
    private Button rotate;

    private RotateAnimation rotateAnimation;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    private void initView() {
        iv = (ImageView) findViewById(R.id.image);
        rotate = (Button) findViewById(R.id.rotate);
        rotate.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.rotate:
            rotateAnimation = new RotateAnimation(0, 180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
                    0.5f);
            rotateAnimation.setDuration(2000);
            iv.startAnimation(rotateAnimation);

            break;
        }
    }
}

      常用方法:

              animation.setRepeatCount(int repeatCount)——设置重复次数
              animation.setFillAfter(boolean)——动画执行完后是否停留在执行完的状态
              animation.setStartOffset(long startOffset)——执行前的等待时间

 

Android笔记(六十四) android中的动画——补间动画(tweened animation)

标签:

原文地址:http://www.cnblogs.com/xs104/p/5068721.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!