2014-07-02 17 views
7

Próbuję uzyskać obraz w ImageView z witryny URL, ale obraz nie jest wyświetlany, Co jest nie tak w tym kodzie? To jest adres URL image.Jak uzyskać obraz z witryny URL w obrazie w Androidzie

To jest mój główny aktywny

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; 

    } 
}} 

w pliku 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> 

mój 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

Co jest wynikiem funkcji GetBitmapfromUrl? –

+0

Czy mógłbyś wyjaśnić pytanie? –

+0

Ponadto nie widzę obrazu z podanego adresu URL. Czy adres URL jest poprawny? –

Odpowiedz

15

Doing sieci IO w głównym wątku jest zła. Lepiej unikać.

Również - dostęp do zasobu adresu URL jest nieprawidłowy.

Zastosowanie coś takiego zamiast:

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(); 

To jest „stary sposób” zasobów ładowanie URL w wyświetlaczu. Szczerze mówiąc, nie napisałem takiego kodu w czasie długi. Volley i Picasso po prostu znacznie lepiej niż ja, w tym przezroczyste lokalne pamięci podręczne, zarządzanie wieloma wątkami ładującymi i umożliwiające efektywne zasady zmiany rozmiaru przed ładowaniem. Wszystkie oprócz kawy :)

1

Jeśli masz zamiar być ładowanie wielu obrazów z URL w Twoich aplikacja zdecydowanie warta obejrzenia:

nostra13's "Universal Image Loader"

To niesamowite biblioteka z mnóstwem funkcji, które wyświetlają obrazy z adresów URL, oddanych do bitmap itp

Po zawarte klasę i ogłosił konfigurację imageLoader + imageLoader, jego proste to:.

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

Gdzie ImageView jest ImageView chcesz obraz pojawiać w

6

Spróbować z Picasso. Powinien zająć ci prawie całą linię kodu i mniej niż minutę, aby go skonfigurować.

W twoim przypadku, to byłoby:

Picasso.with(context).load(""http://imageurlgoeshere").into(i); 
Powiązane problemy