当前位置: 首页 > 知识库问答 >
问题:

Android-在应用程序中显示/隐藏工具栏,用户可以通过向上滑动和向下滑动动画进行触摸

钱建本
2023-03-14

当用户使用CoordinatorLayout滚动列表时,我实现了显示/隐藏工具栏。现在,我正在使用android应用程序中的显示/隐藏工具栏,用户可以触摸屏幕上的任意位置。我已经尝试过这个代码,它运行良好:

        if (toolbar.getVisibility() == View.VISIBLE) {
            toolbar.setVisibility(View.GONE);
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        } else {
            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
            toolbar.setVisibility(View.VISIBLE);
        }

但唯一的问题是工具栏在隐藏或显示时不会出现动画。我希望工具栏在隐藏和显示时向上滑动和向下滑动。

共有3个答案

宋宏儒
2023-03-14
if (toolbar.getVisibility() == View.VISIBLE) {
    appbar.animate().translationY(-112).setDuration(600L)
            .withEndAction(new Runnable() {
                @Override
                public void run() {
                    toolbar.setVisibility(View.GONE);
                }
            }).start();
} else {
    toolbar.setVisibility(View.VISIBLE);
    appbar.animate().translationY(0).setDuration(600L).start();
} 
洪楷
2023-03-14

您可以使用Motion Layout Preview:https://giphy.com/gifs/jpn6QpmT3dBtf3XYIS

依赖性implementation'androidx。constraintlayout:constraintlayout:2.0.0-beta6'

在布局的“设计”页面上,找到组件树,右键单击根布局,然后会看到选项“转换为MotionLayout”。建议这样做。因为它会自动生成包含MotionScene的XMLfolder。如果你不想这样做,你可以手动创建一个名为xml的文件夹,并将活动放置在主场景中。(其中包含xml)

主要活动。xml

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout
        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"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/root"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">
    
        <androidx.constraintlayout.motion.widget.MotionLayout
            android:id="@+id/motion_base"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layoutDescription="@xml/activity_main_scene"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">
    
            <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="?attr/colorPrimary"
                android:minHeight="?attr/actionBarSize"
                android:theme="?attr/actionBarTheme"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />
    
        </androidx.constraintlayout.motion.widget.MotionLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>

活动现场。xml(在xml文件夹内,也在res文件夹内)

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

    <Transition
        motion:duration="1000"
        motion:constraintSetEnd="@+id/end"
        motion:constraintSetStart="@id/start">
        <OnClick
            motion:clickAction="transitionToEnd"
            motion:targetId="@+id/motion_base"/>
    </Transition>

    <ConstraintSet android:id="@+id/start" />

    <ConstraintSet android:id="@+id/end">

        <Constraint
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:visibility="invisible"/>

    </ConstraintSet>
</MotionScene>
邹丰羽
2023-03-14

执行单击操作时,请使用以下代码:

protected void toggleToolbarView() {
    isShown = !isShown;

    Transition transition = new Slide(Gravity.TOP);
    transition.setDuration(200);
    transition.addTarget(toolbar);

    TransitionManager.beginDelayedTransition(toolbar, transition);

    toolbar.setVisibility(isShownHeaderFooter ? View.VISIBLE : View.GONE);
}
 类似资料:
  • 仍然像这样显示和隐藏视图: 但如果我必须使用向上滑动和向下滑动动画来显示和隐藏,该怎么办

  • 我看过一些样品,但没有一个适合我的需要。 我已经为动画创建了两个xml文件,但我不知道在更改的可见性时如何启动它们。

  • 我正在开发一个Android全屏活动,我希望能够显示和隐藏操作栏,就像我做的导航菜单一样。 目前我只设置了setSystemUiVisibility和

  • 当我做快速挺举时,我有一个CollapsingToolbarLayout的问题。隐藏appBar也会发生同样的事情 我需要工具栏隐藏在滚动和折叠工具栏折叠。当滚动不是很快时,它工作得很好。 但是当它很快的时候——似乎appBar在那之后就崩溃并扩展了。但它没有扩展回来。 请看视频。 折叠工具栏布局 应用程序栏 似乎这个答案是我需要的,但它不起作用。 我的折叠工具栏布局的 xml :

  • 问题内容: 我试图通过使用CSS过渡来更改悬停元素的背景颜色。我想通过使其从底部向上滚动来做到这一点。我可以使用此功能淡化背景,但我希望它向上滑动: 另一个想法是,将背景应用到一个单独的元素上会更好吗? 问题答案: 为了 向上滑动背景色, 您需要使用背景图片或某种渐变,同时逐步调整:

  • 问题内容: 我所看到的和jQuery的。左右滑动的功能/方式如何? 问题答案: 您可以使用jQueryUI中的其他效果来执行此操作: 快速示例: