2016-08-31 3 views
2

anzeigen Ich benutze diesen Code, um Bild von URL es funktioniert, aber das Bild ist in Gerät gespeichert Dies ist das Problem, weil ich dieses Bild nur anzeigen möchten, wenn der Benutzer mit dem Internet verbunden istWie Bild von URL in Android

ImageView imageView=(ImageView) findViewById(R.id.imageView3); 
image = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 
imageView.setImageBitmap(bitmap); 

Wie kann ich ein Bild von der URL in Android anzeigen?

+0

können Sie Fresko verwenden oder ot universalimageloader oder picasso Bibliothek in android –

+0

Verwenden Glide.Thats Volley besser – therealprashant

+0

Verwendung picasso es einfach ist, in das Projekt zu integrieren und erfordert im Wesentlichen einen Code einzige Zeile zu laufen. – Abbas

Antwort

0

Um Internet-Konnektivität Verwendung folgenden Code

  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; 
      } 
     } 

Und danach Gebrauch zu überprüfen Bild

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(); 
    } 
} 
+0

dies wird auch Bild in Gerät –

+0

ja speichern, wird es Datei in Gerät –

+0

speichern, aber ich werde nicht Datei im Gerät speichern –

0

Ich habe auch gleiches Problem löst mit folgendem Code zum Download bereit.

Picasso.with(context).load(uri).networkPolicy(NetworkPolicy.NO_CACHE) 
     .memoryPolicy(MemoryPolicy.NO_CACHE) 
     .placeholder(R.drawable.bv_logo_default) 
     .into(viewImage_imageView); 
+0

es funktioniert nicht –

2
compile "com.squareup.picasso:picasso:2.4.0" 

Verwenden Sie diese Bibliothek Bilder zu laden.

Picasso.with(context) 
     .load(url) 
     .placeholder(R.drawable.placeholder) //optional 
     .resize(imgWidth, imgHeight)   //optional 
     .centerCrop()      //optional 
     .into(image);      //Your image view object. 
0

Versuchen Sie, diese auch die Größe Fix nach you..or finden Sie in der Größe ändern mit Universallader

<ImageView 
android:id="@id/ivImage" 
android:layout_width="150dp" 
android:layout_height="150dp" 
android:adjustViewBounds="true" 

android:scaleType="fitCenter" /> 

die Android Universal-Bild-Loader Gebrauchte

Declare

private ImageLoader imageLoader1; 

Auf erstellen

imageLoader1 = ImageLoader.getInstance(); 

imageLoader1.init(ImageLoaderConfiguration.createDefault(youractivity.this)); 

no_image hier ein ziehbar Bild ohne Bild Last in 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); 

auch gradle Abhängigkeiten hinzufügen ... Laden Sie die neueste Krug Universallader

The download link of jar

compile files('libs/universal-image-loader-1.9.5-with-sources.jar') 

Sie können Piccaso auch und Glide Verwenden Sie auch

0

Sie Picasso Bibliothek verwenden können Bild in Imageview zu laden. Es ist einfach zu bedienen.

Fügen Sie Abhängigkeit in Ihrem App-Level-Build hinzu.gradle Datei

compile 'com.squareup.picasso:picasso:2.5.2'

Bild laden aus einer URL wie dieser

Picasso.with(this).load(url).into(imageView); 

Lesen Sie mehr über Picasso enter link description here

1

diese Lösung Versuchen ..

image = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 
imageView.setImageBitmap(image); 

es wird Ihnen helfen .

0

Glide Bibliothek ist besser als Picasso Ich schlage Sie Glide

, dies zu tun in Build.gradle Datei in Abhängigkeit Abschnitt fügen Sie diesen Code zu verwenden:

compile 'com.github.bumptech.glide:glide:3.7.0' 

dann in Ihrer Aktivität, die Sie möge Bild in Ihrer onCreate Methode, um diesen Code zu verwenden:

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); 
0
Glide.with(context).load(uri).asBitmap().placeholder(R.drawable.yourimage).error(R.drawable.yourimage).into(yourview); 

Neben Die obige Antwort, wenn die Bild-URL null zurückgibt, können Sie das Standardbild in die Ansicht laden, wie oben.