Android常用的五种弹出对话框 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    一个Android开发中常用对话框的小例子,共有五种对话框:普通弹出对话框,单选对话框,多选对话框,输入对话框及进度条样式对话框:

   

xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >

    android:id="@+id/common_dialog"

    android:layout_width="match_parent"

    android:layout_height="40dp"

    android:text="普通对话框"

    android:textSize="16sp"

    android:layout_marginTop="10dp" />

    android:id="@+id/radio_dialog"

    android:layout_width="match_parent"

    android:layout_height="40dp"

    android:text="单选对话框"

    android:textSize="16sp"

    android:layout_marginTop="10dp" />

    android:id="@+id/check_dialog"

    android:layout_width="match_parent"

    android:layout_height="40dp"

    android:text="多选对话框"

    android:textSize="16sp"

    android:layout_marginTop="10dp" />

    android:id="@+id/input_dialog"

    android:layout_width="match_parent"

    android:layout_height="40dp"

    android:text="输入文字对话框"

    android:textSize="16sp"

    android:layout_marginTop="10dp" />

    android:id="@+id/progress_dialog"

    android:layout_width="match_parent"

    android:layout_height="40dp"

    android:text="进度条对话框"

    android:textSize="16sp"

    android:layout_marginTop="10dp" />

   

   

   

   

   

    下面是输入内容的简单布局activity_input.xml

   

xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/LinearLayout1"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >

   

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="@string/hello_world" />

   

    android:id="@+id/uname"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content" />

   

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="@string/hello_world" />

   

    android:id="@+id/upass"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content" />

   

   

   

   

    代码及注释:

    public class MainActivity extends Activity implements OnClickListener {

    /**单选框模拟标题 大学*/

    private final static int CHECKED_ENU = 0;

    /**单选框模拟标题 高中*/

    private final static int CHECKED_SEL = 1;

    /**单选框模拟标题 初中*/

    private final static int CHECKED_CHU = 2;

    /**复选按钮状态为全选 */

    private boolean[] checked = { true, true, true, false };

    /**模拟的进度值 */

    private int progressNumber;

    /**进度对话框 */

    private ProgressDialog progressDialog;

    /**对应按钮*/

    private Button commonBtn, radioBtn, checkBtn, inputBtn, progressBtn;

    @Override

    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    initViews();

    initListeners();

    }

    /**初始化UI控件*/

    private void initViews() {

    this.commonBtn = (Button) findViewById(R.id.common_dialog);

    this.radioBtn = (Button) findViewById(R.id.radio_dialog);

    this.checkBtn = (Button) findViewById(R.id.check_dialog);

    this.inputBtn = (Button) findViewById(R.id.input_dialog);

    this.progressBtn = (Button) findViewById(R.id.progress_dialog);

    }

    /**注册按钮监听事件*/

    private void initListeners() {

    this.commonBtn.setOnClickListener(this);

    this.radioBtn.setOnClickListener(this);

    this.checkBtn.setOnClickListener(this);

    this.inputBtn.setOnClickListener(this);

    this.progressBtn.setOnClickListener(this);

    }

    /**普通对话框 */

    private Dialog buildAlertDialog() {

    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    builder.setIcon(R.drawable.ic_launcher);

    builder.setTitle("对话框");

    builder.setMessage("您的密码不对!!");

    ImageView imageView = new ImageView(this);

    imageView.setImageResource(R.drawable.mm1);

    /**设置背景图片*/

    builder.setView(imageView);

    /**左边按钮*/

    builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

    @Override

    public void onClick(DialogInterface dialog, int which) {

    setTitle("您点击的是左边确定按钮!");

    }

    });

    /**中间按钮*/

    builder.setNeutralButton("详情", new DialogInterface.OnClickListener() {

    @Override

    public void onClick(DialogInterface dialog, int which) {

    setTitle("您点击的是中间详情按钮!");

    }

    });

    /**右边按钮*/

    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

    @Override

    public void onClick(DialogInterface dialog, int which) {

    // TODO Auto-generated method stub

    setTitle("您点击的是右边取消按钮!");

    }

    });

    return builder.create();

    }

    /**单选按钮弹出框 */

    private Dialog buildAlertDialog_radio() {

    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    builder.setIcon(R.drawable.ic_launcher);

    builder.setTitle("对话框");

    /**单选按钮,默认高中被选中*/

    builder.setSingleChoiceItems(new String[] { "大学", "高中", "初中", "小学" }, 1, new DialogInterface.OnClickListener() {

    @Override

    public void onClick(DialogInterface dialog, int which) {

    // TODO Auto-generated method stub

    switch (which) {

    case CHECKED_ENU:

    setTitle("大学");

    break;

    case CHECKED_SEL:

    setTitle("高中");

    break;

    case CHECKED_CHU:

    setTitle("初中");

    break;

    default:

    setTitle("小学");

    break;

    }

    }

    });

    builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

    @Override

    public void onClick(DialogInterface dialog, int which) {

    setTitle("您点击的是左边确定按钮!");

    }

    });

    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

    @Override

    public void onClick(DialogInterface dialog, int which) {

    setTitle("您点击的是右边取消按钮!");

    }

    });

    return builder.create();

    }

    /**可以多选按钮弹出框 */

    private Dialog buildAlertDialog_checkbox() {

    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    builder.setIcon(R.drawable.ic_launcher);

    builder.setTitle("对话框");

    /**复选按钮*/

    builder.setMultiChoiceItems(new String[] { "大学", "高中", "初中", "小学" }, checked, new DialogInterface.OnMultiChoiceClickListener() {

    @Override

    public void onClick(DialogInterface dialog, int which, boolean isChecked) {

    setTitle("which=" + which + "-----" + "isChecked=" + isChecked);

    }

    });

    builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

    @Override

    public void onClick(DialogInterface dialog, int which) {

    setTitle("您点击了确定按钮!");

    }

    });

    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

    @Override

    public void onClick(DialogInterface dialog, int which) {

    // TODO Auto-generated method stub

    setTitle("您点击的是了取消按钮!");

    }

    });

    return builder.create();

    }

    /**含可以输入文本的弹出框 */

    private Dialog buildAlertDialog_input() {

    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    builder.setIcon(R.drawable.ic_launcher);

    builder.setTitle("对话框");

    LayoutInflater inflater = LayoutInflater.from(this);

    builder.setView(inflater.inflate(R.layout.activity_input, null));

    builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

    @Override

    public void onClick(DialogInterface dialog, int which) {

    setTitle("您点击的是确定按钮!");

    }

    });

    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

    @Override

    public void onClick(DialogInterface dialog, int which) {

    setTitle("您点击的是取消按钮!");

    }

    });

    return builder.create();

    }

    /**进度对话框 */

    private Dialog buildAlertDialog_progress() {

    progressDialog = new ProgressDialog(this);

    progressDialog.setTitle("进度条");

    progressDialog.setMessage("正在下载...........");

    /**进度条样式 */

    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

    /**模糊效果 */

    progressDialog.setIndeterminate(false);

    return progressDialog;

    }

    /**每隔0.3秒更新一次进度 */

    public void updateProgress() {

    new Thread() {

    @Override

    public void run() {

    try {

    while (progressNumber <= 100) {

    progressDialog.setProgress(progressNumber++);

    Thread.sleep(300);

    super.run();

    }

    /**下载完后,关闭下载框 */

    progressDialog.cancel();

    } catch (InterruptedException e) {

    e.printStackTrace();

    }

    }

    }.start();

    }

    @Override

    public void onClick(View v) {

    switch (v.getId()) {

    case R.id.common_dialog:

    buildAlertDialog().show();

    break;

    case R.id.radio_dialog:

    buildAlertDialog_radio().show();

    break;

    case R.id.check_dialog:

    buildAlertDialog_checkbox().show();

    break;

    case R.id.input_dialog:

    buildAlertDialog_input().show();

    break;

    case R.id.progress_dialog:

    buildAlertDialog_progress().show();

    updateProgress();

    break;

    default:

    break;

    }

    }

    }

最新文章