1.提示对话框
- 界面
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="提示对话框"
android:onClick="onDialogClick1"/>
- 主方法
public void onDialogClick1(View v){//使用提示对话框实现退出程序的提示
new AlertDialog.Builder(MainActivity.this)//设置相关属性,需要在当前活动中
.setIcon(android.R.drawable.alert_dark_frame)//设置图标
.setTitle("注意!!!" )//设置标题
.setMessage("确定要退出吗???")//设置内容
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();//关闭当前活动
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.create().show();
}
2.单选对话框
- 界面
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="单选对话框"
android:onClick="onDialogClick2"/>
- 主方法
public void onDialogClick2(View v){
final String[] items={"男","女","F","M"};//准备数据源
AlertDialog dialog=new AlertDialog.Builder(this)
.setTitle("单选对话框")
.setIcon(R.drawable.cat_small)
.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,items[which],Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
})
.create();
dialog.show();
}
3.复选对话框
- 界面
<Button
android:id="@+id/button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="复选对话框"
android:onClick="onDialogClick3"/>
- 主方法
public void onDialogClick3(View v){
final String[] items3={"北京","上海","广州","深圳","天津","保定"};
AlertDialog dialog=new AlertDialog.Builder(this)
.setTitle("多选对话框")
.setIcon(R.drawable.cat_small)
.setPositiveButton("确定",null)
.setNegativeButton("取消",null)
.setMultiChoiceItems(items3, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
String itemStr=items3[which];
Toast.makeText(MainActivity.this,"选择了"+itemStr,Toast.LENGTH_SHORT).show();
}
})
.create();
dialog.show();
}
4.列表对话框
列表对话框
- 界面
<Button
android:id="@+id/button4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="列表对话框"
android:onClick="onDialogClick4"/>
- 主方法
public void onDialogClick4(View v){
final String[] items4={"北京","上海","广州","深圳","天津","保定"};
AlertDialog dialog=new AlertDialog.Builder(this)
.setTitle("列表对话框")
.setIcon(R.drawable.cat_small)
.setItems(items4, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,items4[which],Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
})
.create();
dialog.show();
}
5.进度条对话框
- 界面
<Button
android:id="@+id/button5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="进度条对话框"
android:onClick="onDialogClick5"/>
- 主方法
public void onDialogClick5(View v){
ProgressDialog pd1=ProgressDialog.show(this,"提示","正在登录中",false,true);
}
6.日期选择对话框
- 界面
<Button
android:id="@+id/button6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="日期选择对话框"
android:onClick="onDialogClick6"/>
- 主方法
public void onDialogClick6(View v){
Calendar calendar=Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());//读出当前时间
int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH);
final int day=calendar.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dpd=new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {//当时间被设置后回调的方法
Toast.makeText(MainActivity.this,year+"年"+month+"月"+day+"日",Toast.LENGTH_SHORT).show();
}
},year,month,day);
dpd.show();
}
一般的对话框都要显式调用dismiss()方法来回收对话框,在DatePickerDialog对话框中,自带的两个按键的监听中已经默认调用dissmiss()了。
7.时间选择对话框
- 界面
<Button
android:id="@+id/button7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="时间选择对话框"
android:onClick="onDialogClick7"/>
- 主方法
public void onDialogClick7(View v){
Calendar calendar=Calendar.getInstance();
new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Toast.makeText(MainActivity.this,hourOfDay+":"+minute+"!",Toast.LENGTH_SHORT).show();
}
},
calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE),true).show();
}
8.拖动对话框
使用步骤如下:
(1)准备一个简单的布局文件,里面设置SeekBar控件;
(2)直接创建Dialog实例对象(Dialog dialog = new Dialog(…));
(3)利用对话框实例将布局文件设置到对话框中(dialog.setContentView(…));
(4)显示对话框dialog .show();
(5)通过对话框实例找到设置进去的控件(SeekBar sbar = dialog .findViewById(seekBar的id));
(6)进行响应的监听sBar.setOnSeekBarChangeListener()。
- 界面
<Button
android:id="@+id/button8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="拖动对话框"
android:onClick="onDialogClick8"/>
- Seek.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:layout_below = "@+id/seekBar1"
android:layout_centerHorizontal = "true"/>
<SeekBar
android:layout_width="match_parent"
android:layout_height="100dip"
android:id="@+id/seekBar1"/>
</RelativeLayout>
- 主方法
public void onDialogClick8(View v){
Dialog dialog=new Dialog(this);
dialog.setTitle("拖动对话框");
dialog.setContentView(R.layout.seek);
SeekBar sbar=(SeekBar)dialog.findViewById(R.id.seekBar1);
sbar.setMax(100);
final TextView tview=(TextView)dialog.findViewById(R.id.tv_result);
tview.setText("当前进度为:"+sbar.getProgress());
sbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
tview.setText("设置音量大小为:"+seekBar.getProgress());
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
dialog.show();
}