前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android经常使用的五种弹出对话框[通俗易懂]

Android经常使用的五种弹出对话框[通俗易懂]

作者头像
全栈程序员站长
发布2022-02-01 09:38:55
2K0
发布2022-02-01 09:38:55
举报

大家好,又见面了,我是全栈君。

? 一个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; } } }

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/115694.html原文链接:https://javaforall.cn

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com