Android Studio 中相对布局的动画

Posted

技术标签:

【中文标题】Android Studio 中相对布局的动画【英文标题】:Animation for relative layout in Android Studio 【发布时间】:2021-09-24 13:57:52 【问题描述】:

我正在尝试在我的一个 activity_main.xml 布局中为相对布局设置动画。我希望相对布局在可见性设置为可见时向上滑动,并在可见性设置为不可见/不可见时向下滑动。 但我只能让动画向上滑动和向下滑动一次。当我再次单击按钮以使布局再次向上滑动(并设置为可见)时,布局只是弹出而没有动画;以及当我再次单击按钮使其向下滑动(并设置为消失/不可见)时,布局也只是消失而没有动画。 我将衷心感谢您的帮助。非常感谢!

这是我尝试过的:

Private RelativeLayout relLayoutInfo = findViewById(R.id.rel_Layout_Info);
Private Button btnSlideUp = findViewById(R.id.btn_Up);
Private Button brnSlideDown = findViewById(R.id.btn_Down);
private Animation extraInfoAnimationEnter = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.details_info_animation_enter);
Private extraInfoAnimationExit = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.details_info_animation_exit);

btnSlideUp.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View v) 
                relLayoutInfo.setAnimation(extraInfoAnimationEnter);
                relLayoutInfo.setVisibility(View.VISIBLE);
            
        );
btnSlideDown.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View v) 
                relLayoutInfo.setAnimation(extraInfoAnimationExit);
                relLayoutInfo.setVisibility(View.GONE);
            
        );

这是 extraInfoAnimationEnter 的动画文件:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:fromYDelta="100%"
        android:toYDelta="0"
        android:duration="500">

    </translate>
</set>

这是 extraInfoAnimationExit 的动画文件:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:fromYDelta="0"
        android:toYDelta="100%"
        android:duration="500">

    </translate>

</set>

【问题讨论】:

使用transition api 实现可见性变化动画。检查此答案以获取更多详细信息***.com/a/56144349/1372866 【参考方案1】:

这可能不是确切的解决方案,而只是一个建议,还有一个MotionLayout 也可用here

还有AndroidDevs官方频道的播放列表here

MotionLayout 非常适合动画,但如果这不是您想要的,我们可以尝试在您的 RelativeLayout 中实现它:)

【讨论】:

MotionLayout 仅适用于约束布局 2.0.0 及更高版本,在这种情况下这是一个可行的解决方案。

以上是关于Android Studio 中相对布局的动画的主要内容,如果未能解决你的问题,请参考以下文章

Mac 下Android studio 怎么删除配置文件重新安装啊

如何在android Studio的顶部放置一个imageview?

Android studio——LinearLayout(线性布局)

Android之相对布局

android studio布局

android studio学习