【问题标题】:How to transform the floating action buttons to full screen and open new activity in android studio and vice versa?如何将浮动操作按钮转换为全屏并在 android studio 中打开新活动,反之亦然?
【发布时间】:2021-10-10 06:59:31
【问题描述】:

我想在两个活动(活动 A活动 B)之间进行转换。活动 A 在右下角包含一个浮动操作按钮 (FAB)。 当点击 FAB 时,FAB 应该会变成一个新的表面,跨越整个屏幕,整个屏幕就是 Activity B。 当在活动 B 中按下后退按钮时,整个屏幕表面应收缩回 FAB,即现在的活动 A。 我该怎么做?

【问题讨论】:

  • 你的意思是你想让它动画成全屏?
  • 是的。感谢@Dev4Life 的时间,它完全适合,如果在过渡时包含一些动画会很好。

标签: android-studio android-animation floating-action-button


【解决方案1】:

是的。实际上,您可以使用 android 中的共享元素转换来做到这一点。

它易于使用。只需按照以下步骤操作:

  1. 在您在活动中使用的样式 XML 中启用窗口内容转换。

    <style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
          <!-- Customize your theme here. -->
          <item name="colorPrimary">@color/colorPrimary</item>
          <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
          <item name="colorAccent">@color/colorAccent</item>
    
          <!-- Define the attribute here. -->
          <item name="android:windowContentTransitions">true</item>
    </style>
    
  2. 在两个视图中设置通用转换名称。例如,您想将 FAB 设置为 Activity B 的全屏视图。因此,您必须将转换名称应用于您的 FAB 和 Activity B 的父视图。

    <LinearLayout ...>
    
    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="end|bottom"
        android:layout_margin="16dp" 
        android:transitionName="transition_fab"/>
    
        ...
    </LinearLayout>
    

现在在 Activity B 的 Activity xml 中。

<RelativeLayout 
    android:id="@+id/root_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:transitionName="transition_fab"/>

<TextView
    ... />

</RelativeLayout>
  1. 现在,使用 Element Transition 打开 Activity,在 Activity A 中创建 ActivityOptions 并将通用对象名称放入其中,如下所示。

    FloatingActionButton fab = findViewById(R.id.fab);
    
    Intent intent = new Intent(ActivityA.this, ActivityB.class);
    ActivityOptions options = ActivityOptions
         .makeSceneTransitionAnimation(this, fab, "transition_fab");
    startActivity(intent, options.toBundle());
    

就是这样!您现在可以在 Activity B 中看到您的 FAB 从 Activity A 动画到全屏。

您可以在此处找到有关共享元素转换的更多详细信息 - Android Shared element transitions

【讨论】:

    猜你喜欢
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多