मेरे पास सभी फोटो थंबनेल आइटम दिखाने के लिए एक रीसायकल दृश्य है। आइटम पर क्लिक करते समय, मैं इस आइटम में विस्तार से गतिविधि में छविदृश्य के लिए संक्रमण का उपयोग करता हूं। समस्या यह है कि छवि स्रोत UIL द्वारा इंटरनेट से प्राप्त किया गया है। और कुछ समय (हमेशा नहीं) छवियों सही आकार फिर से लोड नहीं इस तरह:शेयर छवि तत्व संक्रमण गलत आकार प्रदर्शित करें
// 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 शायद कि एक मुद्दा अलग पैमाने प्रकार के साथ की कोशिश कर रहा है कर रहे हैं। –
@ हिमानी अच्छी तरह से, मुझे इसका उपयोग करना होगा क्योंकि फोटो स्क्रीन फिट होना चाहिए और अनुपात रखना चाहिए। लेकिन क्या आपके पास स्केलटाइप त्रुटि के बारे में कोई सुराग है? यह ** कई मामलों पर काम करता है **, लेकिन कभी-कभी छवि की तरह दिखता है – R4j
तैयार नहीं है तो –