2014-07-02 10 views
7

Sto cercando di ottenere un'immagine in ImageView dal sito web dell'URL ma l'immagine non viene mostrata così, Cosa c'è di sbagliato in questo codice? Questo è l'indirizzo di image.Come ottenere l'immagine dal sito web URL in imageview in Android

E 'la mia attività principale

ImageView i; 
private Bitmap bitmap; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    i=(ImageView)findViewById(R.id.ImageView1); 




    bitmap=GetBitmapfromUrl("http://test-dashboard1.seeloz.com/system/images/products_images/86/5454544114_1401886223?1401886223"); 
    i.setImageBitmap(bitmap); 


} 


public Bitmap GetBitmapfromUrl(String scr) { 
    try { 
     URL url=new URL(scr); 
     HttpURLConnection connection=(HttpURLConnection)url.openConnection(); 
     connection.setDoInput(true); 
     connection.connect(); 
     InputStream input=connection.getInputStream(); 
     Bitmap bmp = BitmapFactory.decodeStream(input); 
     return bmp; 



    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     return null; 

    } 
}} 

nel file XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="85dp" 
     android:layout_marginTop="179dp" 
     android:src="@drawable/ic_launcher" /> 

</RelativeLayout> 

mia AndroidManifest

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.image" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 
<uses-permission android:name="android.permission.INTERNET"/> 
    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.image.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 
+0

Qual è il risultato della funzione GetBitmapfromUrl? –

+0

Potrebbe chiarire la domanda? –

+0

Inoltre, non riesco a vedere un'immagine dall'URL che hai fornito. L'URL è corretto –

risposta

15

Fare rete IO nel thread principale è il male. Meglio evitare

Inoltre, l'accesso alle risorse dell'URL è errato.

usare qualcosa come questo, invece:

private Bitmap bmp; 

    new AsyncTask<Void, Void, Void>() {     
     @Override 
     protected Void doInBackground(Void... params) { 
      try { 
       InputStream in = new URL(IMAGE_URL).openStream(); 
       bmp = BitmapFactory.decodeStream(in); 
      } catch (Exception e) { 
       // log error 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      if (bmp != null) 
       imageView.setImageBitmap(bmp); 
     } 

    }.execute(); 

Questa è la 'vecchia maniera' di risorse di carico URL nella visualizzazione. Francamente parlando, non ho scritto questo codice in un tempo lungo. Volley e Picasso semplicemente meglio di me di me, tra cui cache locale trasparente, gestione di più thread di caricamento e che abilita politiche di ridimensionamento del carico prima del caricamento. Tutto tranne caffè :)

1

Se avete intenzione di essere il caricamento di più immagini da URL nella vostra app, vale sicuramente la pena esaminare:

nostra13's "Universal Image Loader"

Si tratta di una libreria impressionante con tonnellate di caratteristiche per visualizzare le immagini da URL, espressi in bitmap, ecc

Una volta che hai incluso la classe e ha dichiarato la configurazione ImageLoader + ImageLoader, è un semplice come questo:.

imageLoader.displayImage("http://www.yoursite.com/my_picture.png", imageView); 

Dove IMAGEVIEW è l'ImageView che si desidera far apparire l'immagine in

6

fare un tentativo con Picasso. Dovrebbe richiedere quasi una riga completa di codice e meno di un minuto per configurarlo.

Nel tuo caso, che sarebbe:

Picasso.with(context).load(""http://imageurlgoeshere").into(i); 
Problemi correlati