Tôi đang sử dụng fancyCoverFlow và universalImageLoader để hiển thị thư viện 3D tùy chỉnh của tôi: D giống như hình dưới đây. Vấn đề của tôi là nó không hiển thị hình ảnh khi được tải xuống trừ khi tôi vuốt giữa các hình ảnh trong Thư viện và hình ảnh đó ẩn khỏi màn hình và khi xuất hiện lần sau khi hiển thị hình ảnh Nhưng trong Mẫu của UniversalImageLoader, hình ảnh đã tải xuống hiển thị ngay sau khi tải xuống.Kết hợp CoverFlow và Universal Image Loader
Đây là mã getView của tôi cho bộ kết nối:
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);
}
nó là chính xác giống như UniversalImageLoader mẫu mong đợi Tôi có một TryCatche và CreateReflectedImage (mà làm cho ImageView của chúng tôi phản quang)
, Và một điều nữa ImageLoaderHelper của tôi là:
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);
}
}
UPDATE:
Sau một gỡ lỗi ngày nào đó tôi tìm thấy một Clue Vấn đề là với Adaptor của tôi Nhưng tôi không biết thế nào để giải quyết nó!
Đây là mã của CreateReflectedImages():
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;
}
Di chuyển tốt hơn mà DisplayImageOptions.Builder ra khỏi phương pháp và khởi tạo nó ở một nơi khác, nó được xây dựng cho mỗi hàng mới được tạo ra. Bạn cũng có thể đặt ImageLoadingListener đó để kiểm tra xem hình ảnh đã được tải xuống chưa. – razzledazzle
@razzledazzle Cảm ơn đề xuất của bạn Tôi sửa DisplayImageOptions.Builder, kiểm tra không giải quyết được sự cố của tôi vì khi tôi đóng ứng dụng (hủy hoạt động) và bắt đầu lại thư viện hoạt động Không hiển thị được lưu trữ Hình ảnh đã được tải xuống. – Amir