gpt4 book ai didi

Android共享 View 过渡结合淡入淡出过渡

转载 作者:行者123 更新时间:2023-11-29 17:32:28 24 4
gpt4 key购买 nike

我有一个传递共享元素动画的 Activity 。这是一个基本的 ImageView 转换,工作得很好。

现在,对于 Activity 中的其他元素,我想要一个淡入淡出的动画。现在,这适用于所有元素,但与 ImageView(共享 View )在同一 View 组中的 View 。

下面是我的布局。 ImageView 在 CollapsingToolbarLayout 和 AppBarLayout 中,我在 oncreate 中像这样设置淡入淡出过渡:

    getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
super.onCreate(savedInstanceState);

Fade fade = new Fade(Fade.IN);
fade.setDuration(4000);

getWindow().setEnterTransition(fade);
setContentView(R.layout.article_details);

布局:

<?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true">

<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/article_details_collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="200dp"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginEnd="10dp"
app:expandedTitleMarginStart="10dp"
app:expandedTitleTextAppearance="@style/title_text_appearence"
app:layout_scrollFlags="scroll|exitUntilCollapsed">

<ImageView
android:id="@+id/article_details_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
android:transitionName="imageTrans"
app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier="0.6"
/>


<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:theme="@style/AppTheme.ToolBar"
android:background="#0000"
app:layout_collapseMode="pin"
/>

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

<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:transitionGroup="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">

<WebView
android:id="@+id/article_details_webview"
android:layout_margin="20dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</android.support.v4.widget.NestedScrollView>

<android.support.design.widget.FloatingActionButton
app:fabSize="mini"
app:layout_anchor="@id/appbar"
app:layout_anchorGravity="bottom|right|end"
android:src="@drawable/star_white"
android:layout_marginRight="16dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

所以,总结一下。嵌套的滚动布局和它的 webview 按照设置淡入,但 AppBarLayout 中的其他 View 不是。 AppBarLayout 中的 ImageView 的行为与共享元素的行为相同(从传递的 Activity 移动到位)。此外,只有一半的 FloatingActionButton 淡入,其余部分在 4 秒淡入淡出后弹出。

编辑:我实际上遇到了与这个人相同的问题:Content Transitions on Top of Shared Elements in android

最佳答案

我找到了这个“问题”的解决方案。问题是这是预期的行为。您可以通过调用来禁用重叠

getWindow().setSharedElementsUseOverlay(false);`

但这通常会产生 Artifact 。无论哪种方式,我最终都这样做了,并删除了我的 Activity 的背景,主题是透明的:

<style name="Theme.Transparent" parent="@style/AppTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>

由于我的目标是淡入 CollapsingToolbarLayout 中的文本,我无法实现此目的,因为 ImageView 是该布局的子项。我最终做的是添加另一个 ImageView,其图像与 Activity 之间的动画相同,并在 Activity 共享元素转换完成后将其与 CollapsingToolbarLayout 一起淡入。由于共享元素图像已经就位,因此新的 ImageView 在 UI 中没有任何区别。该解决方案当然不是最优的,但针对我的问题的唯一解决方案 - 考虑 API 的行为方式。退出 Activity 时,我只是隐藏替换 ImageView,用户会看到共享元素图像转换到父 Activity 中的位置。

关于Android共享 View 过渡结合淡入淡出过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32256168/

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