私のアプリケーションのメイン画面には、画像のグリッドビューが含まれています。ユーザ がイメージを選択すると、詳細アクティビティは、詳細アクティビティの CardViewにあるペアイメージに選択されたグリッドイメージをアニメートする共有要素 トランジションを使用して開始されます。CoordinatorLayoutおよびCollapsingToolbarLayoutと組み合わせても、共有要素の遷移が機能しない
CollapsingToolbarLayoutと 一緒CoordinatorLayoutを含むように私の詳細ビューのXMLレイアウトをアップグレードした後、共有要素の遷移について詳細活性(「入力」活性)で間違った場所に画像 ビューを移動させます。 フレームワークは、 CollapseingToobarLayout全体をオフセットして、 には、対象の画像ビューが含まれているCardViewの上にCollapsingToolBarLayoutがない場合に、画像 の概略位置にアニメーション表示されるようです。
問題がactivity_detail.xml 3 CardViewsのいずれかに(transitionName有する) ImageViewのを添加することによってクリスBanes' cheesesquare sample appで複製することができる。
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:transitionName="sharedImage" />
、次いでセットアップ共有要素転移 CheeseListFragment.javaでonBindViewHolderで次のように:
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.mBoundString = mValues.get(position);
holder.mTextView.setText(mValues.get(position));
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = v.getContext();
Intent intent = new Intent(context, CheeseDetailActivity.class);
intent.putExtra(CheeseDetailActivity.EXTRA_NAME, holder.mBoundString);
holder.mImageView.setTransitionName("sharedImage");
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(
getActivity(v.getContext()),
holder.mImageView,
"sharedImage");
ActivityCompat.StartActivity((MyActivity) context, intent, options.toBundle());
}
});
Glide.with(holder.mImageView.getContext())
.load(Cheeses.getRandomCheeseDrawable())
.fitCenter()
.into(holder.mImageView);
}
アプリケーションを実行し、チーズのリスト項目をクリックすると、あなたはどのようにます遷移アニメーションは、 宛先アクティビティビューで不適切な(大きすぎる)オフセットに画像を移動します。アニメーションが完了すると、画像は と表示され、正しい位置に「ワープ」します。
可能な回避策に関する考えは大歓迎です。
私はこの問題の修正を発見しました。これは私のレポにあります https://github.com/lawloretienne/SharedElementTransition – toobsco42