我遇到了实现平滑共享元素转换的问题。启动此动画时,似乎Android首先呈现DetailActivity
及其内容,然后启动共享元素转换。
我的DetailActivity包含一些简单的视图,例如TextView
和ImageView
,还包含AdView
,其中包含以下代码:
Bundle bundle = new Bundle();
bundle.putString("ausgabe", mAdViewEdition);
final PublisherAdRequest adRequest = new PublisherAdRequest.Builder()
.setManualImpressionsEnabled(true)
.addNetworkExtras(
new AdMobExtras(bundle)).build();
mAdView.setAdListener(new AdListener() {
@Override
public void onAdFailedToLoad(int errorCode) {
if (mLayout != null && mAdView != null) {
mAdView.setVisibility(View.GONE);
mLayout.setVisibility(View.GONE);
}
}
@Override
public void onAdLoaded() {
if (mAdView != null && mLayout != null) {
mAdView.setVisibility(View.VISIBLE);
mLayout.setVisibility(View.VISIBLE);
}
}
});
mAdView.loadAd(adRequest);
每次第一次启动共享元素转换时,loadAd
方法最多需要两秒钟才能完全加载广告。因此,共享元素转换也会延迟最多两秒,这会导致糟糕的用户体验。如果我不调用loadAd
方法,则动画效果很好。
有人知道如何解决这个问题吗?我已经尝试将loadAd
方法放在AsyncTask
中,但这不起作用,因为必须从UI线程调用该方法。