zoukankan      html  css  js  c++  java
  • Android经常使用的五种弹出对话框

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

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >


        <Button
            android:id="@+id/common_dialog"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:text="普通对话框"
            android:textSize="16sp"
            android:layout_marginTop="10dp" />


        <Button
            android:id="@+id/radio_dialog"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:text="单选对话框"
            android:textSize="16sp"
            android:layout_marginTop="10dp"  />


        <Button
            android:id="@+id/check_dialog"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:text="多选对话框" 
            android:textSize="16sp"
            android:layout_marginTop="10dp" />


        <Button
            android:id="@+id/input_dialog"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:text="输入文字对话框" 
            android:textSize="16sp"
            android:layout_marginTop="10dp" />


        <Button
            android:id="@+id/progress_dialog"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:text="进度条对话框" 
            android:textSize="16sp"
            android:layout_marginTop="10dp" />


    </LinearLayout>

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

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/LinearLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />


        <EditText
            android:id="@+id/uname"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />


        <EditText
            android:id="@+id/upass"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />


    </LinearLayout>

    代码及凝视:

    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;
    /**复选button状态为全选 */
    private boolean[] checked = { true, true, true, false };
    /**模拟的进度值 */
    private int progressNumber;
    /**进度对话框 */
    private ProgressDialog progressDialog;
    /**相应button*/
    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);
    }


    /**注冊button监听事件*/
    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("您的password不正确!!");


    ImageView imageView = new ImageView(this);
    imageView.setImageResource(R.drawable.mm1);
    /**设置背景图片*/
    builder.setView(imageView);
    /**左边button*/
    builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
    setTitle("您点击的是左边确定button!");
    }
    });
    /**中间button*/
    builder.setNeutralButton("详情", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
    setTitle("您点击的是中间详情button!");
    }
    });
    /**右边button*/
    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
    // TODO Auto-generated method stub
    setTitle("您点击的是右边取消button!");
    }
    });
    return builder.create();
    }


    /**单选button弹出框 */
    private Dialog buildAlertDialog_radio() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setIcon(R.drawable.ic_launcher);
    builder.setTitle("对话框");
    /**单选button,默认高中被选中*/
    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("您点击的是左边确定button!");
    }
    });
    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
    setTitle("您点击的是右边取消button!");
    }
    });
    return builder.create();
    }


    /**能够多选button弹出框 */
    private Dialog buildAlertDialog_checkbox() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setIcon(R.drawable.ic_launcher);
    builder.setTitle("对话框");
    /**复选button*/
    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("您点击了确定button!");
    }
    });
    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
    // TODO Auto-generated method stub
    setTitle("您点击的是了取消button!");
    }
    });
    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("您点击的是确定button!");
    }
    });
    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
    setTitle("您点击的是取消button!");
    }
    });
    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;
    }
    }
    }

  • 相关阅读:
    [翻译] Blocks and Variables
    UIView独占响应事件
    iOS中block类型大全
    Erlang入门(二)—并发编程
    Erlang入门(一)
    学习Erlang--1、入门
    一位Erlang程序员的自白
    安装ejabberd2并配置MySQL为其数据库
    JDBC 与ODBC的区别
    ejabberd的多域名(domain)设置
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5269844.html
Copyright © 2011-2022 走看看