मैं अपनी कस्टम 3 डी गैलरी प्रदर्शित करने के लिए fancyCoverFlow और universalImageLoader का उपयोग कर रहा हूं: डी नीचे चित्र की तरह कुछ। मेरी समस्या यह है कि जब तक मैं गैलरी चित्रों के बीच स्वाइप नहीं करता तब तक चित्रों को तब तक नहीं दिखाता जब तक कि मैं गैलरी चित्रों के बीच स्वाइप नहीं करता और अगली बार जब यह छवि दिखा रहा हो तब दिखाई देता है लेकिन यूनिवर्सल इमेजलोडर के नमूने में डाउनलोड की गई छवि डाउनलोड करने के ठीक बाद दिखाती है।कवरफ्लो और यूनिवर्सल छवि लोडर का मिश्रण
public View getView(int position, View view, ViewGroup parent) {
RoundedImageView photo = (RoundedImageView) view;
if (photo == null) {
photo = (RoundedImageView) inflater.inflate(R.layout.row_gallery_latest_issue_item, parent, false);
}
try {
System.out.println("Test is good");
ImageLoaderHelper.configureCacheableImage(mContext, photo, latestBook.get(position).getImageUrl(),
R.drawable.avatar_issue, null);
} catch (NullPointerException e) {
photo.setImageResource(R.drawable.avatar_issue);
e.printStackTrace();
}
return createReflectedImages(photo);
}
यह UniversalImageLoader नमूना के रूप में बिल्कुल वैसा ही है उम्मीद मैं एक TryCatche और CreateReflectedImage
(जो हमारे imageView चिंतनशील बनाने), एक बात और मेरी ImageLoaderHelper है:
यहाँ एडाप्टर के लिए मेरे getView कोड है है:
public class ImageLoaderHelper {
public static void configureCacheableImage(Context context, ImageView imageView
, String imageUrl, Integer defaultImageResourceId
, ImageLoadingListener imageLoadingListener) {
ImageLoader imageLoader = ImageLoader.getInstance();
DisplayImageOptions.Builder builder = new DisplayImageOptions.Builder();
builder.displayer(
new SimpleBitmapDisplayer())
.cacheOnDisc(true)
.cacheInMemory(true)
.resetViewBeforeLoading(true)
.imageScaleType(ImageScaleType.IN_SAMPLE_INT)
.bitmapConfig(Bitmap.Config.RGB_565);
if (defaultImageResourceId != null)
builder.showImageOnFail(defaultImageResourceId).showImageForEmptyUri(defaultImageResourceId).showStubImage(defaultImageResourceId);
if (!imageLoader.isInited())
imageLoader.init(ImageLoaderConfiguration.createDefault(context));
imageLoader.displayImage(imageUrl, imageView, builder.build(), imageLoadingListener);
}
}
अद्यतन:
एक दिन डिबगिंग के बाद मैं एक सुराग मिला समस्या मेरे एडाप्टर के साथ है लेकिन मैं इसे कैसे हल करने के लिए पता नहीं है!
public ImageView createReflectedImages(RoundedImageView image) {
RoundedDrawable drawable = (RoundedDrawable) image.getDrawable();
Bitmap originalImage = drawable.toBitmap();
int width = originalImage.getWidth();
int height = originalImage.getHeight();
Matrix matrix = new Matrix();
matrix.preScale(1, -1);
Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0,
height/2, width, height/2, matrix, false);
Bitmap bitmapWithReflection = Bitmap.createBitmap(width,
(height + height/2), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmapWithReflection);
canvas.drawBitmap(originalImage, 0, 0, null);
canvas.drawBitmap(reflectionImage, 0, height, null);
Paint paint = new Paint();
LinearGradient shader = new LinearGradient(0, height, 0, bitmapWithReflection.getHeight()
, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);
paint.setShader(shader);
paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()
, paint);
RoundedImageView imageView = new RoundedImageView(mContext);
imageView.setImageBitmap(bitmapWithReflection);
imageView.setLayoutParams(new ImageGallery3D.LayoutParams(GeneralHelper.dp(180), GeneralHelper.dp(240)));//width and height of Image
return imageView;
}
प्रदर्शन ImageOptions.Bilder विधि से बाहर बेहतर स्थानांतरित करें और इसे कहीं और शुरू करें, यह हर नई पंक्ति के निर्माण के लिए बनाया जा रहा है। आप छवि लोडिंग लिस्टनर को यह भी जांचने के लिए सेट कर सकते हैं कि छवि डाउनलोड हो गई है या नहीं। – razzledazzle
@razzledazzle आपके सुझाव के लिए धन्यवाद मैं DisplayImageOptions.builder को ठीक करता हूं, मेरी समस्या को हल नहीं करता क्योंकि जब मैं ऐप बंद करता हूं (गतिविधि को नष्ट करता हूं) और फिर गतिविधि गैलरी शुरू करता हूं कैश किए गए चित्रों को डाउनलोड नहीं किया गया था। – Amir