2017-02-24 8 views
0

アクティビティAからアクティビティBに切り替えるときに、共有要素の切り替えを実行したいのですが、共有のimageViews の種類が異なる場合、トランジションアニメーションがスムーズに動作しないという問題があります。私は移行の最初の段階で「バウンス」に気づいています(アニメーション化されていないscaleViewの変更はありません)。 centerCrop:Androidの共有要素のトランジションが異なるimgスケールのタイプでは動作しない

アクティビティAがscaleTypeとImageViewのが含まれています:活動A.に、アクティビティBからバック

詳細を来たときと同じ "バウンス" 私は気づいています。 アクティビティBには、scaleType:fitXYのimageViewが含まれています。

両方のImageViewには、もちろんandroid:transitionName="sharedView"があります。

XMLに設定された私の推移は次のようになります。この設定に関するドキュメントで

<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"> 
    <changeBounds/> 
    <changeImageTransform/> 
</transitionSet> 

が書かれている:

ChangeBoundsとの組み合わせで、ChangeImageTransformは、サイズを変更 ImageViewsを可能形状、またはImageView.ScaleType のコンテンツをスムーズにアニメーション化する。

なぜ私の移行が円滑に機能しないのですか?または、changeBoundschangeImageTransformの場合、共有要素の遷移中にscaleTypeの変更をアニメーション化する方法が機能していないようですか?

共有ビューの尺度タイプ(centerCropやcenterCropなど)を同じにすると、移行が円滑に機能し、すべてが正常です。

+0

間のスムーズscaleTypeを変更し、その仕事をしますか? –

+0

まだ答え/ご提案をお待ちしております。 – user2999943

+0

もう少しコードを共有できますか? PicassoやGlideのような画像読み込みライブラリを使用していますか?私は最近、これに多くの時間を費やしましたが、最終的にはそれが妥当なところにあると思います。それは決して完璧ではありません。 –

答えて

0

同じ問題がありました。 ImageViewの両方に同じpaddingプロパティを設定して解決しました。私はなぜそれが動作するのか分からないが、誰かを助けることができることを願っています。

0

私の場合はこの問題を解決しました。

  • あなたの共有要素は、ソースとターゲットの活性の両方のためのImageViewあることを確認します(任意のコンテナを使用しないでください):ここでは、チェックする必要があるものです。
  • ImageView(そのコンテナではない)のtransitionNameを設定します。

私はこれを更新した後、あなたは、このための修正を見つけた、changeImageTransformは2 ImageView