我正在尝试使用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>
这就是整个活动,没有遗漏任何代码。
答案 0 :(得分:2)
某些设置必须与.displayer(new RoundedBitmapDisplayer(0))
错误,因为它是导致错误的原因。将圆值设置为0是不够的,我必须删除此行才能以正确的形式显示图像。
答案 1 :(得分:0)
要使图片适合ImageView
,请更改
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
到
.imageScaleType(ImageScaleType.EXACTLY)
并在你的xml布局中
更改
android:scaleType="centerCrop"
到
android:scaleType="fitCenter"