Animator

 

1 shape

<shape xmlns:android="http://schemas.android.com/apk/res/android">


    <stroke
        android:width="1dp"
        android:color="#cf7373"/>

    <corners
        android:radius="50dp"/>

    <solid
        android:color="#d65959"/>



</shape>

 

 

 

2.MainActivity

 

package com.example.lenovo.month021025;

import android.animation.ObjectAnimator;
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;




public class MainActivity extends AppCompatActivity {

    private TextView txtRound;
    private static final int FLAG = 123;

    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);

            if (msg.what == FLAG){
                Intent intent = new Intent(MainActivity.this,HomeActivity.class);
                startActivity(intent);


            }

        }
    };

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

        txtRound = findViewById(R.id.txt_round);

        ObjectAnimator xanimator = ObjectAnimator.ofFloat(
                txtRound,
                "translationX",
                0,
                600
        );

        ObjectAnimator yanimator = ObjectAnimator.ofFloat(
                txtRound,
                "translationY",
                0,
                1100
        );

        xanimator.setDuration(3000);
        yanimator.setDuration(3000);
        xanimator.start();
        yanimator.start();
       handler.sendEmptyMessageDelayed(FLAG,5000);


    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        handler.removeCallbacksAndMessages(null);
    }

}

 

 

Animator

package com.bwie.attranimator1018;

import android.animation.Animator;
import android.animation.AnimatorInflater;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.animation.StateListAnimator;
import android.animation.TypeEvaluator;
import android.animation.ValueAnimator;
import android.graphics.Color;
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.AccelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.AnticipateInterpolator;
import android.view.animation.BounceInterpolator;
import android.view.animation.CycleInterpolator;
import android.view.animation.DecelerateInterpolator;
import android.view.animation.LinearInterpolator;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import java.util.Date;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private static final String TAG = "MainActivity";
    private Button btnPreview;
    private Button btnStart;
    private Button btnAfter;
    private TextView imgShow;
    private ObjectAnimator animatorTranslation;

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

        btnPreview = findViewById(R.id.btn_preview);
        btnStart = findViewById(R.id.btn_start);
        btnAfter = findViewById(R.id.btn_after);
        imgShow = findViewById(R.id.txt_show);

        btnPreview.setOnClickListener(this);
        btnStart.setOnClickListener(this);
        btnAfter.setOnClickListener(this);

    }

    private void valueAnimator() {
        // 属性动画中第一个比较重要的类,值的变化,值动画
//                ValueAnimator valueAnimator = new ValueAnimator();
//                valueAnimator.setIntValues(1, 2, 3, 4, 5);
        ValueAnimator valueAnimator = ValueAnimator.ofInt(1, 4, 9);
//                ValueAnimator valueAnimator = ValueAnimator.ofFloat(1.0f, 3.0f);
        valueAnimator.setDuration(3000);
        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                Object value = animation.getAnimatedValue();
                Log.i(TAG, "onAnimationUpdate: " + new Date().toString() + "---" + value);
            }
        });
        valueAnimator.start();
    }

    @Override
    public void onClick(final View v) {
        switch (v.getId()) {
            case R.id.btn_preview:
                Log.i(TAG, "开始前: " + imgShow.getTranslationX());
                break;
            case R.id.btn_start:
                //                valueAnimator();

                // ObjectAnimator继承自ValueAnimator
//                ObjectAnimator objectAnimator = ObjectAnimator.ofArgb(
//                        imgShow,
//                        "backgroundColor",
//                        Color.parseColor("#000000"),
//                        Color.parseColor("#FFFFFF"));
//
//                imgShow.setTranslationX();
//                translateAnimator();
//                alphaAnimator();

//                scaleAnimator();
//                rotationAnimator();

                // 如果是使用属性动画的属性,必须在这个对象中存在set属性的方法
//                ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(
//                        imgShow,
//                        "errr",
//                        1,
//                        2
//                );
//                objectAnimator();

//                animatorTranslation = ObjectAnimator.ofFloat(
//                        imgShow,
//                        "translationX",
//                        0, 500
//                );
//                animatorTranslation.setDuration(3000);
//                // 设置重复次数,重复一次代表走两次
//                animatorTranslation.setRepeatCount(-1);
//                animatorTranslation.start();


                ObjectAnimator ta = ObjectAnimator.ofFloat(
                        imgShow, "translationX",
                        0, 1000
                );

                // 加速插值器
//                ta.setInterpolator(new AccelerateInterpolator());
                // 减速插值器
//                ta.setInterpolator(new DecelerateInterpolator());

                // 先加速后减速的插值器
//                ta.setInterpolator(new AccelerateDecelerateInterpolator());

                // 匀速插值器
//                ta.setInterpolator(new LinearInterpolator());
                // 回弹效果
//                ta.setInterpolator(new AnticipateInterpolator());
                // 阻尼效果
//                ta.setInterpolator(new BounceInterpolator());
                // 回环效果
//                ta.setInterpolator(new CycleInterpolator(1));

                ta.setDuration(5000);
                // 延时启动动画
                ta.setStartDelay(2000);
                ta.start();

//                ObjectAnimator ra = ObjectAnimator.ofFloat(
//                        imgShow, "rotation",
//                        0, 360
//                );
//                ra.setDuration(3000);

//                ta.start();
//                ra.start();


                // Animation补间动画的动画类
//
//                Animator 属性动画的动画类
                // 组合动画
//                AnimatorSet set = new AnimatorSet();
//                // 两个动画一起进行
                set.play(ta).with(ra);
//                // 在before(动画)执行之前执行play(动画)
                set.play(ta).before(ra);
//                // 在after(动画)之后执行play(动画)
//                set.play(ta).after(ra);
//                set.start();

                // 加载xml文件中的属性动画
//                Animator animator = AnimatorInflater.loadAnimator(this, R.animator.animator_translation);
//                animator.setTarget(imgShow);
//                animator.start();


                break;
            case R.id.btn_after:
                Log.i(TAG, "结束后: " + imgShow.getTranslationX());

                // end之后直接停止动画并且执行到最终的设置的状态
//                animatorTranslation.end();
                // cancel之后停止动画并且停留在当前的状态
                animatorTranslation.cancel();
                break;
        }
    }

    private void objectAnimator() {
        // 属性动画不仅仅可以作用在View上,还可以作用于普通的变量,只要这个变量的属性有setter方法就可以
        Person p = new Person();
        p.setName("zhangsan");
        p.setAge(1);

        ObjectAnimator animator = ObjectAnimator.ofInt(
                p,
                "age",
                1, 10
        );
        animator.setDuration(3000);
        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                Object value = animation.getAnimatedValue();
                Log.i(TAG, "onAnimationUpdate: " + value);
            }
        });

        animator.start();
    }

    private void rotationAnimator() {
        //                imgShow.setRotation();

//                ObjectAnimator animator = ObjectAnimator.ofFloat(
//                        imgShow,
//                        "rotation",
//                        0,
//                        180
//                );
//                ObjectAnimator animatorX = ObjectAnimator.ofFloat(
//                        imgShow,
//                        "rotationX",
//                        0,
//                        180
//                );
//
//                animatorX.setDuration(3000);
//                animatorX.start();

        ObjectAnimator animatorY = ObjectAnimator.ofFloat(
                imgShow,
                "rotationY",
                0,
                180
        );

        animatorY.setDuration(3000);
        animatorY.start();
    }

    private void scaleAnimator() {
        //                imgShow.setScaleX();
//                imgShow.setScaleY();
        ObjectAnimator animatorX = ObjectAnimator.ofFloat(
                imgShow,
                "scaleX",
                1,
                3
        );

        ObjectAnimator animatorY = ObjectAnimator.ofFloat(
                imgShow,
                "scaleY",
                1,
                3
        );
        animatorX.setDuration(3000);
        animatorY.setDuration(3000);
        animatorX.start();
        animatorY.start();
    }

    private void alphaAnimator() {
        //               imgShow.setAlpha();
        // 透明度的变化,0是完全透明,1是完全不透明
        ObjectAnimator animator = ObjectAnimator.ofFloat(imgShow,
                "alpha",
                0,
                1);
        animator.setDuration(3000);
        animator.start();
    }

    private void translateAnimator() {
        // 属性动画完成平移,真实的改变了控件的属性,发生真实的动画效果
        ObjectAnimator txAnimator = ObjectAnimator.ofFloat(
                imgShow,
                "translationX",
                0,
                500
        );

        ObjectAnimator tyAnimator = ObjectAnimator.ofFloat(
                imgShow,
                "translationY",
                0,
                500
        );

        txAnimator.setDuration(3000);
        tyAnimator.setDuration(3000);

        txAnimator.start();
        tyAnimator.start();

        // 补间动画完成平移效果,并没有对控件的属性发生变化,只是视觉上的动画效果
//                TranslateAnimation translateAnimation = new TranslateAnimation(0, 500, 0, 0);
//                translateAnimation.setDuration(3000);
//                imgShow.startAnimation(translateAnimation);
        // 补间动画只能作用的Vew上
//        Person p = new Person();
    }
}

 

 

 

 

 

 

 

 

 

RecyclerView上拉下拉功能

  // 允许上拉加载更多
        xrvRestaurant.setLoadingMoreEnabled(true);
        RecyclerView.LayoutManager manager = new LinearLayoutManager(this);
        xrvRestaurant.setLayoutManager(manager);

        xrvRestaurant.setLoadingListener(new XRecyclerView.LoadingListener() {
            @Override
            public void onRefresh() {
                isLoadMore = false;
                presenter.getRestaurant(isLoadMore);
            }

            @Override
            public void onLoadMore() {
                isLoadMore = true;
                presenter.getRestaurant(isLoadMore);
            }
        });

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值