




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第Android對話框使用方法詳解對話框(Dialog)是Android系統在Activity或者其他組件運行過程中提供的一種提示機制。它可以幫助應用完成一些必要的提示功能,同時提供一些與用戶交互的功能。
對話框分為很多種,下面將一一介紹。
1.提示對話框
Android系統提供的對話框父類為Dialog,里面并沒有實現對話框的具體類型,比如單選、多選、列表等對話框,僅提供一個框架和規(guī)范。系統為開發(fā)者提供了一個多功能的對話框類AlertDialog,里面封裝了各種對話框的樣式,開發(fā)者只須提供相應的顯示數據和按鍵的響應監(jiān)聽就可以。
提示對話框所使用的就是系統封裝好的對話框AlertDialog的實例對象。AlertDialog并不提供對外的構造方法,即不能直接通過AlertDialog的構造函數來生產一個AlertDialog。因為AlertDialog所有的構造方法都是protected的。所以為了獲取AlertDialog對象,系統提供了一個靜態(tài)內部類Builder讓我們使用,通過Builder可以創(chuàng)建AlertDialog對象。
(1)創(chuàng)建AlertDialog.Builder實例對象。
(2)通過Builder對象設置對話框的屬性。
setTitle()設置標題setIcon()設置圖標setMessage()設置要顯示的內容setItems設置在對話框中顯示的項目列表setView設置自定義的對話框樣式setPositiveButton()設置確定按鈕setNegativeButton()設置取消按鈕setNeutralButton()設置中立按鈕setSingleChoiceItems單選框setMultiChoiceItems復選框
(3)調用Builder對象的create()方法創(chuàng)建AlertDialog對話框
(4)調用AlertDialog的show()方法來顯示對話框
(5)調用AlertDialog的dimiss()方法銷毀對話框。
packagecom.example.learndialog;
importandroid.content.DialogInterface;
importandroid.support.v7.app.AlertDialog;
importandroid.support.v7.app.AppCompatActivity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.Button;
publicclassMainActivityextendsAppCompatActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Buttonbt=(Button)findViewById(R.id.button);
bt.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
AlertDialogaldg;
AlertDialog.BuilderadBd=newAlertDialog.Builder(MainActivity.this);
adBd.setTitle("我的提示框");
adBd.setIcon(R.drawable.p1);
adBd.setMessage("確定要關閉本應用程序嗎?");
adBd.setPositiveButton("確定",newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
finish();
}
});
adBd.setNegativeButton("取消",newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
}
});
aldg=adBd.create();
aldg.show();
}
});
}
}
運行結果:
2.單選對話框
單選對話框中的0代表默認選中第一個。
packagecom.example.learndialog;
importandroid.content.DialogInterface;
importandroid.support.v7.app.AlertDialog;
importandroid.support.v7.app.AppCompatActivity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.Toast;
publicclassMainActivityextendsAppCompatActivity{
intpicWhich;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Buttonbt=(Button)findViewById(R.id.button);
bt.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
finalString[]starr=newString[]{"教師","經理","律師","公務員"};
AlertDialogadlg;
adlg=newAlertDialog.Builder(MainActivity.this).setTitle("選擇職業(yè):")
.setSingleChoiceItems(starr,0,newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
picWhich=which;
}
})
.setPositiveButton("確定",newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
Toast.makeText(MainActivity.this,"你選定的職業(yè)是:"
+starr[picWhich],Toast.LENGTH_LONG).show();
}
})
.setNegativeButton("取消",newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
}
})
.create();
adlg.show();
}
});
}
}
運行結果:
3.復選對話框
復選對話框和單選對話框用法相似。
packagecom.example.learndialog;
importandroid.content.DialogInterface;
importandroid.support.v7.app.AlertDialog;
importandroid.support.v7.app.AppCompatActivity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.Toast;
publicclassMainActivityextendsAppCompatActivity{
intpicWhich;
booleanchk[]=newboolean[]{false,false,false,false};
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Buttonbt=(Button)findViewById(R.id.button);
bt.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
finalString[]starr=newString[]{"教師","經理","律師","公務員"};
AlertDialogadlg;
adlg=newAlertDialog.Builder(MainActivity.this).setTitle("選擇職業(yè):")
.setMultiChoiceItems(starr,chk,newDialogInterface.OnMultiChoiceClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich,booleanisChecked){
chk[which]=isChecked;
}
})
.setPositiveButton("確定",newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
Stringst="";
for(inti=0;ichk.length;i++)
if(chk[i])
st=st+starr[i]+"";
Toast.makeText(MainActivity.this,"選定的職業(yè)有:"+st,Toast.LENGTH_LONG).show();
}
})
.setNegativeButton("取消",newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
}
})
.create();
adlg.show();
}
});
}
}
運行結果:
4.列表對話框
列表對話框和單選對話框用法相似。
packagecom.example.learndialog;
importandroid.content.DialogInterface;
importandroid.support.v7.app.AlertDialog;
importandroid.support.v7.app.AppCompatActivity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.Button;
publicclassMainActivityextendsAppCompatActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Buttonbt=(Button)findViewById(R.id.button);
bt.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
finalString[]starr=newString[]{"教師","經理","律師","公務員"};
AlertDialogadlg;
adlg=newAlertDialog.Builder(MainActivity.this).setTitle("列表對話框")
.setItems(starr,newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
}
})
.create();
adlg.show();
}
});
}
}
運行結果:
5.進度條對話框
ProgressDialog也是繼承于Dialog,但其擴展了緩沖加載提示的功能,為人機之間提供了良好的交互體驗。
packagecom.example.learndialog;
importandroid.app.ProgressDialog;
importandroid.content.DialogInterface;
importandroid.support.v7.app.AppCompatActivity;
importandroid.os.Bundle;
importandroid.view.View;
publicclassMainActivityextendsAppCompatActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
publicvoidprogress_circle(Viewv){
finalProgressDialogprdg1=newProgressDialog(MainActivity.this);
prdg1.setProgressStyle(ProgressDialog.STYLE_SPINNER);
prdg1.setTitle("圓形進度條對話框");
prdg1.setMessage("正在下載");
prdg1.setMax(100);
prdg1.show();
newThread(newRunnable(){
@Override
publicvoidrun(){
try{
Thread.sleep(5000);
prdg1.cancel();
}catch(InterruptedExceptione){
e.printStackTrace();
}
}
}).start();
}
publicvoidprogress_horizontal(Viewv){
finalProgressDialogprdg2=newProgressDialog(this);
prdg2.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
prdg2.setCancelable(true);
prdg2.setTitle("水平進度條對話框");
prdg2.setMax(100);
prdg2.setButton(DialogInterface.BUTTON_POSITIVE,"確定",
newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
}
});
prdg2.setButton(DialogInterface.BUTTON_NEGATIVE,"取消",
newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
}
});
prdg2.setMessage("正在下載");
prdg2.show();
newThread(newRunnable(){
@Override
publicvoidrun(){
inti=0;
while(i100){
try{
Thread.sleep(100);
prdg2.incrementProgressBy(1);
i++;
}catch(Exceptione){
}
}
prdg2.dismiss();
}
}).start();
}
}
運行結果:
6.拖動對話框
packagecom.example.learndialog;
importandroid.app.Dialog;
importandroid.support.v7.app.AppCompatActivity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.SeekBar;
importandroid.widget.TextView;
publicclassMainActivityextendsAppCompatActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
publicvoidSeekOnClick(Viewv){
DialogmyDlg=newDialog(MainActivity.this);
myDlg.setTitle("拖動對話框:亮度調節(jié)");
myDlg.setContentView(R.layout.seekbardlg);
SeekBarsb=(SeekBar)myDlg.findViewById(R.id.seekBar);
finalTextViewtv=(TextView)myDlg.findViewById(R.id.textView);
sb.setMax(100);
sb.setOnSeekBarChangeListener(newSeekBar.OnSeekBarChangeListener(){
@Override
publicvoidonProgressChanged(SeekBarseekBar,intprogress,booleanfromUser){
tv.setText("當前亮度為:"+progress);
}
@Override
publicvoidonStartTrackingTouch(SeekBarseekBar){
}
@Override
publicvoidonStopTrackingTouch(SeekBarseekBar){
}
});
myDlg.show();
}
}
運行結果:
7.日期選擇對話框
packagecom.example.datepickerdialog;
importandroid.app.DatePickerDialog;
importandroid.icu.util.Calendar;
importandroid.support.v7.app.AppCompatActivity;
importandroid.os.Bundle;
importandroid.widget.DatePicker;
importandroid.widget.Toast;
publicclassMainActivityextendsAppCompatActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Calendarc=Calendar.getInstance();
DatePickerDialogdpd=newDatePickerDialog(MainActivity.this,newDatePickerDialog.OnDateSetListener(){
@Override
publicvoidonDateSet(DatePickerview,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論