يقوم ImageView بتحميل صورة عالية الدقة بجودة رديئة جدًا
سؤال
أنا أستخدم أ ListFragment
لعرض أ ListView
من كسول محملة ImageView
الكائنات باستخدام محمل الصور العالمي للاندرويد.تأتي البيانات الصحيحة من مصدر البيانات الخاص بي ولدي عنوان URL لصوري عالية الدقة إلى حد ما (عرضها حوالي 1000 بكسل، و150 كيلو بايت).أنا أستخدمها لملء كل صف يبلغ ارتفاعه 110dp بالكامل.
المشكلة التي أواجهها هي أن الصور يتم تحميلها بدقة سيئة للغاية:
المشكلة ليست في الصورة المصدر لأنها ذات جودة عالية بما فيه الكفاية:
http://www.puc.edu/__data/assets/image/0006/127581/IMG_5155.jpg
أقوم بتوسيط الصورة ثم قصها:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="110dp">
<TextView
android:id="@+id/galleryTitle"
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_marginLeft="95dp"
android:layout_marginRight="5dp"
android:gravity="center_vertical"
android:hint="16dp"
android:lineSpacingExtra="0dp"
android:lines="3"
android:text="TextView"
android:textSize="16sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/galleryImageView"
android:layout_width="fill_parent"
android:layout_height="110dp"
android:scaleType="centerCrop"
android:src="@drawable/default_background" />
</RelativeLayout>
عرض الصورة في الصف:
public View getView(int position, View convertView, ViewGroup parent) {
View itemView;
TextView title;
// Get the news item object
PUCObjects.PUCPhotoGalleryItem item = items.get(position);
// Inflater Service
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
itemView = inflater.inflate(R.layout.photos_gallery_row, parent, false);
title = (TextView) itemView.findViewById(R.id.galleryTitle);
ImageView imageView = (ImageView) itemView.findViewById(R.id.galleryImageView);
// Set the Image
imageLoader.DisplayImage(item.imageUrlExtraLarge, imageView);
// Set the text
title.setText(item.title);
return itemView;
}
هل هناك أي أفكار لماذا يتم عرض مثل هذه الصور ذات الدقة الرديئة؟
المحلول
يبدو أن الصور تم تصغير حجمها.بالنظر إلى تلك المكتبة، فإن الوظيفة الافتراضية هي قوة أخذ عينات من صورتين.أعتقد أن هذا هو مصدر مشكلتك.
على سبيل المثال:
DisplayImageOptions opts = new DisplayImageOptions.Builder().imageScaleType(ImageScaleType.NONE).build();
imageLoader.DisplayImage(item.imageUrlExtraLarge, imageView, opts);