Android学习08-----Android中的基本控件(下)(2)_ 对话框:Dialog

 

这篇我们来总结一下对话框 Dialog ,在我们做 Web 程序的时候想必大家都应该知道,对话框有的时候可以有效的给用户一个提示。废话少说,直接上代码:

1、 简单警告框

package com.iflytek.demo;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.os.Bundle;

public class SimpleDialogActivity extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		Dialog dialog = new AlertDialog.Builder(this).setTitle("对话框标题") // 创建标题
				.setMessage("显示提示信息内容") // 表示对话框中的内容
				.setIcon(R.drawable.ic_launcher) // 设置LOGO
				.create(); // 创建了一个对话框
		dialog.show(); // 显示对话框
	}
}

 

 

2、 多种操作按钮

package com.iflytek.demo;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class DialogDemoActivity extends Activity {
	private Button mybut = null; // 定义按钮

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		this.mybut = (Button) super.findViewById(R.id.mybut); // 取得按钮
		this.mybut.setOnClickListener(new OnClickListenerImpl()); // 设置事件类
	}

	private class OnClickListenerImpl implements OnClickListener {

		@Override
		public void onClick(View view) {
			Dialog dialog = new AlertDialog.Builder(DialogDemoActivity.this)
					.setTitle("确定删除?")
					// 创建标题
					.setMessage("您确定要删除该条信息吗?")
					// 表示对话框中的内容
					.setIcon(R.drawable.ic_launcher)
					// 设置LOGO
					.setPositiveButton("删除",
							new DialogInterface.OnClickListener() {
								@Override
								public void onClick(DialogInterface dialog,
										int which) {

								}
							})
					.setNeutralButton("查看详情",
							new DialogInterface.OnClickListener() {
								@Override
								public void onClick(DialogInterface dialog,
										int which) {

								}
							})
					.setNegativeButton("取消",
							new DialogInterface.OnClickListener() {
								@Override
								public void onClick(DialogInterface dialog,
										int which) {

								}
							}).create(); // 创建了一个对话框
			dialog.show(); // 显示对话框
		}
	}
}

3、退出按钮

package com.iflytek.demo;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;

public class DialogDemoActivity extends Activity {
	private ImageButton but = null; // 定义按钮

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		this.but = (ImageButton) super.findViewById(R.id.but); // 取得按钮
		this.but.setOnClickListener(new OnClickListenerImpl()); // 设置事件类
	}

	private class OnClickListenerImpl implements OnClickListener {

		@Override
		public void onClick(View view) {
			DialogDemoActivity.this.exitDialog();
		}

	}

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK) { // 返回键
			this.exitDialog();
		}
		return false;
	}

	private void exitDialog() {
		Dialog dialog = new AlertDialog.Builder(DialogDemoActivity.this)
				.setTitle("程序退出?")
				// 创建标题
				.setMessage("您确定要退出本程序吗?")
				// 表示对话框中的内容
				.setIcon(R.drawable.ic_launcher)
				// 设置LOGO
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						DialogDemoActivity.this.finish(); // 操作结束
					}
				})
				.setNegativeButton("取消", new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {

					}
				}).create(); // 创建了一个对话框
		dialog.show(); // 显示对话框
	}
}

4、列表对话框

package com.iflytek.demo;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class DialogDemoActivity extends Activity {
	private Button mybut = null; // 定义按钮
	private TextView mych = null; // 定义文本
	private String fruitData[] = new String[] { "苹果", "西瓜", "橘子" };

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		this.mybut = (Button) super.findViewById(R.id.mybut); // 取得按钮
		this.mych = (TextView) super.findViewById(R.id.mych); // 取得文本
		this.mybut.setOnClickListener(new OnClickListenerImpl()); // 设置事件类
	}

	private class OnClickListenerImpl implements OnClickListener {

		@Override
		public void onClick(View view) {
			Dialog dialog = new AlertDialog.Builder(DialogDemoActivity.this)
					.setIcon(R.drawable.ic_launcher)
					.setTitle("请选择你喜欢吃的水果?")
					.setNegativeButton("取消",
							new DialogInterface.OnClickListener() {
								@Override
								public void onClick(DialogInterface dialog,
										int which) {

								}
							})
					.setItems(DialogDemoActivity.this.fruitData,
							new DialogInterface.OnClickListener() {
								@Override
								public void onClick(DialogInterface dialog,
										int which) {
									DialogDemoActivity.this.mych
											.setText("您选择的水果是:"
													+ DialogDemoActivity.this.fruitData[which]);
								}
							}).create();
			dialog.show();
		}

	}
}

5 、列表对话框(资源文件配置选项)

res/values/fruit_data.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string-array name="fruit_labels">
        <item>苹果</item>
        <item>西瓜</item>
        <item>橘子</item>
    </string-array>

</resources>

Activity

package com.iflytek.demo;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class DialogDemoActivity extends Activity {
	private Button mybut = null ;	// 定义按钮
	private TextView mych = null ;	// 定义文本
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    	this.mybut = (Button) super.findViewById(R.id.mybut) ;	// 取得按钮
		this.mych = (TextView) super.findViewById(R.id.mych) ;	// 取得文本
		this.mybut.setOnClickListener(new OnClickListenerImpl()) ;	// 设置事件类
    }
    
    private class OnClickListenerImpl implements OnClickListener {
    	 
		@Override
		public void onClick(View view) {
			Dialog dialog = new AlertDialog.Builder(DialogDemoActivity.this)
				.setIcon(R.drawable.ic_launcher) 
				.setTitle("请选择你喜欢吃的水果?")
				.setNegativeButton("取消", new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						
					}
				}).setItems(R.array.fruit_labels, new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
									DialogDemoActivity.this.mych
											.setText("您选择的水果是:"
													+ DialogDemoActivity.this
															.getResources()
															.getStringArray(
																	R.array.fruit_labels)[which]);
					}
				}).create() ;
			dialog.show() ;
		}
		
	}
}

 

6 、单选对话框

package com.iflytek.demo;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class DialogDemoActivity extends Activity {
	private Button mybut = null; // 定义按钮
	private TextView mych = null; // 定义文本
	private TextView mytext = null; // 定义文本
	private String fruitData[] = new String[] { "苹果", "西瓜", "水蜜桃" };
	private String fruitDesc[] = new String[] {
			"苹果,植物类水果,多次花果,具有丰富的营养成分,有食疗、辅助治疗等功能。",
			"西瓜(学名:Citrullus Lanatus,英文:Watermelon),属葫芦科,原产于非洲。",
			"水蜜桃,在植物分类学上属于蔷薇科,梅属,桃亚属,为落叶小乔木。" };
	private int chNum = 0; // 保存选项

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		this.mybut = (Button) super.findViewById(R.id.mybut); // 取得按钮
		this.mych = (TextView) super.findViewById(R.id.mych); // 取得文本
		this.mytext = (TextView) super.findViewById(R.id.mytext); // 取得文本
		this.mybut.setOnClickListener(new OnClickListenerImpl()); // 设置事件类
	}

	private class OnClickListenerImpl implements OnClickListener {

		@Override
		public void onClick(View view) {
			Dialog dialog = new AlertDialog.Builder(DialogDemoActivity.this)
					.setIcon(R.drawable.ic_launcher)
					.setTitle("请选择你喜欢吃的水果?")
					.setPositiveButton("确定",
							new DialogInterface.OnClickListener() {

								@Override
								public void onClick(DialogInterface dialog,
										int which) {
									DialogDemoActivity.this.mych
											.setText(DialogDemoActivity.this.fruitData[DialogDemoActivity.this.chNum]); // 设置选项的名称
								}
							})
					.setNegativeButton("取消",
							new DialogInterface.OnClickListener() {
								@Override
								public void onClick(DialogInterface dialog,
										int which) {

								}
							})
					.setSingleChoiceItems(DialogDemoActivity.this.fruitData, 0,
							new DialogInterface.OnClickListener() {
								@Override
								public void onClick(DialogInterface dialog,
										int which) {
									DialogDemoActivity.this.mytext
											.setText(DialogDemoActivity.this.fruitDesc[which]);
									DialogDemoActivity.this.chNum = which; // 保存选项的索引
								}
							}).create();
			dialog.show();
		}

	}
}

 

7 、复选框对话框

package com.iflytek.demo;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class DialogDemoActivity extends Activity {
	private Button mybut = null; // 定义按钮
	private TextView mych = null; // 定义文本
	private String fruitData[] = new String[] { "苹果", "西瓜", "水蜜桃" };
	private boolean chData[] = new boolean[] { true, true, false };

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		this.mybut = (Button) super.findViewById(R.id.mybut); // 取得按钮
		this.mych = (TextView) super.findViewById(R.id.mych); // 取得文本
		this.mybut.setOnClickListener(new OnClickListenerImpl()); // 设置事件类
	}

	private class OnClickListenerImpl implements OnClickListener {

		@Override
		public void onClick(View view) {
			Dialog dialog = new AlertDialog.Builder(DialogDemoActivity.this)
					.setIcon(R.drawable.ic_launcher)
					.setTitle("请选择你喜欢吃的水果?")
					.setPositiveButton("确定",
							new DialogInterface.OnClickListener() {

								@Override
								public void onClick(DialogInterface dialog,
										int which) {
								}
							})
					.setNegativeButton("取消",
							new DialogInterface.OnClickListener() {
								@Override
								public void onClick(DialogInterface dialog,
										int which) {

								}
							})
					.setMultiChoiceItems(DialogDemoActivity.this.fruitData,
							DialogDemoActivity.this.chData,
							new DialogInterface.OnMultiChoiceClickListener() {
								@Override
								public void onClick(DialogInterface dialog,
										int which, boolean isChecked) {
									for (int x = 0; x < DialogDemoActivity.this.fruitData.length; x++) {
										if (x == which && isChecked) { // 当前选项被选中
											DialogDemoActivity.this.mych
													.append(DialogDemoActivity.this.fruitData[x]
															+ "、");
										}
									}
								}
							}).create();
			dialog.show();
		}

	}
}

 

8 、定制对话框

res/layout/login.xml

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TableRow >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dip"
            android:text="用户名:"
            android:textSize="8pt" />

        <EditText
            android:layout_height="wrap_content"
            android:width="60pt" />
    </TableRow>

    <TableRow >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dip"
            android:text="密    码:"
            android:textSize="8pt" />

        <EditText
            android:layout_height="wrap_content"
            android:password="true"
            android:width="60pt" />
    </TableRow>

</TableLayout>

Activity

package com.iflytek.demo;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class DialogDemoActivity extends Activity {
	private Button mybut = null; // 定义按钮

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		this.mybut = (Button) super.findViewById(R.id.mybut); // 取得按钮
		this.mybut.setOnClickListener(new OnClickListenerImpl()); // 设置事件类
	}

	private class OnClickListenerImpl implements OnClickListener {

		@Override
		public void onClick(View view) {
			LayoutInflater factory = LayoutInflater.from(DialogDemoActivity.this);
			View myView = factory.inflate(R.layout.login, null);
			Dialog dialog = new AlertDialog.Builder(DialogDemoActivity.this)
					.setIcon(R.drawable.ic_launcher)
					.setTitle("用户登录")
					.setPositiveButton("登录",
							new DialogInterface.OnClickListener() {

								@Override
								public void onClick(DialogInterface dialog,
										int which) {
								}
							})
					.setNegativeButton("取消",
							new DialogInterface.OnClickListener() {
								@Override
								public void onClick(DialogInterface dialog,
										int which) {

								}
							}).setView(myView).create();
			dialog.show();
		}

	}
}

 

9 、日期对话框

package com.iflytek.demo;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;

public class DialogDemoActivity extends Activity {
	private Button mybut = null; // 定义按钮

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		this.mybut = (Button) super.findViewById(R.id.mybut); // 取得按钮
		this.mybut.setOnClickListener(new OnClickListenerImpl()); // 设置事件类
	}

	private class OnClickListenerImpl implements OnClickListener {

		@Override
		public void onClick(View view) {
			Dialog dialog = new DatePickerDialog(DialogDemoActivity.this,
					new DatePickerDialog.OnDateSetListener() {

						@Override
						public void onDateSet(DatePicker view, int year,
								int monthOfYear, int dayOfMonth) {
							TextView text = (TextView) DialogDemoActivity.this
									.findViewById(R.id.txt);
							text.setText("更新的日期为:" + year + "-" + monthOfYear
									+ "-" + dayOfMonth);
						}
					}, 1981, 8, 19); // 默认的年、月、日
			dialog.show(); // 显示对话框
		}

	}

}

 

10 、设置时间对话框

package com.iflytek.demo;

import android.app.Activity;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;

public class DialogDemoActivity extends Activity {
	private Button mybut = null; // 定义按钮

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		this.mybut = (Button) super.findViewById(R.id.mybut); // 取得按钮
		this.mybut.setOnClickListener(new OnClickListenerImpl()); // 设置事件类
	}

	private class OnClickListenerImpl implements OnClickListener {

		@Override
		public void onClick(View view) {
			Dialog dialog = new TimePickerDialog(DialogDemoActivity.this,
					new TimePickerDialog.OnTimeSetListener() {
						@Override
						public void onTimeSet(TimePicker view, int hourOfDay,
								int minute) {
							TextView text = (TextView) DialogDemoActivity.this
									.findViewById(R.id.txt);
							text.setText("时间为:" + hourOfDay + ":" + minute);
						}
					}, 19, 20, true);
			dialog.show(); // 显示对话框
		}

	}
}

 

11 、进度对话框

package com.iflytek.demo;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class DialogDemoActivity extends Activity {
	private Button mybut = null; // 定义按钮

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		this.mybut = (Button) super.findViewById(R.id.mybut); // 取得按钮
		this.mybut.setOnClickListener(new OnClickListenerImpl()); // 设置事件类
	}

	private class OnClickListenerImpl implements OnClickListener {

		@Override
		public void onClick(View view) {
			final ProgressDialog proDia = ProgressDialog.show(
					DialogDemoActivity.this, "搜索网络", "请耐心等待...");
			new Thread() {
				public void run() { // 线程的主体类
					try {
						Thread.sleep(3000); // 运行三秒
					} catch (Exception e) {
					} finally {
						proDia.dismiss(); // 关闭对话框
					}
				}
			}.start();
			proDia.show(); // 显示对话框
		}

	}

}

 

12 、水平条进度

package com.iflytek.demo;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class DialogDemoActivity extends Activity {
	private Button mybut = null; // 定义按钮
	private static final int MAX_PROGRESS = 100; // 最大值

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		this.mybut = (Button) super.findViewById(R.id.mybut); // 取得按钮
		this.mybut.setOnClickListener(new OnClickListenerImpl()); // 设置事件类
	}

	private class OnClickListenerImpl implements OnClickListener {

		@Override
		public void onClick(View view) {
			final ProgressDialog proDia = new ProgressDialog(
					DialogDemoActivity.this);
			proDia.setTitle("搜索网络");
			proDia.setMessage("请耐心等待");
			proDia.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); // 水平进度条
			proDia.setMax(MAX_PROGRESS); // 设置进度的最大值
			proDia.setProgress(30); // 从进度30开始
			proDia.setButton("后台处理", new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					proDia.dismiss(); // 关闭对话框
				}
			});
			proDia.setButton2("详细信息", new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {

				}
			});
			proDia.onStart(); // 启动进度
			new Thread() {
				public void run() { // 线程的主体类
					for (int x = 0; x < MAX_PROGRESS; x++) {
						try {
							Thread.sleep(500); // 运行三秒
						} catch (Exception e) {
						}
						proDia.incrementProgressBy(1);
					}
					proDia.dismiss();
				}
			}.start();
			proDia.show(); // 显示对话框
		}

	}
}

 

 

 

 

你可能感兴趣的:(android,dialog)