アップデート:
https://github.com/ulyssesp/SharedElementTransitionsに再現があります。
これは、遷移中の ImageView を保持する DialogFragment がある場合にのみ発生し、たまにしか発生しません。その場合、画像が DialogFragment の下部から外れていてもまだ表示されている場合は、画像の一部が正しくレンダリングされていることがわかります。DialogFragment が ImageView の後 (したがって上) にレンダリングされる競合状態のように感じます。
ピカソとキャッシュを使用して画像をロードするImageView
ためScrollView
の共有要素トランジションを使用しようとしています。DialogFragment
をScrollView
スクロールすると、トランジションに入るときにちらつきが発生することがあります。
https://drive.google.com/file/d/0B9K_Hjcu9iFOV3lYNVB1UlpsNTQ/view?usp=sharing
上のビデオ ファイルの最後のクリックは、私が話していることを最もよく示しています。ちらつきは毎回発生するとは限らないことに注意してください。ちらつきが発生するには、スクロール ビューをスクロールする必要があります。実際のプロジェクトではもっと多くのことが起こっていますが、これはバグを再現するための最小限のサンプル プロジェクトです。
関連コード:
スタイル.xml:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowSharedElementReenterTransition">@null</item>
<item name="android:windowSharedElementExitTransition">@null</item>
</style>
ImageFragment::onCreateView:
...
mImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ActivityOptions activityOptions =
ActivityOptions.makeSceneTransitionAnimation(getActivity(), v, "image");
Intent i = new Intent(getActivity(), ImageDisplayActivity.class);
i.putExtra("url", "http://i.imgur.com/DvpvklR.png");
getActivity().startActivity(i, activityOptions.toBundle());
}
});
new Picasso.Builder(getActivity())
.memoryCache(MainActivity.sCache)
.build()
.load("http://i.imgur.com/DvpvklR.png")
.into(mImageView);
...
ImageDisplayActivity:
...
mImageView.setImageBitmap(MainActivity.sCache.get(getIntent().getStringExtra("url") + "\n"));
洞察がある場合、またはさらに情報が必要な場合は、お知らせください。