1.视图动画:补间动画、逐帧动画
补间动画:
平移动画(Translate)
缩放动画(scale)
旋转动画(rotate)
透明度动画(alpha)
逐帧动画:
动作拆分成帧的形式
2.属性动画
出现的版本:Android 3.0(API 11)后才提供的一种全新动画模式
在一定时间间隔内,通过不断改变值并赋值给对象的属性从而实现该对象在该属性上的动画效果
以上内容来自博主:
https://blog.csdn.net/carson_ho/category_9268277.html
下面介绍一种淡入淡出的效果,点击btn_before按钮实现淡入、点击btn_after实现淡出:
AnimateActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.animation.Animator;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.example.demo20220303.R;
public class AnimateActivity extends AppCompatActivity implements View.OnClickListener {
Button btn_before,btn_after;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_animate);
}
@Override
protected void onResume() {
super.onResume();
btn_before = findViewById(R.id.btn_before);
btn_after = findViewById(R.id.btn_after);
btn_before.setOnClickListener(this);
btn_after.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_before: {
btn_before.setAlpha(0f);
btn_before.setVisibility(View.VISIBLE);
btn_before.animate()
.alpha(1f)
.setDuration(3000)
.setListener(null);
break;
}case R.id.btn_after: {
btn_after.animate()
.alpha(0f)
.setDuration(3000)
.setListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
btn_after.setVisibility(View.INVISIBLE);
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
break;
}
default:
break;
}
}
}
activity_animate.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"