点击启动,暂停动画

1.现实这个功能主要是实现三个地方,启动动画,监听动画,停止动画,这里需要注意的地方是,我们需要的是循环,不停顿的播放!所以写时,需要注意设置。


2.代码部分


package com.example.com.mlsdome.Activity.Fragment;

import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.LinearInterpolator;
import android.view.animation.RotateAnimation;
import android.widget.ImageView;

import com.example.com.mlsdome.R;

/**
 * Created by 12697 on 2017/3/13.
 */

/*
* 运动fragment
*
* */

public class SportFragment extends Fragment
{
    private ObjectAnimator objAnim = null;
    private ImageView sport_start,sport_stop;
    private ImageView sport_anmi;
    private RotateAnimation rotateAnimation;
    private boolean isStopAnim = false;
    private float currentValue = 0f;
    private AlphaAnimation animation2;


    public static SportFragment getIntance()
    {
        return new SportFragment();
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState)
    {
        super.onViewCreated(view, savedInstanceState);

        sport_stop= (ImageView) view.findViewById(R.id.sport_stop);
        sport_anmi= (ImageView) view.findViewById(R.id.sport_anmi);
        sport_start= (ImageView) view.findViewById(R.id.sport_start);
        animation2 = new AlphaAnimation(1.0f, 1.0f);
        animation2.setDuration(3000);
        animation2.setInterpolator(new LinearInterpolator());//不停顿
        animation2.setRepeatCount(-1);

        sport_start.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
                      startAnimation();
                     sport_stop.setVisibility(View.VISIBLE);
                     sport_start.setVisibility(View.GONE);

            }
        });

        sport_stop.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
                pauseAnimation();
                sport_stop.setVisibility(View.GONE);
                sport_start.setVisibility(View.VISIBLE);
            }
        });
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.sport_fragment_layout,container,false);
    }


    /**
     * 开始动画
     * */

    public void startAnimation()
    {

        // 设置动画,从上次停止位置开始,这里是顺时针旋转360        objAnim = ObjectAnimator.ofFloat(sport_anmi, "Rotation",
                currentValue - 360, currentValue);
        // 设置持续时间
        objAnim.setDuration(3000);
        // 设置循环播放
        objAnim.setRepeatCount(-1);

        objAnim.setInterpolator(new LinearInterpolator());//不停顿

        // 设置动画监听
        objAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

            @Override
            public void onAnimationUpdate(ValueAnimator animation)
            {
                // 监听动画执行的位置,以便下次开始时,从当前位置开始
                currentValue = (Float) animation.getAnimatedValue();
            }
        });
        objAnim.start();
        sport_anmi.startAnimation(animation2);
    }

    /**
     * 暂停动画
     * */
    public void pauseAnimation()
    {
        objAnim.cancel();
        sport_anmi.clearAnimation();// 清除此ImageView身上的动画
    }

}





3.基本上难度不大,所以我就不多解释了



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值