Android對話方塊使用詳解(二),android使用詳解

來源:互聯網
上載者:User

Android對話方塊使用詳解(二),android使用詳解
部落格地址:http://blog.csdn.net/u012637501/article/details/46003413
一、使用PopupWindow建立對話方塊風格的視窗    使用PopupWindow建立對話方塊風格的視窗步驟如下:    >調用PopupWindow的構造器建立PopupWindow對象;    >調用PopupWindow的showAsDropDown(View v)將PopupWindow作為v組件的下拉組件顯示出來;或調用PopupWindow的showAtLocation()方法將PopupWindow在指定位置顯示出來。    >調用PopupWindow的dismiss()方法取消顯示popup視窗;(1)對話方塊樣式
(2)代碼實現

  1. View view = getLayoutInflater().inflate(R.layout.dialog, null);     //裝載R.layout.popup對應的介面布局  
  2.      final PopupWindow popup = new PopupWindow(view, 500, 300); //指定布局資源,視窗高度、長度  
  3.  //  popup.showAsDropDown(view);                                     //以下拉方式顯示   
  4.      popup.showAtLocation(findViewById(R.id.dialogBtn), Gravity.CENTER, 100, 100);  
  5.      popup.dismiss();          
  註:R.layout.dialog.xml只包含一個ImageVIew和Button組件 二、使用DatePickDialog、TimePickerDialog對話方塊    使用DataPickDialog、TimePickerDialog建立日期時間對話方塊,主要步驟如下:    >通過new關鍵字建立DatePickerDialog、TimePickerDialog執行個體,調用它們的show()方法顯示日期選擇對話方塊和時間選擇對話方塊;    >為DatePickerDialog、TimePickerDialog綁定監聽器,通過設定事件觸發監聽器,擷取使用者佈建的事件    其中        DatePickerDialog(Context context, OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)        TimePickerDialog(Context context, OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView) 1.對話方塊樣式
2.代碼實現
  1.     Calendar calendar = Calendar.getInstance();  
  2.  new DatePickerDialog(MainActivity.thisnew DatePickerDialog.OnDateSetListener() {  
  3.     public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {  
  4.     Toast.makeText(MainActivity.this, "你選擇的日期為:"+year+":"+monthOfYear+":"  
  5.                                                                     +dayOfMonth, Toast.LENGTH_SHORT).show();  
  6.         }  
  7.      }  
  8.     //初始化日期  
  9.     , calendar.get(Calendar.YEAR)  
  10.     , calendar.get(Calendar.MONTH)  
  11.     , calendar.get(Calendar.DAY_OF_MONTH)).show();  
  12.     /************************************************************************/  
  13.        Calendar calendar = Calendar.getInstance();  
  14.     new TimePickerDialog(MainActivity.thisnew OnTimeSetListener() {  
  15.    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {  
  16.     Toast.makeText(MainActivity.this, "你選擇的時間為:"+hourOfDay+":"+minute, Toast.LENGTH_SHORT).show();  
  17.    }  
  18.   }  
  19.     //初始化時間  
  20.     , calendar.get(Calendar.HOUR_OF_DAY)  
  21.     , calendar.get(Calendar.MINUTE),  
  22.     //true表示採用24小時制  
  23.     true).show();  
三、使用ProgressDialog建立進度條對話方塊     使用ProgressDialog建立進度對話方塊主要有兩種方式:    >如果只是建立簡單的進度對話方塊,調用ProgressDialog提供的靜態show()方法顯示對話方塊即可;        ProgressDialog progressDialog = ProgressDialog.show( LoginActivity.this, "", "正在登入,請稍後.....");        progressDialog.dismiss();    //取消進度條對話方塊    >建立ProgeressDialog,然後調用方法對話方塊裡的進度條進行設定,設定完成後將對話方塊顯示處理,ProgressDialog包含以下常用方法:        setIndeteminate(boolean indeteminate):設定對話方塊裡的進度條不顯示進度值;        setMax(int max):設定對話方塊裡進度條的最大值;        setMax(int max):設定對話方塊裡進度條的最大值;        setMessage(CharSequence message):設定對話方塊裡顯示的訊息        setProgress(int value):設定對話方塊裡進度條的進度值        setProgressStyle(int style):設定對話方塊裡進度條的風格 1.對話方塊樣式
2.代碼實現
  1.  public class MainActivity extends Activity {  
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.main);  
  7.          //進度條  
  8.         ProgressDialog progressDialog = null;  
  9.        final static int MAX_PROGRESS = 100;  
  10.         private int[]  data = new int[60];  
  11.         int progressStatus = 0;  
  12.         int hasData = 0;   
  13.     }  
  14.    
  15.     /** 
  16.      * 定義一個負責更新進度條的Handler 
  17.      * */  
  18.     Handler handler = new Handler(){  
  19.      public void handleMessage(Message msg) {  
  20.       if(msg.what == 0x110){  
  21.        progressDialog.setProgress(progressStatus);  
  22.       }  
  23.      };  
  24.     };  
  25.     public void dialogBtn(View v){  
  26.      /** 
  27.       * 建立一個進度條對話方塊 
  28.       * */  
  29.      progressDialog = new ProgressDialog(this);  //執行個體化一個ProgressDialog對象  
  30.      progressDialog.setTitle("任務進行中");  
  31.      progressDialog.setMessage("任務正在執行中,請稍後");  
  32.      progressDialog.setCancelable(false);    //設定對話方塊能夠觸屏關閉  
  33.      progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);   //設定對話方塊的進度條風格  
  34.      progressDialog.setIndeterminate(false);     //設定對話方塊的進度條是否顯示進度  
  35.      progressDialog.show();  //顯示對話方塊  
  36.      /** 
  37.       * 建立一個子線程,定時發送訊息給Handler 
  38.       * */  
  39.      new Thread(new Runnable(){  
  40.    public void run() {  
  41.     while(progressStatus < MAX_PROGRESS){  
  42.      progressStatus = MAX_PROGRESS*doWork()/data.length;     //擷取耗時操作的完成百分比  
  43.      handler.sendEmptyMessage(0x110);  
  44.     }  
  45.     if(progressStatus >= MAX_PROGRESS){   //任務完成,退出對話方塊  
  46.      progressDialog.dismiss();  
  47.     }  
  48.    }  
  49.      }).start();  
  50.     }  
  51.     /** 
  52.      * 類比一個耗時的操作 
  53.      * */  
  54.  protected int doWork() {  
  55.   data[hasData++] = (int)(Math.random()*100);  
  56.   try{  
  57.    Thread.sleep(500);    //0.5s更新一次  
  58.   }catch(InterruptedException e){  
  59.    e.printStackTrace();  
  60.   }  
  61.   return hasData;  
  62.  }  
  63. }  
注意:int[]  data = new int[60];是因為當數組大小為50時,在耗時操作模組累加出現數組下標越界錯誤。    java.lang.ArrayIndexOutOfBoundsException: length=50; index=50

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.