すべての写真のサムネイルアイテムを表示するリサイクルビューがあります。アイテムをクリックすると、このアイテムの画像ビューのトランジションをディテールアクティビティに使用します。問題は、画像ソースがインターネットからで取得されていることです。共有画像要素のトランジションが正しく表示されない
// on view holder item click
final Pair<View, String>[] pairs = TransitionHelper.createSafeTransitionParticipants(this, false,
new Pair<>(((ItemViewHolder) viewHolder).thumbnail, getString(R.string.TransitionName_Profile_Image)),
new Pair<>(((ItemViewHolder) viewHolder).tvName, getString(R.string.TransitionName_Profile_Name)));
ActivityOptionsCompat transitionActivityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation(this, pairs);
startActivityForResult(intent, requestCode, transitionActivityOptions.toBundle());
ディテール活動
// try to post pone transition until UIL load finish
ActivityCompat.postponeEnterTransition(this);
getSupportFragmentManager().beginTransaction().replace(R.id.layoutContent, new DetailFragment()).commit();
フラグメントの詳細
ImageLoader.getInstance().displayImage(url, imageViewDetail, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
finishAnimation();
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
finishAnimation();
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
finishAnimation();
}
});
private void finishAnimation(){
ActivityCompat.startPostponedEnterTransition(getActivity());
imageViewDetail.invalidate();
}
:そしていつか
(常にではない)画像のこのような適切なサイズをリロードしません
fragment_detail.xml
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ImageView
android:transitionName="@string/TransitionName.Profile.Image"
android:id="@+id/imageViewDetail"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="centerCrop"/>
</FrameLayout>
私もビューがロード画像の前にレイアウトされたが、まだ動作していない待つ:
imageViewDetail.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
// code load image from UIL
return false;
}
});
は、この問題を回避する方法はありますか?
で
を扱うことができますあなたはcenterCropは、多分それは、異なるスケールタイプを試す問題だ使用されています。 –
@Himaniよく、私は写真が画面に合っていて比率を維持しなければならないので使用しなければなりません。しかし、あなたはscaletypeのエラーについて何か手掛かりがありますか? **多くのケースで**動作しますが、画像が準備できていないように見えることがあります – R4j
次にscaletypeにFITXYを使用 –