2015-12-21 41 views
1

對於Android開發來說很新穎,尚未找到所需的答案。Android-從URL中插入外部圖像到應用程序中的佔位符

我有一個ImageView的一些layout.xml:

<ImageView 
     android:layout_width="48dp" 
     android:layout_height="48dp" 
     android:src="@drawable/placeholder" 
     android:layout_alignParentRight="true" /> 

取而代之的是placeholder,我想加載從URL一些特定的圖像,我有。

如何實現?使用從您的onCreate()方法

+1

您只能在代碼(Java)中執行此操作。或者,首先下載圖像,然後將其放入可繪製文件夾中,然後**從佈局(xml)中將其引用。 –

+2

@ FrankN.Stein謝謝,我使用了下面建議的Picassa庫。 – Stas

回答

1

使用Picasso庫爲Android下載圖片從url和display到ImageView

它很容易使用像這樣

Picasso.with(context).load("http://your_image_url").into(your_imageView);

+1

謝謝,驚人的圖書館。很棒! – Stas

1
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
    ImageView bmImage; 

    public DownloadImageTask(ImageView bmImage) { 
     this.bmImage = bmImage; 
    } 

    protected Bitmap doInBackground(String... urls) { 
     String urldisplay = urls[0]; 
     Bitmap mIcon11 = null; 
     try { 
     InputStream in = new java.net.URL(urldisplay).openStream(); 
     mIcon11 = BitmapFactory.decodeStream(in); 
     } catch (Exception e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 
     return mIcon11; 
    } 

    protected void onPostExecute(Bitmap result) { 
     bmImage.setImageBitmap(result); 
    } 
} 

而且撥打:

new DownloadImageTask((ImageView) findViewById(R.id.imageView1)) 
     .execute(MY_URL_STRING); 

不要忘了在你的清單文件

<uses-permission android:name="android.permission.INTERNET"/> 
4

下面添加權限下載圖像的URL,先下載該圖像並將其保存在位圖中

public static Bitmap loadBitmap(String url) { 
Bitmap bitmap = null; 
InputStream in = null; 
BufferedOutputStream out = null; 

try { 
in = new BufferedInputStream(new URL(url).openStream(),IO_BUFFER_SIZE); 

final ByteArrayOutputStream dataStream = new ByteArrayOutputStream(); 
out = new BufferedOutputStream(dataStream, IO_BUFFER_SIZE); 
copy(in, out); 
out.flush(); 

final byte[] data = dataStream.toByteArray(); 
BitmapFactory.Options options = new BitmapFactory.Options(); 
//options.inSampleSize = 1; 

bitmap = BitmapFactory.decodeByteArray(data, 0, data.length,options); 
} catch (IOException e) { 
Log.e(TAG, "Could not load Bitmap from: " + url); 
} finally { 
closeStream(in); 
closeStream(out); 
} 

return bitmap; 

比你可以通過呼叫建立形象,方法

image.setImageBitmap(bitmap); 

希望它會幫助你