Android對話框使用方法詳解_第1頁
Android對話框使用方法詳解_第2頁
Android對話框使用方法詳解_第3頁
Android對話框使用方法詳解_第4頁
Android對話框使用方法詳解_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第Android對話框使用方法詳解對話框(Dialog)是Android系統(tǒng)在Activity或者其他組件運行過程中提供的一種提示機制。它可以幫助應(yīng)用完成一些必要的提示功能,同時提供一些與用戶交互的功能。

對話框分為很多種,下面將一一介紹。

1.提示對話框

Android系統(tǒng)提供的對話框父類為Dialog,里面并沒有實現(xiàn)對話框的具體類型,比如單選、多選、列表等對話框,僅提供一個框架和規(guī)范。系統(tǒng)為開發(fā)者提供了一個多功能的對話框類AlertDialog,里面封裝了各種對話框的樣式,開發(fā)者只須提供相應(yīng)的顯示數(shù)據(jù)和按鍵的響應(yīng)監(jiān)聽就可以。

提示對話框所使用的就是系統(tǒng)封裝好的對話框AlertDialog的實例對象。AlertDialog并不提供對外的構(gòu)造方法,即不能直接通過AlertDialog的構(gòu)造函數(shù)來生產(chǎn)一個AlertDialog。因為AlertDialog所有的構(gòu)造方法都是protected的。所以為了獲取AlertDialog對象,系統(tǒng)提供了一個靜態(tài)內(nèi)部類Builder讓我們使用,通過Builder可以創(chuàng)建AlertDialog對象。

(1)創(chuàng)建AlertDialog.Builder實例對象。

(2)通過Builder對象設(shè)置對話框的屬性。

setTitle()設(shè)置標題setIcon()設(shè)置圖標setMessage()設(shè)置要顯示的內(nèi)容setItems設(shè)置在對話框中顯示的項目列表setView設(shè)置自定義的對話框樣式setPositiveButton()設(shè)置確定按鈕setNegativeButton()設(shè)置取消按鈕setNeutralButton()設(shè)置中立按鈕setSingleChoiceItems單選框setMultiChoiceItems復(fù)選框

(3)調(diào)用Builder對象的create()方法創(chuàng)建AlertDialog對話框

(4)調(diào)用AlertDialog的show()方法來顯示對話框

(5)調(diào)用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("確定要關(guān)閉本應(yīng)用程序嗎?");

adBd.setPositiveButton("確定",newDialogInterface.OnClickListener(){

@Override

publicvoidonClick(DialogInterfacedialog,intwhich){

finish();

}

});

adBd.setNegativeButton("取消",newDialogInterface.OnClickListener(){

@Override

publicvoidonClick(DialogInterfacedialog,intwhich){

}

});

aldg=adBd.create();

aldg.show();

}

});

}

}

運行結(jié)果:

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[]{"教師","經(jīng)理","律師","公務(wù)員"};

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();

}

});

}

}

運行結(jié)果:

3.復(fù)選對話框

復(fù)選對話框和單選對話框用法相似。

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[]{"教師","經(jīng)理","律師","公務(wù)員"};

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();

}

});

}

}

運行結(jié)果:

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[]{"教師","經(jīng)理","律師","公務(wù)員"};

AlertDialogadlg;

adlg=newAlertDialog.Builder(MainActivity.this).setTitle("列表對話框")

.setItems(starr,newDialogInterface.OnClickListener(){

@Override

publicvoidonClick(DialogInterfacedialog,intwhich){

}

})

.create();

adlg.show();

}

});

}

}

運行結(jié)果:

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();

}

}

運行結(jié)果:

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("拖動對話框:亮度調(diào)節(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("當(dāng)前亮度為:"+progress);

}

@Override

publicvoidonStartTrackingTouch(SeekBarseekBar){

}

@Override

publicvoidonStopTrackingTouch(SeekBarseekBar){

}

});

myDlg.show();

}

}

運行結(jié)果:

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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論