大家好,又见面了,我是全栈君。
一个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