2012-08-02 99 views
0

我使用以下代碼創建圖像庫,但我想使用網絡中的圖像而不是SD卡。有沒有辦法做到這一點?目前代碼需要和圖像的整數值。還是必須先將圖像下載到SD?將圖像從網站載入圖像庫

public class viewimages extends Activity { 

private Gallery gallery; 
private ImageView imgView; 

private Integer[] Imgid = { 
     R.drawable.a_1, R.drawable.a_2, R.drawable.a_3, R.drawable.a_4 
}; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.viewimages); 

    imgView = (ImageView)findViewById(R.id.ImageView01);  
    imgView.setImageResource(Imgid[0]); 

    gallery = (Gallery) findViewById(R.id.examplegallery); 
    gallery.setAdapter(new AddImgAdp(this)); 

    gallery.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView parent, View v, int position, long id) { 
      imgView.setImageResource(Imgid[position]); 
     } 
    }); 


} 

public class AddImgAdp extends BaseAdapter { 
    int GalItemBg; 
    private Context cont; 

    public AddImgAdp(Context c) { 
     cont = c; 
     TypedArray typArray = obtainStyledAttributes(R.styleable.GalleryTheme); 
     GalItemBg = typArray.getResourceId(R.styleable.GalleryTheme_android_galleryItemBackground, 0); 
     typArray.recycle(); 
    } 

    public int getCount() { 
     return Imgid.length; 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView imgView = new ImageView(cont); 

     imgView.setImageResource(Imgid[position]); 
     imgView.setLayoutParams(new Gallery.LayoutParams(80, 70)); 
     imgView.setScaleType(ImageView.ScaleType.FIT_XY); 
     imgView.setBackgroundResource(GalItemBg); 

     return imgView; 
    } 
} 

    } 
+0

我在這裏回答了這個問題:http://stackoverflow.com/questions/11756358/i-have-an-image-path-image-is-on-another -server-i-want-to-image-from-that/11756515#11756515 – 2012-08-02 13:26:57

+0

看看[Universal Image Loader](https://github.com/nostra13/Android-Universal-Image-Loader) – Praveenkumar 2012-08-02 13:31:38

回答

2

你可以做這樣的事情:

URL url = new URL("http://www.website.com/image.jpg"); 
Bimtap bmp = BitmapFactory.decodeStream(url.openConnection() 
        .getInputStream()); 

然後,你需要改變你在哪裏做「setImageResource」到「setImageBitmap」並提供「BMP」對象一旦被下載並加載。

[編輯]

這一點也很重要,以確保您的Android清單有上網權限。

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

[編輯發表評論提問]

如果您想爲多張圖片做到這一點,並且圖像不是基於ID_NUMBER(基本上如果圖像是不是像0001.JPG ,0002.jpg等)創建一個字符串ArrayList,它將保存所有項目的名稱,然後遍歷它。例如,

List<String> imageNames = new ArrayList<String>(); 
imageNames.add("image.jpg"); 
imageNames.add("thisPhoto.jpg"); 
//etc. until you've added all images 

for (int i = 0; i < imageNames.size(); i++){ 
    URL url = new URL("http://www.website.com/" + imageNames.get(i)); 
    Bimtap bmp = BitmapFactory.decodeStream(url.openConnection() 
        .getInputStream()); 
} 

希望幫助

+0

謝謝,這可以加載第一張圖片,其餘的怎麼樣? – user1197941 2012-08-02 13:53:57

+0

查看更新的答案 – RyanInBinary 2012-08-02 13:59:55