在 Android 中个种对话框效果的应用。常用对话框的使用,弹出式对话框、日期选择对话框、时间选择对话框、进度条对话框。这篇资料会让我们更了解Dialog的用法,下面我们就来看看代码吧:
<?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:id="@+id/txtMsg" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> <Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content"> </Button> <Button android:id="@+id/btn2" android:layout_width="wrap_content" android:layout_height="wrap_content"> </Button> <Button android:id="@+id/btn3" android:layout_width="wrap_content" android:layout_height="wrap_content"> </Button> <Button android:id="@+id/btn4" android:layout_width="wrap_content" android:layout_height="wrap_content"> </Button> <Button android:id="@+id/btn5" android:layout_width="wrap_content" android:layout_height="wrap_content"> </Button> <Button android:id="@+id/btn6" android:layout_width="wrap_content" android:layout_height="wrap_content"> </Button> </LinearLayout>
这里我们一下定义了6个button,这些Button都是有用的,每一个Button都代表什么意思来让我们看看下面的代码:
package eoe.android.dialog; import java.util.Calendar; import android.app.Activity; import android.app.AlertDialog; import android.app.DatePickerDialog; import android.app.Dialog; import android.app.ProgressDialog; import android.app.TimePickerDialog; import android.app.DatePickerDialog.OnDateSetListener; import android.app.TimePickerDialog.OnTimeSetListener; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.os.Bundle; import android.view.View; import android.widget.DatePicker; import android.widget.TextView; import android.widget.TimePicker; import android.widget.Button; public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 弹出式对话框的 Demo。先调用 Builder(),在 Create(), 需要显示对话框的是后再调用 show() AlertDialog dialog = new AlertDialog.Builder(this).setTitle("弹出对话框").create(); dialog.show(); // 以下是各种对话框的 Demo MyButtonClickListener listener = new MyButtonClickListener(); Button btn1 = (Button) this.findViewById(R.id.btn1); btn1.setText("简单的对话框的 Demo"); btn1.setOnClickListener(listener); Button btn2 = (Button) this.findViewById(R.id.btn2); btn2.setText("包括常用设置的对话框(数据来自 xml)"); btn2.setOnClickListener(listener); Button btn3 = (Button) this.findViewById(R.id.btn3); btn3.setText("弹出的对话框的内容是一个 View"); btn3.setOnClickListener(listener); Button btn4 = (Button) this.findViewById(R.id.btn4); btn4.setText("日期选择对话框"); btn4.setOnClickListener(listener); Button btn5 = (Button) this.findViewById(R.id.btn5); btn5.setText("时间选择对话框"); btn5.setOnClickListener(listener); Button btn6 = (Button) this.findViewById(R.id.btn6); btn6.setText("进度条对话框"); btn6.setOnClickListener(listener); } class MyButtonClickListener implements View.OnClickListener { @Override public void onClick(View v) { // 具体的对话框的实现可以通过重写 onCreateDialog 完成 switch (v.getId()) { case R.id.btn1: Main.this.showDialog(0); break; case R.id.btn2: Main.this.showDialog(1); break; case R.id.btn3: Main.this.showDialog(2); break; case R.id.btn4: Main.this.showDialog(3); break; case R.id.btn5: Main.this.showDialog(4); break; case R.id.btn6: Main.this.showDialog(5); break; } } } @Override public Dialog onCreateDialog(int id) { switch (id) { case 0: // 一个简单的弹出对话框 return new AlertDialog.Builder(this).setTitle("这是一个简单的弹出对话框的 Demo") .create(); case 1: // 一个相对复杂的弹出对话框 return new AlertDialog.Builder(this) .setTitle("标题") // 设置标题 // .setCustomTitle(View) // 以一个 View 作为标题 .setIcon(R.drawable.icon01) // 设置标题图片 // .setMessage("信息") // 需要显示的弹出内容 .setPositiveButton("确定", new OnClickListener() { // 设置弹框的确认按钮所显示的文本,以及单击按钮后的响应行为 @Override public void onClick(DialogInterface a0, int a1) { TextView txtMsg = (TextView) Main.this.findViewById(R.id.txtMsg); txtMsg.append("单击了对话框上的“确认”按钮\n"); } }) .setItems(R.array.ary, new DialogInterface.OnClickListener() { // 弹框所显示的内容来自一个数组。数组中的数据会一行一行地依次排列 public void onClick(DialogInterface dialog, int which) { } }) // 其他常用方法如下 // .setMultiChoiceItems(arg0, arg1, arg2) // .setSingleChoiceItems(arg0, arg1, arg2) // .setNeutralButton(arg0, arg1) // .setNegativeButton(arg0, arg1) .create(); case 2: // 弹出对话框为指定的 View 的 Demo return new AlertDialog.Builder(this).setTitle("此对话框的内容是一个 View") .setView(this.findViewById(R.layout.view)).create(); case 3: // 弹出日期选择对话框 Calendar c = Calendar.getInstance(); return new DatePickerDialog(this, new OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { TextView txtMsg = (TextView) Main.this.findViewById(R.id.txtMsg); txtMsg.append("新设置的日期为:" + String.valueOf(year) + "-" + String.valueOf(monthOfYear) + "-" + String.valueOf(dayOfMonth) + "\n"); } }, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE)); case 4: // 弹出时间选择对话框 Calendar c2 = Calendar.getInstance(); return new TimePickerDialog(this, new OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { TextView txtMsg = (TextView) Main.this.findViewById(R.id.txtMsg); txtMsg.append("新设置的时间为:" + String.valueOf(hourOfDay) + ":" + String.valueOf(minute) + "\n"); } }, c2.get(Calendar.HOUR), c2.get(Calendar.MINUTE), true); case 5: // 弹出进度条对话框 ProgressDialog progress = new ProgressDialog(this); progress.setMessage("loading..."); return progress; default: return null; } } }