Animator记录一次属性动画实现的逐渐出现和逐渐消失的动画
16lz
2021-12-04
应用场景,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
<?xml version="1.0" encoding="utf-8"?>
res/anim部分:
enlarge.xml
<?xml version="1.0" encoding="utf-8"?>
(由于受限,无法上传效果视频)
更多相关文章
- Android的滑动手势处理
- android的自定义弹出窗
- Android(安卓)动画的重复播放
- android之interpolator的用法详解
- Shake Android(安卓)ui elements
- android之Uri的使用简介\Uri与path相互转换
- Android动画设置interpolator插值器
- Android中帧动画
- Android(安卓)收缩展开动画