gpt4 book ai didi

android - 在 Android 5.0 中转换 ImageView 时的奇怪问题

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

我遇到了一个关于 Android 5.0 中 Activity 之间的 ImageView 转换的奇怪问题/错误。

我正在尝试将缩略图从 Fragment A(在 Activity A 中)转换为 Fragment B 的标题图像(在 Activity B)。它在大多数情况下运行良好,但有时会出现轻微的困惑。

这是它出现问题时的样子的图片:

What a mess... :-)

当然,它应该填满整个区域。两个 ImageView 都设置为 ScaleType.CENTER_CROP,所以我无法想象这是问题所在。

奇怪的是,在 Activity B 中滚动时问题会立即自行解决(所有内容都包含在子类 ScrollView 中,该子类会更改 ImageView滚动时填充)。

启动 Activity B 的代码非常简单:

ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(
activity, thumbImageView, "cover"); // "cover" is the shared element name for both ImageViews
ActivityCompat.startActivity(activity, intent, options.toBundle());

这是可观察的 ScrollView 监听器的代码:

scrollview.setOnScrollChangedListener(new OnScrollChangedListener() {
@Override
public void onScrollChanged(ScrollView who, int l, int t, int oldl, int oldt) {
// Such parallax, much wow
headerImageView.setPadding(0, (int) (t / 1.5), 0, 0);
}
});

此外,这是我的主题风格的一部分:

<item name="android:windowContentTransitions">true</item>
<item name="android:windowAllowEnterTransitionOverlap">true</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>
<item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
<item name="android:windowSharedElementExitTransition">@android:transition/move</item>

有什么想法吗?

最佳答案

尝试将以下代码添加到您的 Fragment B 的 onCreateView() 方法中:

getActivity().postponeEnterTransition(); 
scrollView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
scrollView.getViewTreeObserver().removeOnPreDrawListener(this);
getActivity().startPostponedEnterTransition();
return true;
}
});

出现此代码时,问题是否仍然存在?这将确保过渡仅在 fragment 完成布局后开始。

您甚至可能需要在这之后调用 startPostponedEnterTransition()...例如,如果您在第二个 Activity 中加载高分辨率图像,请尝试调用 startPostponedEnterTransition 在图像加载后(即在 ImageView 而不是窗口的装饰 View 上设置 onPreDraw 监听器)。

关于android - 在 Android 5.0 中转换 ImageView 时的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26717515/

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