Universal ImageLoader不显示完整图像

时间:2014-07-13 16:18:29

标签: android universal-image-loader

我正在尝试使用Universal ImageLoader在ImageView中显示图像,但只显示部分图像。它就像是因为某种原因放大了。

public class Image extends Activity {

    ImageView iv;
    protected ImageLoader imageLoader = ImageLoader.getInstance();
    DisplayImageOptions options;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.image);

        iv = (ImageView) findViewById(R.id.imageView1);

        options = new DisplayImageOptions.Builder()
           .showImageForEmptyUri(R.drawable.noimage)
           .cacheOnDisc(true)
           .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
           .cacheInMemory(true)
           .bitmapConfig(Bitmap.Config.RGB_565)
           .displayer(new RoundedBitmapDisplayer(0))
           .build();

        if (!imageLoader.isInited()) {
            initImageLoader();
        }

        Intent intent = getIntent();
        String image = intent.getStringExtra("image");
        Log.i("Image", "" + image);
        if (image != null) {
            imageLoader.displayImage("https://www.example.com/"+image, iv, options);
        }

    }

    private void initImageLoader() {
        int memoryCacheSize;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR) {
            int memClass = ((ActivityManager) 
                    this.getSystemService(Context.ACTIVITY_SERVICE))
                    .getMemoryClass();
            memoryCacheSize = (memClass / 8) * 1024 * 1024;
        } else {
            memoryCacheSize = 2 * 1024 * 1024;
        }

        final ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
                this).threadPoolSize(5)
                .threadPriority(Thread.NORM_PRIORITY - 2)
                .memoryCacheSize(memoryCacheSize)
                //.memoryCache(new FIFOLimitedMemoryCache(memoryCacheSize-1000000))
                .denyCacheImageMultipleSizesInMemory()
                .discCacheFileNameGenerator(new Md5FileNameGenerator())
                .build();

        ImageLoader.getInstance().init(config);
    }

}

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="#000000" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop" />

</LinearLayout>

这就是整个活动,没有遗漏任何代码。

enter image description here

2 个答案:

答案 0 :(得分:2)

某些设置必须与.displayer(new RoundedBitmapDisplayer(0))错误,因为它是导致错误的原因。将圆值设置为0是不够的,我必须删除此行才能以正确的形式显示图像。

答案 1 :(得分:0)

要使图片适合ImageView,请更改

 .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)

.imageScaleType(ImageScaleType.EXACTLY) 

并在你的xml布局中

更改

   android:scaleType="centerCrop"

    android:scaleType="fitCenter"