专栏首页项勇常用弹出对话窗集合

常用弹出对话窗集合

1./普通对话框/

/**普通对话框**/
private void showNormalDialog(){
    final AlertDialog.Builder normalDialog = new AlertDialog.Builder(this);
    normalDialog.setIcon(R.mipmap.tr_step_left_normal);
    normalDialog.setTitle("DiaLog Title");
    normalDialog.setMessage("DiaLog Message");
    normalDialog.setPositiveButton("Positive",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    showToast("Positive");
                }
            });
    normalDialog.setNegativeButton("Negative",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    showToast("Negative");
                }
            });
    normalDialog.show();
}

2./普通对话框 增加第三个选择按钮/

/**普通对话框 增加第三个选择按钮**/
private void showMultiBtnDialog(){
    AlertDialog.Builder normalDialog =
            new AlertDialog.Builder(MainActivity.this);
    normalDialog.setIcon(R.mipmap.tr_step_left_normal);
    normalDialog.setTitle("DiaLog Title").setMessage("DiaLog Message");
    normalDialog.setPositiveButton("Positive",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    showToast("Positive");
                }
            });
    normalDialog.setNeutralButton("Neutral2",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    showToast("Neutral2");
                }
            });
    normalDialog.setNegativeButton("Negative", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            showToast("Negative");
        }
    });
    // 创建实例并显示
    normalDialog.show();
}

3./列表选择对话框/

/**列表选择对话框**/
private void showListDialog() {
    final String[] items = { "items1","items2","items3","items4" };
    AlertDialog.Builder listDialog =
            new AlertDialog.Builder(MainActivity.this);
    listDialog.setTitle("DiaLog Title");
    listDialog.setItems(items, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            showToast("点击 "+items[which]);
        }
    });
    listDialog.show();
}

4./列表单选对话框/

/**列表单选对话框**/
int mChoice;
private void showSingleChoiceDialog(){
    final String[] items = { "items1","items2","items3","items4" };
    AlertDialog.Builder singleChoiceDialog =
            new AlertDialog.Builder(MainActivity.this);
    singleChoiceDialog.setTitle("DiaLog Title");
    // 第二个参数是默认选项,此处设置为0
    singleChoiceDialog.setSingleChoiceItems(items, mChoice,
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    mChoice = which;
                }
            });
    singleChoiceDialog.setPositiveButton("Positive",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    if (mChoice != -1) {
                        showToast("选择 "+items[mChoice]);
                    }
                }
            });
    singleChoiceDialog.show();
}

5./列表多选对话框/

/**列表多选对话框**/
ArrayList<String> mChoices = new ArrayList<>();
final boolean initChoiceSets[]={false,false,false,false};
private void showMultiChoiceDialog() {
    final String[] items = { "items1","items2","items3","items4" };
    AlertDialog.Builder multiChoiceDialog = new AlertDialog.Builder(this);
    multiChoiceDialog.setTitle("DiaLog Title");
    multiChoiceDialog.setMultiChoiceItems(items, initChoiceSets,
            new DialogInterface.OnMultiChoiceClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which,
                                    boolean isChecked) {
                    initChoiceSets[which] = isChecked;
                    if (isChecked) {
                        mChoices.add(items[which]);
                    } else {
                        String  s  = items[which];
                        Log.i("md"," findInterIdex(mChoices,s):  "+findInterIdex(mChoices,s));
                        mChoices.remove(findInterIdex(mChoices,s));
                    }
                }
            });
    multiChoiceDialog.setPositiveButton("Positive",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    int size = mChoices.size();
                    String str = "";
                    for (int i = 0; i < size; i++) {
                        str += mChoices.get(i) ;
                    }


                    showToast("选择了 "+str);
                }
            });
    multiChoiceDialog.show();
}
public static int findInterIdex(List<String> nums, String target){
    return Collections.binarySearch(nums,target);
}

6./进度弹出框/

/**进度弹出框**/
private void showProgressDialog() {
    final int MAX_PROGRESS = 100;
    final ProgressDialog progressDialog =
            new ProgressDialog(MainActivity.this);
    progressDialog.setProgress(0);
    progressDialog.setTitle("ProgressDialog Title");
    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    progressDialog.setMax(MAX_PROGRESS);
    progressDialog.show();
    /* 模拟进度增加的过程
     * 新开一个线程,每个100ms,进度增加1
     */
    new Thread(new Runnable() {
        @Override
        public void run() {
            int progress= 0;
            while (progress < MAX_PROGRESS){
                try {
                    Thread.sleep(100);
                    progress++;
                    progressDialog.setProgress(progress);
                } catch (InterruptedException e){
                    e.printStackTrace();
                }
            }
            // 进度达到最大值后,窗口消失
            progressDialog.cancel();
        }
    }).start();
}

7./输入对话框/

/**输入对话框**/
private void showInputDialog() {
    final EditText editText = new EditText(MainActivity.this);
    AlertDialog.Builder inputDialog =
            new AlertDialog.Builder(MainActivity.this);
    inputDialog.setTitle("AlertDialog Title").setView(editText);
    inputDialog.setPositiveButton("Positive",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    showToast("输入了 "+editText.getText().toString());
                }
            }).show();
}

8./自定义输入对话框/

/**自定义输入对话框**/
private void showCustomizeDialog() {
    AlertDialog.Builder customizeDialog =
            new AlertDialog.Builder(MainActivity.this);
    final View dialogView = LayoutInflater.from(MainActivity.this)
            .inflate(R.layout.dialog_customize,null);
    customizeDialog.setTitle("自定义AlertDialog Title");
    customizeDialog.setView(dialogView);
    dialogView.findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            showToast("输入了 "+((EditText)dialogView.findViewById(R.id.edit_text)).getText().toString());
        }
    });
    customizeDialog.show();
}

分割

<!-- 自定义View -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="bottom"
    >


    <EditText
        android:id="@+id/edit_text"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        />


    <ImageView
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/tr_step_left_normal"
        />
</LinearLayout>

本文分享自微信公众号 - 项勇(looseyouth_com)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 笔记56 | 管理网络的使用

    项勇
  • 回昨天的美女面试官问题

    项勇
  • 笔记22 | 学习整理开源APP(BaseAnimation)程序源码“中的通讯录效果(三)

    项勇
  • 从零开始学C++之重载 operator new 和 operator delete 实现一个简单内存泄漏跟踪器

    先来说下实现思路:可以实现一个Trace类,调用 operator new 的时候就将指向分配内存的指针、当前文件、当前行等信息添加进Trace 成员map容器...

    s1mba
  • [UWP]不怎么实用的Shape指南:自定义Shape

    这篇文章介绍了继承并自定义Shape的方法,不过,恐怕,事实上,100个xaml的程序员99个都不会用到。写出来是因为反正都学了,当作写个笔记。

    dino.c
  • Java:抽象类(abstract class) & 接口(Interface)到底有什么区别

    下面,将主要讲解Java中抽象的2种实现方式:抽象类(abstract class)和接口(Interface)

    Carson.Ho
  • 如何创建多线程

    Wait: 等待状态,没有通过notify 或者 notifyAll 唤醒,就会一直进行等待。

    chaplinthink
  • 源码阅读--RxJava(三)

    被观察者是事件的生产者,观察者是事件的消费者。上述例子中可以看出生产者无限生成事件,而消费者每2秒才能消费一个事件,这会造成事件无限堆积,最后造成OOM。 ...

    提莫队长
  • java 线程之对象的同步和异步(实例讲解)

    下面小编就为大家带来一篇java 线程之对象的同步和异步(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    挨踢小子部落阁
  • 线程同步

    mathor

扫码关注云+社区

领取腾讯云代金券