ToolBarTestActivity.java 11.3 KB
package com.cnlive.strike.xiaojiaspeaker;

import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.databinding.DataBindingUtil;
import android.os.Build;
import android.os.Handler;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.CoordinatorLayout;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.animation.FastOutLinearInInterpolator;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.AnticipateInterpolator;
import android.view.animation.BounceInterpolator;
import android.view.animation.CycleInterpolator;
import android.view.animation.LinearInterpolator;
import android.view.animation.OvershootInterpolator;
import android.view.animation.TranslateAnimation;
import android.widget.LinearLayout;

import com.cnlive.strike.speaker.R;
import com.cnlive.strike.speaker.databinding.ActivityToolBarTest1Binding;
import com.cnlive.strike.speaker.databinding.ActivityToolBarTestBinding;
import com.cnlive.strike.xiaojiaspeaker.util.utilcode.util.ScreenUtils;
import com.daimajia.androidanimations.library.Techniques;
import com.daimajia.androidanimations.library.YoYo;

public class ToolBarTestActivity extends AppCompatActivity {
    private ActivityToolBarTestBinding binding;
    private String TAG = "ToolBarTestActivity";
    private boolean isFirstSlide = true;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = DataBindingUtil.setContentView(this, R.layout.activity_tool_bar_test);
        LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) binding.ivLife.getLayoutParams();
        Log.e(TAG, "onCreate: " + params.topMargin);
        YoYo.with(Techniques.Swing)
                .duration(700)
                .repeat(0)
                .playOn(binding.ivLife);
        binding.appbar.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
            @Override
            public void onOffsetChanged(AppBarLayout appBarLayout, int i) {
                Log.e(TAG, "onOffsetChanged: " + i + "getTotalScrollRange:" + appBarLayout.getTotalScrollRange());
                if (isFirstSlide) {
                    if (i != 0) {
                        binding.tvCircle.setVisibility(View.GONE);
                        binding.tvSub.setVisibility(View.GONE);
                        binding.tvShop.setVisibility(View.GONE);
                        binding.llMenu.startAnimation(AnimationUtils.makeOutAnimation(ToolBarTestActivity.this, true));
                        binding.llMenu.setVisibility(View.INVISIBLE);

                        ObjectAnimator anim = ObjectAnimator.ofFloat(binding.llLife, "scaleY", 1f, 0.8f);
                        // 正式开始启动执行动画
                        ObjectAnimator anim1 = ObjectAnimator.ofFloat(binding.llLife, "scaleX", 1f, 0.8f);
                        // 正式开始启动执行动画
                        AnimatorSet animatorSet = new AnimatorSet();
                        animatorSet.play(anim).with(anim1);
                        animatorSet.setDuration(500);
                        animatorSet.start();


                        ObjectAnimator translationX = ObjectAnimator.ofFloat(binding.llLife, "translationY", 50, -50);
                        translationX.setDuration(300);
                        translationX.setInterpolator(new FastOutLinearInInterpolator());
                        translationX.start();
                        new Handler().postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                ObjectAnimator anim = ObjectAnimator.ofFloat(binding.llSub, "scaleY", 1f, 0.8f);
                                // 正式开始启动执行动画
                                ObjectAnimator anim1 = ObjectAnimator.ofFloat(binding.llSub, "scaleX", 1f, 0.8f);
                                // 正式开始启动执行动画
                                AnimatorSet animatorSet = new AnimatorSet();
                                animatorSet.play(anim).with(anim1);
                                animatorSet.setDuration(500);
                                animatorSet.start();

                                ObjectAnimator translationX1 = ObjectAnimator.ofFloat(binding.llSub, "translationY", 50, -50);
                                translationX1.setDuration(300);
                                translationX1.setInterpolator(new FastOutLinearInInterpolator());
                                translationX1.start();
                                new Handler().postDelayed(new Runnable() {
                                    @Override
                                    public void run() {
                                        ObjectAnimator anim = ObjectAnimator.ofFloat(binding.llShop, "scaleY", 1f, 0.8f);
                                        // 正式开始启动执行动画
                                        ObjectAnimator anim1 = ObjectAnimator.ofFloat(binding.llShop, "scaleX", 1f, 0.8f);
                                        // 正式开始启动执行动画
                                        AnimatorSet animatorSet = new AnimatorSet();
                                        animatorSet.play(anim).with(anim1);
                                        animatorSet.setDuration(500);
                                        animatorSet.start();

                                        ObjectAnimator translationX2 = ObjectAnimator.ofFloat(binding.llShop, "translationY", 50, -50);
                                        translationX2.setDuration(300);
                                        translationX2.setInterpolator(new FastOutLinearInInterpolator());
                                        translationX2.start();

                                    }
                                }, 50);
                            }
                        }, 50);


                    }
                }
                if (i != 0) {
                    isFirstSlide = false;
                    if (i == -appBarLayout.getTotalScrollRange()) {
                        setMargin(100);
                    }
                } else {
                    if (!isFirstSlide) {
                        setMargin(0);
                    }
                    isFirstSlide = true;
                    binding.tvCircle.setVisibility(View.VISIBLE);
                    binding.tvSub.setVisibility(View.VISIBLE);
                    binding.tvShop.setVisibility(View.VISIBLE);
                    binding.llMenu.setVisibility(View.VISIBLE);
                    binding.ivLife.setVisibility(View.VISIBLE);

                    ObjectAnimator anim = ObjectAnimator.ofFloat(binding.llShop, "scaleY", 0.8f, 1f);
                    // 正式开始启动执行动画
                    ObjectAnimator anim1 = ObjectAnimator.ofFloat(binding.llShop, "scaleX", 0.8f, 1f);
                    // 正式开始启动执行动画
                    AnimatorSet animatorSet = new AnimatorSet();
                    animatorSet.play(anim).with(anim1);
                    animatorSet.setDuration(500);
                    animatorSet.start();

                    ObjectAnimator translationX = ObjectAnimator.ofFloat(binding.llShop, "translationY", 100, 0);
                    translationX.setDuration(300);
                    translationX.setInterpolator(new FastOutLinearInInterpolator());
                    translationX.start();
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            ObjectAnimator anim = ObjectAnimator.ofFloat(binding.llSub, "scaleY", 0.8f, 1f);
                            // 正式开始启动执行动画
                            ObjectAnimator anim1 = ObjectAnimator.ofFloat(binding.llSub, "scaleX", 0.8f, 1f);
                            // 正式开始启动执行动画
                            AnimatorSet animatorSet = new AnimatorSet();
                            animatorSet.play(anim).with(anim1);
                            animatorSet.setDuration(500);
                            animatorSet.start();

                            ObjectAnimator translationX1 = ObjectAnimator.ofFloat(binding.llSub, "translationY", 100, 0);
                            translationX1.setDuration(300);
                            translationX1.setInterpolator(new FastOutLinearInInterpolator());
                            translationX1.start();
                            new Handler().postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    ObjectAnimator anim = ObjectAnimator.ofFloat(binding.llLife, "scaleY", 0.8f, 1f);
                                    // 正式开始启动执行动画
                                    ObjectAnimator anim1 = ObjectAnimator.ofFloat(binding.llLife, "scaleX", 0.8f, 1f);
                                    // 正式开始启动执行动画
                                    AnimatorSet animatorSet = new AnimatorSet();
                                    animatorSet.play(anim).with(anim1);
                                    animatorSet.setDuration(500);
                                    animatorSet.start();


                                    ObjectAnimator translationX2 = ObjectAnimator.ofFloat(binding.llLife, "translationY", 100, 0);
                                    translationX2.setDuration(300);
                                    translationX2.setInterpolator(new FastOutLinearInInterpolator());
                                    translationX2.start();
                                    //设置缩放动画
                                    new Handler().postDelayed(new Runnable() {
                                        @Override
                                        public void run() {
                                            ButtonAnimUtil.setViewShowZoomIn(binding.ivLife);
                                            YoYo.with(Techniques.Swing)
                                                    .duration(700)
                                                    .repeat(0)
                                                    .playOn(binding.ivLife);
                                        }
                                    }, 500);
                                }
                            }, 50);
                        }
                    }, 50);
//
                }

            }
        });
    }

    private void setMargin(int topmargin) {
        LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) binding.llLife.getLayoutParams();
        params.topMargin = topmargin;
        binding.llLife.setLayoutParams(params);
        LinearLayout.LayoutParams params2 = (LinearLayout.LayoutParams) binding.llSub.getLayoutParams();
        params2.topMargin = topmargin;
        binding.llSub.setLayoutParams(params2);
        LinearLayout.LayoutParams params3 = (LinearLayout.LayoutParams) binding.llShop.getLayoutParams();
        params3.topMargin = topmargin;
        binding.llShop.setLayoutParams(params3);
    }
}