我有一个LinearLayout,我想显示或隐藏与Animation,推动布局向上或向下,每当我改变它的可见性.

我看过一些样品,但没有一个适合我的需要.

我已经为动画创建了两个XML文件,但是当我更改LinearLayout的可见性时,我不知道如何启动它们.

推荐答案

使用Android 3.0(Honeycomb)中引入的新动画API,创建此类动画非常简单.

View向下滑动一段距离:

view.animate().translationY(distance);

您可以稍后将View滑回其原始位置,如下所示:

view.animate().translationY(0);

您还可以轻松组合多个动画.下面的动画将把View向下滑动其高度,并同时将其淡入:

// Prepare the View for the animation
view.setVisibility(View.VISIBLE);
view.setAlpha(0.0f);

// Start the animation
view.animate()
    .translationY(view.getHeight())
    .alpha(1.0f)
    .setListener(null);

然后你可以淡出View并将其滑回原来的位置.我们还设置了AnimatorListener,以便在动画完成后将View的可见性设置回GONE:

view.animate()
    .translationY(0)
    .alpha(0.0f)
    .setListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            super.onAnimationEnd(animation);
            view.setVisibility(View.GONE);
        }
    });

Android相关问答推荐

我遇到了一个HashMaps对象没有存储在Firebase数据库中的问题.HashMap的一个对象put方法未被存储

将Any强制转换为Integer将从API返回NullPointerException

MAP函数返回单位列表而不是字符列表

尽管我们不再使用GCM SDK,但应用程序已被标记为使用GCM SDK

属性可选的涟漪效果ItemBackEarth Borderless不适用于Android 13和更高版本

在Android 14/SDK 34中使用RegisterReceiver的正确方式是什么?

如果我的圆形图像的顶部居中于卡片内部,我如何在其下方画一条弧线?

在 Bash 脚本中使用 XMLLINT 解析 XML 单元测试文件,并将其放入数组中以表示成功和失败

Android Drawable文件夹中的图像显示模糊

如何在Android Studio中禁用文件中的Github用户名引用?

我如何比较多个时间范围并在 Android Compose 中并排显示它们

在 Kotlin 中设置 startActivity() 时类型不匹配

PayUCheckoutPro Android SDK 实现问题

我们也可以或应该对主要小部件使用预览 compose 功能吗?

获取模板向导配方类 Intellij 中的应用程序包名称

重命名列失败的房间自动迁移(NOT NULL 约束失败,生成错误的迁移类)

使用 Jetpack Compose 时,如何以简单的方式在 Color.kt 中定义 colored颜色 ?

对话框中的内容不可见

在 Kotlin 客户端应用程序中发送 FCM 推送通知 - Firebase 云消息传递

这是 let 函数的正确用法吗?