我花了很多时间来讨论关于这个主题的多个不同主题,但我还没有找到一个适合我的代码的答案(Android SDK 23,2016)。很多答案都被弃用了,而其他的答案却没有像预期的那样发挥作用,我想知道我是否可以得到一个可靠的答案:
我试图在Serebii的程序中包含一个Pokemon精灵(静态图像)。 nums
是一个变量,表示口袋妖怪的dex号码(这个号码正确,我保证)。这个代码在主UI线程中运行,我知道这是不赞成的,但是现在我正在尝试加载图像,然后降低应用程序的平滑度。 我本身并不需要Bitmap,但我需要ImageView
更新并显示URL提供的图像。我该怎么办?
URL url = null;
try {
url = new URL("http://www.serebii.net/xy/pokemon/" + nums + ".png");
} catch (MalformedURLException e) {
e.printStackTrace();
}
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
mImageView.setImageBitmap(bmp);
答案 0 :(得分:1)
只需使用Picasso库,它就可以完成所有图像加载。您只需要正确提供图像的网址。
String url = "http://www.serebii.net/xy/pokemon/" + nums + ".png";
Picasso.with(yourContext)
.load(url)
.into(mImageView);
答案 1 :(得分:0)
您可以尝试将毕加索用作:
Picasso.with(context)
.load(url)
.into(imageview);
或使用Universal Image loader作为:
ImageLoader imageLoader = new ImageLoader(context);
imageLoader.displayImage(imageUri, imageView);
答案 2 :(得分:0)
使用 Piassco 库。Library link
在Bitmap
ImageView
Picasso.with(getContext()).load("your url").into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
//do what ever you want with your bitmap
imgView.setImageBitmap(loadedImage);///imgView is use to set the image in it
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
});
另一种毕加索的方法: -
Picasso.with(this)
.load("your_image_url")
.placeholder(R.drawable.no_image)
.error(android.R.drawable.stat_notify_error)
.networkPolicy(NetworkPolicy.OFFLINE)//user this for offline support
.into(YOUR_IMAEGVIEW);
或强>
您也可以使用通用图片加载器。这是链接Universal image loader
ImageLoader imageLoader = ImageLoader.getInstance(); // Get singleton instance
ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(getActivity()));
imageLoader = com.nostra13.universalimageloader.core.ImageLoader.getInstance();
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.YOUR_DRAWABLE)
.showImageForEmptyUri(R.drawable.YOUR_DRAWABLE)
.showImageOnFail(R.drawable.YOUR_DRAWABLE)
.cacheInMemory(true)
.cacheOnDisk(true)
.considerExifParams(true)
.build();
imageLoader.displayImage("your_image_url", YOUR_IMAGEVIEW, null);
答案 3 :(得分:0)
您可以使用Picasso库来加载图片
a)将Gradle添加到您的项目中。
compile 'com.squareup.picasso:picasso:2.5.2'
b)用法
Picasso.with(context).load("http://www.serebii.net/xy/pokemon/" + nums + ".png").into(imageView);
还有另外一个库,你可以使用喜欢 Fresco来自Facebook,Universal Image loader