当前位置:阳光沙滩 >Android > 查看文章

1.Android中常用的对话框有通知对话框、列表对话框、单选对话框、多选对话框以及进度对话框

其中,通知对话框、列表对话框、单选以及多选对话框由AlertDialog.Builder创建,进度对话框由ProgressDialog创建。

常用方法:

  • setIcon 设置对话框标题栏左侧的那个图标
  • setTitle 设置对话框标题栏的提示信息
  • setMessage 设置对话框主体部分的提示信息
  • setPositiveButton 设置确定按钮
  • setNegativeButton 设置取消按钮
  • setCancelable 设置对话框在点击返回键时是否会关闭
  • show 显示对话框

2.栗子演示:

2015-09-19_020750

布局代码

<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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:onClick="notifyDialog"
        android:text="通知对话框" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="单选对话框" 
        android:onClick="singleDialog"/>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="多选对话框" 
        android:onClick="multDialog"/>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="进度对话框" 
        android:onClick="progressDialog"/>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="列表对话框" 
        android:onClick="listDialog"/>

</LinearLayout>

代码如下:

2015-09-19_020803

package com.sunofbeaches.dialog;

import android.app.Activity;
import android.app.AlertDialog.Builder;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	public void notifyDialog(View v) {
		// 这是通知对话框
		Builder builder = new Builder(this);
		builder.setTitle("通知");
		builder.setIcon(R.drawable.ic_launcher);
		builder.setMessage("这是消息对话框,from sunofbeaches.com");
		builder.setPositiveButton("我知道了", new OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				Toast.makeText(MainActivity.this, "你知道毛线", Toast.LENGTH_SHORT)
						.show();
			}
		});
		builder.setNeutralButton("我不知道", new OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				Toast.makeText(MainActivity.this, "你不知道毛线啊!",
						Toast.LENGTH_SHORT).show();
			}
		});
		builder.show();
	}

	// 这是单选对话框
	public void singleDialog(View v) {
		Builder builder = new Builder(this);
		builder.setTitle("单选对话框");
		builder.setIcon(R.drawable.ic_launcher);
		final String[] cities = { "广州", "花都", "番禺", "香港", "澳门",
				"深圳" };

		/*
		 * 参数解释,如果大家不记得参数了,就直接用提示键即可,我也没记住,嘻嘻。 
		 * 第一个参数是:数据,类型是字符串序列数组
		 * 第二个参数是:默认选中的项,第一项为0,其实也就是上面数组的角标 
		 * 第三个阐述是点击事件,因为只玩一次,所以可以用匿名内部类编写。
		 */
		builder.setSingleChoiceItems(cities, 0, new OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				Toast.makeText(MainActivity.this, "你选择的是 : " + cities[which],
						Toast.LENGTH_LONG).show();
			}
		});
		builder.setPositiveButton("确定", new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				
				Toast.makeText(MainActivity.this, "你点击了确定", 0).show();
			}
		});
			builder.setNegativeButton("取消", new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				
				Toast.makeText(MainActivity.this, "你点击了取消", 0).show();
			}
		});
		builder.show();
	}
	
	//多选对话框
	public void multDialog(View v){
		
		Builder builder = new Builder(this);
		
		builder.setTitle("多选对话框");
		builder.setIcon(R.drawable.ic_launcher);
		
		final String[] hobbis = {"旅行","写代码","赚钱","钓鱼","骑行"};
		
		/**
		 * 第一个参数是传入备选项
		 * 第二个是默认选中项
		 * 第三个是监听器
		 * 
		 * 这里的演示,可能会让你感觉有卡顿,其实不是卡顿现象,因为 这个土司显示出来的时候,
		 * 会显示一下时间,如果你选择太快,则这个土司还没消失,所以感觉另外一个土司没出来,之后才
		 * 慢慢出来,从而感觉卡顿。不是卡顿现象。
		 */
		builder.setMultiChoiceItems(hobbis,new boolean[]{false,false,false,false,false} , new OnMultiChoiceClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which, boolean isChecked) {
				
					Toast.makeText(MainActivity.this, "你选择的是 : " + hobbis[which],
							Toast.LENGTH_LONG).show();
				}
			});
			builder.setPositiveButton("确定", new OnClickListener() {
				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					
					Toast.makeText(MainActivity.this, "你点击了确定", 0).show();
				}
			});
				builder.setNegativeButton("取消", new OnClickListener() {
				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					
					Toast.makeText(MainActivity.this, "你点击了取消", 0).show();
				}
			});
			builder.show();
	}
	
	//进度对话框,这些对话框可以缓解用户在等待加载或者下载 时的焦虑感觉。
	public void progressDialog(View v){
		final ProgressDialog progressDialog = new ProgressDialog(this);
		progressDialog.setTitle("进度对话框");
		progressDialog.setIcon(R.drawable.ic_launcher);
		progressDialog.setMessage("玩命下载中....");
		
		//设置样式
		progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
		
		//设置最大值
		progressDialog.setMax(100);
		
		new Thread(){
			public void run(){
				while(true){
					SystemClock.sleep(100);
					progressDialog.incrementProgressBy(2);
					
					if(progressDialog.getMax()==progressDialog.getProgress()){
						//如果加到100了,那么就把消息传给主线程处理
						
						Message msg = new Message();
						msg.obj = "数据下载成功!";
						handler.sendMessage(msg);
						progressDialog.dismiss();
						
					}
				}
			}
		}.start();
		progressDialog.show();
		
	}
	
	//列表对话框
	public void listDialog(View v){
		Builder builder = new Builder(this);
		builder.setTitle("列表对话框");
		builder.setIcon(R.drawable.ic_launcher);
		
		final String[] cities = { "广州", "花都", "番禺", "香港", "澳门",
		"深圳" };
		builder.setItems(cities, new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				Toast.makeText(MainActivity.this, "你选择的是:"+cities[which], 0).show();
			}
		});
		builder.show();
	}
	
	//处理子线程的消息
	Handler handler = new Handler(){

		@Override
		public void handleMessage(Message msg) {
			super.handleMessage(msg);
			//接收数据
			Toast.makeText(MainActivity.this, (String) msg.obj, Toast.LENGTH_SHORT).show();
		}
	};
	

}

好啦,到这里基本上写完了,嘻嘻,我还是睡觉去吧,已经凌晨两点多了。全世界晚安哦!下次我再写多点别的,希望大家学多点东西哈,嘻嘻,谢谢你的支持!

本文链接:https://blog.sunofbeaches.com/archives/335 转载请注明出处.
如果喜欢:点此订阅本站
7K
为您推荐
各种观点