Lollipop でアクティビティ (またはフラグメント??) トランジションを行う方法を理解しようとしています。AppCompat v7 - v21 を使用しています。
これが私のシナリオです:
GridView(Fragment内)のアイテムをクリックすると、ここのリンクのように画像が遷移することを望みます。どうすれば達成できますか?そして、スタイルを使用してそれを行う方法はありますか? コードでそれを行う場合、フラグメントからアクティビティへの方法のサンプルを入手できますか?
[編集]
これは私が今まで達成したものです:
styles.xml: 値-v21
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- API 21 theme customizations can go here. -->
<item name="windowActionBar">false</item>
<item name="android:colorPrimary">@color/dark_grey</item>
<item name="android:colorPrimaryDark">@color/dark_grey</item>
<item name="android:colorAccent">@color/dark_grey</item>
<item name="android:colorControlNormal">@color/white</item>
<!-- enable window content transitions -->
<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>
</style>
</resources>
MainActivity の onItemClick():
Intent i = new Intent(this, DetailActivity.class);
i.putExtra("url", url);
i.putExtra("twoPane", false);
i.putExtra("title", title);
i.putExtra("imageurl", imageurl);
// startActivity(i);
ActivityOptionsCompat options = ActivityOptionsCompat
.makeSceneTransitionAnimation(this,
v.findViewById(R.id.item_imageview), imageurl);
ActivityCompat.startActivity(this, i, options.toBundle());
詳細アクティビティ:
imageview = (SquareImageView) findViewById(R.id.imageview_detail);
ViewCompat.setTransitionName(imageview, imageurl);
imageview.setImageUrl(imageurl, ImageCacheManager.getInstance()
.getImageLoader());
getWindow().getEnterTransition().addListener(new TransitionListener() {
@Override
public void onTransitionEnd(Transition transition) {
if (Const.DEBUGGING_INT)
Log.d(Const.DEBUG, "onTransitionEnd");
//fadeOutAndHideImage(imageview);
if (mDetailFragment == null)
mDetailFragment = new DetailFragment();
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.detail_fragment_container,
mDetailFragment).commit();
mDetailFragment.setParameters(bundle);
}
}
これにより移行が行われますが、期待したほど移行がスムーズではありません。まだ作業中です。
ロリポップ以前のデバイスでこれらのトランジションを取得できますか? 2.3.6 などの下位バージョンでコードを実行しようとすると、クラッシュして、NoSuchMethodDef getEnterTransition()
. これらのトランジションは Lollipop にのみ関連していますか?