Animator记录一次属性动画实现的逐渐出现和逐渐消失的动画

应用场景,View出场逐渐由小到大显示,View退出逐渐由大到小的效果:

代码:

Activity部分:

package com.lenovo.dh.zuidemo.ui.activity;
import android.animation.ObjectAnimator;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.lenovo.dh.zuidemo.R;

public class AnimatorActivity extends AppCompatActivity {
    private Button btAnimator,btAnimatorStop;
    private ImageView img;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.zui_animator);
        btAnimator = (Button)findViewById(R.id.btAnimator);
        btAnimatorStop = (Button)findViewById(R.id.btAnimatorStop);
        img = (ImageView)findViewById(R.id.img);
        btAnimator.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //逐渐消失动画
                img.setImageResource(R.mipmap.ic_launcher);
                ObjectAnimator animator = ObjectAnimator.ofInt(new WrapView(img),"width",10);
                animator.setDuration(10000);
                //animator.setRepeatCount(1); //动画重复的次数
                animator.start();
            }
        });


        btAnimatorStop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //逐渐出现动画
                img.setImageResource(R.mipmap.ic_launcher);
                Animation animation = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.enlarge);
                animation.setFillAfter(true);
                img.startAnimation(animation);
            }
        });
    }



    class WrapView{
        private View view;
        private int width;
        private int height;
        public WrapView(View view){
            this.view = view;
        }

        public int getWidth(){
            return view.getLayoutParams().width;
        }

        public void setWidth(int width){
            this.width = width;
            view.getLayoutParams().width = width;
            view.requestLayout();
        }

        public int getHeight(){
            return view.getLayoutParams().height;
        }

        public void setHeight(){
            this.height = height;
            view.getLayoutParams().height = height;
            view.requestLayout();
        }
    }
}

layout部分:

zui_animator.xml



    

 

res/anim部分:

enlarge.xml



   

   

(由于受限,无法上传效果视频)

 

你可能感兴趣的:(Android属性动画,Animator,Android缩放动画效果,Android由小变大的动画,Android由大变小的动画)