gpt4 book ai didi

具有 fragment 的 Activity 与具有 fragment 的另一个 Activity 之间的 Android 共享元素转换

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:24 25 4
gpt4 key购买 nike

我有一个包含 FragmentA 的 ActivityA,我想将共享元素转换为包含 FragmentB 的 ActivityB。

在 Activity 中,共享元素将是工具栏。在 fragment 中,它将是一个 TextView 。有没有办法做到这一点?

如果不是,我如何在 Activity 中的两个 fragment 之间进行共享元素转换?

在此先感谢您的帮助。我被困了一段时间。

好的,我将提供一些代码来澄清。

这里有 MainActivity:

<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">

<!-- This is shared with DetailActivity -->
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"
android:transitionName="sharedToolbar"/>

</android.support.design.widget.AppBarLayout>

<!-- This contains MainFragment -->
<FrameLayout
android:id="@+id/activity_main_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

</android.support.design.widget.CoordinatorLayout>

此 Activity 包含名为 MainFragment 的 fragment :

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


<!-- This element is shared with DetailFragment -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Fragment main"
android:transitionName="sharedFragment"/>

<!-- When this is clicked show next screen -->
<Button
android:id="@+id/fragment_main_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Go to detail screen"
android:layout_gravity="bottom|center"/>

</FrameLayout>

现在我要做的是,当我单击 MainFragment 中的按钮时,我想对这个名为 DetailActivity 的 Activity 执行 fragment 事务:

<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">

<!-- This is shared with MainActivity -->
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"
android:transitionName="sharedToolbar"/>

</android.support.design.widget.AppBarLayout>

<!-- This contains DetailFragment -->
<FrameLayout
android:id="@+id/activity_detail_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

</android.support.design.widget.CoordinatorLayout>

此 Activity 包含名为 DetailFragment 的 fragment :

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


<!-- This element is shared with MainFragment -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Fragment detail"
android:transitionName="sharedFragment"/>

</FrameLayout>

正如您在代码中看到的那样,两个 Activity 共享工具栏并具有相同的转换名称。它们包含的 fragment 都有一个 TextView ,我也想在过渡中对其进行动画处理。这些 TextView 也有相同的过渡名称。有没有办法做到这一点?我已经尝试过,到目前为止我只能在两个 Activity 之间为工具栏设置动画。如何让 fragment 同时执行共享元素转换?

如果无法做到这一点,那么当我从 MainActivity 导航到 DetailActivity 时, fragment 的 TextView 显示为过渡,而不是工具栏(如果我不能在以下位置为 Activity 和 fragment 事务设置动画)同时)。

最佳答案

关于具有 fragment 的 Activity 与具有 fragment 的另一个 Activity 之间的 Android 共享元素转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37294182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com