1

我是新來的Android和Java。 我有36個圖像的URL。 我想要下載所有這些圖像並在網格視圖中顯示它們。 我指的是下面的代碼,所以請如果有人可以編輯此代碼到下載多個圖像。在網格視圖中顯示 下面的代碼只是從一個URL和從該 URL下載圖像。下載與進度條圖像和網格視圖中顯示他們

package com.example.androidhive; 

import java.io.BufferedInputStream; 
import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.net.URL; 
import java.net.URLConnection; 

import android.app.Activity; 
import android.app.Dialog; 
import android.app.ProgressDialog; 
import android.graphics.drawable.Drawable; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.os.Environment; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 

public class AndroidDownloadFileByProgressBarActivity extends Activity { 

// button to show progress dialog 
Button btnShowProgress; 

// Progress Dialog 
private ProgressDialog pDialog; 
ImageView my_image; 
// Progress dialog type (0 - for Horizontal progress bar) 
public static final int progress_bar_type = 0; 

// File url to download 
private static String file_url = "http://api.androidhive.info/progressdialog/hive.jpg"; 

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

    // show progress bar button 
    btnShowProgress = (Button) findViewById(R.id.btnProgressBar); 
    // Image view to show image after downloading 
    my_image = (ImageView) findViewById(R.id.my_image); 
    /** 
    * Show Progress bar click event 
    * */ 
    btnShowProgress.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // starting new Async Task 
      new DownloadFileFromURL().execute(file_url); 
     } 
    }); 
} 

/** 
* Showing Dialog 
* */ 
@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
    case progress_bar_type: // we set this to 0 
     pDialog = new ProgressDialog(this); 
     pDialog.setMessage("Downloading file. Please wait..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setMax(100); 
     pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     pDialog.setCancelable(true); 
     pDialog.show(); 
     return pDialog; 
    default: 
     return null; 
    } 
} 

/** 
* Background Async Task to download file 
* */ 
class DownloadFileFromURL extends AsyncTask<String, String, String> { 

    /** 
    * Before starting background thread 
    * Show Progress Bar Dialog 
    * */ 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     showDialog(progress_bar_type); 
    } 

    /** 
    * Downloading file in background thread 
    * */ 
    @Override 
    protected String doInBackground(String... f_url) { 
     int count; 
     try { 
      URL url = new URL(f_url[0]); 
      URLConnection conection = url.openConnection(); 
      conection.connect(); 
      // this will be useful so that you can show a tipical 0-100% progress bar 
      int lenghtOfFile = conection.getContentLength(); 

      // download the file 
      InputStream input = new BufferedInputStream(url.openStream(), 8192); 

      // Output stream 
      OutputStream output = new FileOutputStream("/sdcard/downloadedfile.jpg"); 

      byte data[] = new byte[1024]; 

      long total = 0; 

      while ((count = input.read(data)) != -1) { 
       total += count; 
       // publishing the progress.... 
       // After this onProgressUpdate will be called 
       publishProgress(""+(int)((total*100)/lenghtOfFile)); 

       // writing data to file 
       output.write(data, 0, count); 
      } 

      // flushing output 
      output.flush(); 

      // closing streams 
      output.close(); 
      input.close(); 

     } catch (Exception e) { 
      Log.e("Error: ", e.getMessage()); 
     } 

     return null; 
    } 

    /** 
    * Updating progress bar 
    * */ 
    protected void onProgressUpdate(String... progress) { 
     // setting progress percentage 
     pDialog.setProgress(Integer.parseInt(progress[0])); 
    } 

    /** 
    * After completing background task 
    * Dismiss the progress dialog 
    * **/ 
    @Override 
    protected void onPostExecute(String file_url) { 
     // dismiss the dialog after the file was downloaded 
     dismissDialog(progress_bar_type); 

     // Displaying downloaded image into image view 
     // Reading image path from sdcard 
     String imagePath = Environment.getExternalStorageDirectory().toString() + "/downloadedfile.jpg"; 
     // setting downloaded into image view 
     my_image.setImageDrawable(Drawable.createFromPath(imagePath)); 
    } 

} 
} 

請幫助

+0

檢查此鏈接http://stackoverflow.com/a/13226762/1487822 –

回答

0

我認爲你應該使用Universal image loader用於顯示圖像gridview.it完美的作品!

+0

你能幫我編輯這段代碼嗎? –

+0

點擊download.open zip file.copy來自lib文件夾的第二個jar文件,然後粘貼到你的libs文件夾,然後檢查UniversalImageLoaderExample項目 –