我使用此代码显示来自网址的图片,但图片存储在设备中这是问题,因为我只想在用户连接到互联网时显示此图片
ImageView imageView=(ImageView) findViewById(R.id.imageView3);
image = BitmapFactory.decodeStream(url.openConnection().getInputStream());
imageView.setImageBitmap(bitmap);
如何在Android中显示来自网址的图片?
答案 0 :(得分:2)
compile "com.squareup.picasso:picasso:2.4.0"
使用此库加载图像。
Picasso.with(context)
.load(url)
.placeholder(R.drawable.placeholder) //optional
.resize(imgWidth, imgHeight) //optional
.centerCrop() //optional
.into(image); //Your image view object.
答案 1 :(得分:2)
尝试此解决方案..
image = BitmapFactory.decodeStream(url.openConnection().getInputStream());
imageView.setImageBitmap(image);
它会帮助你。
答案 2 :(得分:0)
使用以下代码检查互联网连接
ConnectivityManager connectivity = (ConnectivityManager) _Context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo activeNetwork = connectivity.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
activeNetwork.isConnectedOrConnecting();
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
available = true;
}
}
}
}
if (available == false) {
NetworkInfo wiMax = connectivity.getNetworkInfo(6);
if (wiMax != null && wiMax.isConnected()) {
available = true;
}
}
然后使用下载图像
class DownloadTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
String image_name, studentName;
TextDrawable drawable;
public DownloadTask(ImageView bmImage, String file_name) {
this.bmImage = bmImage;
this.image_name = file_name;
}
protected Bitmap doInBackground(String... urls) {
InputStream input = new java.net.URL(image_name).openStream();
if(input.available()!=0) {
return BitmapFactory.decodeStream(input);
}
return null;
}
protected void onPostExecute(Bitmap result) {
try {
if(result == null)
bmImage.setImageDrawable(drawable);
else
bmImage.setImageBitmap(result);
} catch (Exception e) {
e.printStackTrace();
}
}
答案 3 :(得分:0)
我也使用下面的代码解决了同样的问题。
Picasso.with(context).load(uri).networkPolicy(NetworkPolicy.NO_CACHE)
.memoryPolicy(MemoryPolicy.NO_CACHE)
.placeholder(R.drawable.bv_logo_default)
.into(viewImage_imageView);
答案 4 :(得分:0)
尝试这一点也可以根据你修复尺寸..或者看看使用通用装载程序调整大小
<ImageView
android:id="@id/ivImage"
android:layout_width="150dp"
android:layout_height="150dp"
android:adjustViewBounds="true"
android:scaleType="fitCenter" />
使用了Android Universal Image-Loader
声明
private ImageLoader imageLoader1;
创建
imageLoader1 = ImageLoader.getInstance();
imageLoader1.init(ImageLoaderConfiguration.createDefault(youractivity.this));
no_image这里是一个可在Cache中没有任何图像加载的可绘制图像
DisplayImageOptions
options = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.showImageOnLoading(R.drawable.no_image) // resource or drawable
.showImageForEmptyUri(R.drawable.no_image) // resource or drawable
.showImageOnFail(R.drawable.no_image)
.considerExifParams(true)
.bitmapConfig(Bitmap.Config.RGB_565)
.build();
imageLoader1.displayImage(yourpathURl.replace(" ", "%20"), ivImage, options);
还添加gradle依赖项...下载最新的通用装载程序罐
compile files('libs/universal-image-loader-1.9.5-with-sources.jar')
您也可以使用Piccaso并同时滑行
答案 5 :(得分:0)
您可以使用Picasso库将图像加载到imageView中。它易于使用。
在应用级build.gradle文件中添加依赖项
compile 'com.squareup.picasso:picasso:2.5.2'
从像这样的网址加载图片
Picasso.with(this).load(url).into(imageView);
了解有关毕加索enter link description here
的更多信息答案 6 :(得分:0)
Glide图书馆比Picasso好,我建议你使用Glide
在依赖项部分的Build.gradle文件中执行此操作,添加以下代码:
compile 'com.github.bumptech.glide:glide:3.7.0'
然后在你想要显示Image的Activity中使用onCreate方法中的代码:
String myUrl = "https://github.com/bumptech/glide/raw/master/static/glide_logo.png";
ImageView imageView = (ImageView)findViewById(R.id.yourImageView);
Glide.with(getApplicationContext())
.load(myUrl)
.into(imageView);
答案 7 :(得分:0)
Glide.with(context).load(uri).asBitmap().placeholder(R.drawable.yourimage).error(R.drawable.yourimage).into(yourview);
除了上面的答案,如果图片网址返回null,您可以将默认图片加载到视图中,如上所示。
答案 8 :(得分:0)
我最终为科特林得到了这样的东西。
//download
val result = lifecycleScope.async(Dispatchers.IO){
try {
val url = URL("url")
return@async BitmapFactory.decodeStream(url.openConnection().getInputStream())
} catch (e: IOException){
println("Error")
} catch (e: UnknownServiceException){
println("Error2")
} catch (e: MalformedURLException){
println("Error3")
}
}
lifecycleScope.launch {
val bitmap = result.await() as Bitmap
val imageView: ImageView = findViewById(R.id.post_image)
imageView.setImageBitmap(bitmap)
}