使用通用图像下载器在图像视图中设置大图像

时间:2014-09-03 07:10:08

标签: android image bitmap image-resizing universal-image-loader

我在我的应用中使用通用图片下载器,配置如下 -

 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
       .memoryCacheExtraOptions(1000, 1200)
       .threadPoolSize(4)
       .threadPriority(Thread.MIN_PRIORITY + 2)
       .denyCacheImageMultipleSizesInMemory()
       .memoryCache(new LruMemoryCache(1024*1024*5)) // You can pass your own memory cache implementation
       .discCacheFileNameGenerator(new HashCodeFileNameGenerator())
       .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
       .build();
       ImageLoader.getInstance().init(config);

现在想要在列表中显示的图像可以是任何尺寸的可能是高分辨率的图像或具有较低分辨率的图像但是我想显示宽度=设备宽度和高度=固定高度说-300dp而没有模糊或拉伸的图像图片。 是否可以创建这种视图.Instagram正在使用此过程。请参见下面的图片 -

enter image description here

1 个答案:

答案 0 :(得分:0)

试试这个:

public class CustomImageView extends ImageView {
int width = 300;// just setting random value
int height = 300;// pixels
Context context;


public CustomImageView(Context context) {
    super(context);
    this.context = context;
    this.width = getWidthOfScreen();
}

public CustomImageView(Context context, AttributeSet attrs) {
    super(context, attrs);
    this.context = context;
    this.width = getWidthOfScreen();
}

public CustomImageView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    this.context = context;
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);

    setMeasuredDimension(width, height);//the most important line
}

public int getWidthOfScreen() {
    WindowManager wm = (WindowManager) context
            .getSystemService(Context.WINDOW_SERVICE);
    Display display = wm.getDefaultDisplay();
    return display.getWidth();
}
}

此处,宽度是屏幕宽度,高度可以根据需要保持不变。