2012-01-28 194 views

回答

1

請訪問this鏈接。

另外它在SDK中的ApiDemos中完整解釋。您想要的示例名爲:ProgressBar3.java並且可以在\ ApiDemos \ src \ com \ example \ android \ apis \ view \

中找到

另外,如果要刪除對話框的邊框,出現進度條時,您可以將對話框本身定義爲透明視圖/覆蓋圖(這也在示例中進行了說明)。

17

documentation,你應該叫setProgressNumberFormat (null)ProgressDialog實例來獲得這種行爲

+2

,你所提到的方法適用於API級別11.我的是10 – Dhanesh 2012-01-28 07:38:18

+1

我的壞:(我已經挖成的源代碼,並找出在api 10中沒有「正常」的方法。我可以提出一種解決方法,從Android 4.0.1獲取完整的ProgessDialog代碼,並使用它代替內置版本。也許,它會有些混亂android「內部」資源,但它也可作爲重用源。 – OleGG 2012-01-28 08:13:02

11

嘿這裏從服務器下載文件,保存文件到SD卡,並顯示一個進度條。

public class XYZ extends Activity { 

    public static final int DIALOG_DOWNLOAD_PROGRESS = 0; 
    private Button startBtn; 
    private ProgressDialog mProgressDialog; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     startBtn = (Button)findViewById(R.id.startBtn); 
     startBtn.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v) { 
       startDownload(); 
      } 
     }); 
    } 

    private void startDownload() { 
     String url = "http://.jpg"; 
     new DownloadFileAsync().execute(url); 
    } 
    @Override 
    protected Dialog onCreateDialog(int id) { 
     switch (id) { 
     case DIALOG_DOWNLOAD_PROGRESS: 
      mProgressDialog = new ProgressDialog(this); 
      mProgressDialog.setMessage("Downloading file.."); 
      mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
      mProgressDialog.setCancelable(false); 
      mProgressDialog.show(); 
      return mProgressDialog; 
     default: 
      return null; 
     } 
    } 

class DownloadFileAsync extends AsyncTask<String, String, String> { 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     showDialog(DIALOG_DOWNLOAD_PROGRESS); 
    } 

    @Override 
    protected String doInBackground(String... aurl) { 
     int count; 

    try { 

    URL url = new URL(aurl[0]); 
    URLConnection conexion = url.openConnection(); 
    conexion.connect(); 

    int lenghtOfFile = conexion.getContentLength(); 
    Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile); 

    InputStream input = new BufferedInputStream(url.openStream()); 
    OutputStream output = new FileOutputStream("/sdcard/some_photo_from_gdansk_poland.jpg"); 

    byte data[] = new byte[1024]; 

    long total = 0; 

     while ((count = input.read(data)) != -1) { 
      total += count; 
      publishProgress(""+(int)((total*100)/lenghtOfFile)); 
      output.write(data, 0, count); 
     } 

     output.flush(); 
     output.close(); 
     input.close(); 
    } catch (Exception e) {} 
    return null; 

    } 
    protected void onProgressUpdate(String... progress) { 
     Log.d("ANDRO_ASYNC",progress[0]); 
     mProgressDialog.setProgress(Integer.parseInt(progress[0])); 
    } 

    @Override 
    protected void onPostExecute(String unused) { 
     dismissDialog(DIALOG_DOWNLOAD_PROGRESS); 
    } 
} 
} 

這樣你..

這個例子形象我淨找到。 enter image description here

,這是我的xml文件:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/hello" /> 
    <Button 
     android:text="Start long running task.." 
     android:id="@+id/startBtn" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 
    </Button> 
</LinearLayout> 
+5

這不是問題的答案 – SoroushA 2016-03-23 19:31:40