android 给view添加进出动画
需求:
给view添加进出动画,从屏幕左侧进入,再从左侧退出
实现:
要在Android应用中为一个View
添加从屏幕左边进入和退出的动画,你可以使用ViewPropertyAnimator
或ValueAnimator
等动画机制来实现。以下是一个使用ViewPropertyAnimator
的简单示例,展示如何创建一个从屏幕左边进入和退出的动画效果:
首先,在XML布局文件中定义你的View
,以便在布局中使用。
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><Viewandroid:id="@+id/animatedView"android:layout_width="100dp"android:layout_height="100dp"android:background="#FF5733" />
</LinearLayout>
在你的Activity或Fragment中,获取对应的View
,并创建进入和退出动画效果。
import android.animation.Animator;
import android.os.Bundle;
import android.view.View;
import android.view.ViewPropertyAnimator;
import android.view.animation.AccelerateDecelerateInterpolator;
import androidx.appcompat.app.AppCompatActivity;public class AnimationActivity extends AppCompatActivity {private View animatedView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_animation);animatedView = findViewById(R.id.animatedView);// 进入动画animateIn();}private void animateIn() {// 将View移出屏幕左侧animatedView.setTranslationX(-animatedView.getWidth());// 创建动画效果,移动View到初始位置animatedView.animate().translationX(0).setDuration(500) // 设置动画时长,单位为毫秒.setInterpolator(new AccelerateDecelerateInterpolator()).setListener(new Animator.AnimatorListener() {@Overridepublic void onAnimationStart(Animator animation) {// 动画开始时的操作}@Overridepublic void onAnimationEnd(Animator animation) {// 动画结束时的操作,可以在这里显示ViewanimatedView.setVisibility(View.VISIBLE);// 启动退出动画animateOut();}@Overridepublic void onAnimationCancel(Animator animation) {}@Overridepublic void onAnimationRepeat(Animator animation) {}});}private void animateOut() {// 创建退出动画,将View移出屏幕左侧animatedView.animate().translationX(-animatedView.getWidth()).setDuration(500).setInterpolator(new AccelerateDecelerateInterpolator()).setListener(new Animator.AnimatorListener() {@Overridepublic void onAnimationStart(Animator animation) {}@Overridepublic void onAnimationEnd(Animator animation) {// 动画结束后,可以在这里隐藏ViewanimatedView.setVisibility(View.GONE);}@Overridepublic void onAnimationCancel(Animator animation) {}@Overridepublic void onAnimationRepeat(Animator animation) {}});}
}
这个示例代码创建了一个简单的进入和退出动画效果,通过设置View的translationX
属性实现左侧移入和移出的动画效果,并通过setListener
方法监听动画的开始和结束,以在适当的时候显示或隐藏View。你可以根据需要调整动画的时长和插值器,以获得所需的效果。