android 给view添加进出动画

需求:

给view添加进出动画,从屏幕左侧进入,再从左侧退出

实现:

要在Android应用中为一个View添加从屏幕左边进入和退出的动画,你可以使用ViewPropertyAnimatorValueAnimator等动画机制来实现。以下是一个使用ViewPropertyAnimator的简单示例,展示如何创建一个从屏幕左边进入和退出的动画效果:

首先,在XML布局文件中定义你的View,以便在布局中使用。

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View
        android: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;

    @Override
    protected 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() {
                @Override
                public void onAnimationStart(Animator animation) {
                    // 动画开始时的操作
                }

                @Override
                public void onAnimationEnd(Animator animation) {
                    // 动画结束时的操作,可以在这里显示View
                    animatedView.setVisibility(View.VISIBLE);

                    // 启动退出动画
                    animateOut();
                }

                @Override
                public void onAnimationCancel(Animator animation) {
                }

                @Override
                public void onAnimationRepeat(Animator animation) {
                }
            });
    }

    private void animateOut() {
        // 创建退出动画,将View移出屏幕左侧
        animatedView.animate()
            .translationX(-animatedView.getWidth())
            .setDuration(500)
            .setInterpolator(new AccelerateDecelerateInterpolator())
            .setListener(new Animator.AnimatorListener() {
                @Override
                public void onAnimationStart(Animator animation) {
                }

                @Override
                public void onAnimationEnd(Animator animation) {
                    // 动画结束后,可以在这里隐藏View
                    animatedView.setVisibility(View.GONE);
                }

                @Override
                public void onAnimationCancel(Animator animation) {
                }

                @Override
                public void onAnimationRepeat(Animator animation) {
                }
            });
    }
}

这个示例代码创建了一个简单的进入和退出动画效果,通过设置View的translationX属性实现左侧移入和移出的动画效果,并通过setListener方法监听动画的开始和结束,以在适当的时候显示或隐藏View。你可以根据需要调整动画的时长和插值器,以获得所需的效果。

猜你喜欢

转载自blog.csdn.net/Steve_XiaoHai/article/details/134135210
今日推荐