Android系统对话框和自定义对话框实现

在Android开发过程中,经常会使用到弹出对话框,Eclipse为我们的开发提供了系统默认的对话框样式,同时也允许我们设置自己的对话框

下面以一个简单的例子实现这个功能

首先,在主界面添加三个按钮,用于操作

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#fff"
    android:orientation="vertical"
    android:gravity="center_horizontal" >
    
	<Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/activity_vertical_margin"
        android:layout_marginLeft="@dimen/activity_horizontal_margin"
        android:layout_marginRight="@dimen/activity_horizontal_margin"
        android:layout_gravity="right"
        android:text="@string/main_btn1"
        android:textColor="#fff"
        android:textSize="18sp"
        android:background="#0a0"
        android:onClick="main_btn1"
        />
	
	<Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/activity_vertical_margin"
        android:layout_marginLeft="@dimen/activity_horizontal_margin"
        android:layout_marginRight="@dimen/activity_horizontal_margin"
        android:layout_gravity="right"
        android:text="@string/main_btn2"
        android:textColor="#fff"
        android:textSize="18sp"
        android:background="#0a0"
        android:onClick="main_btn2"
        />
	
	<Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/activity_vertical_margin"
        android:layout_marginLeft="@dimen/activity_horizontal_margin"
        android:layout_marginRight="@dimen/activity_horizontal_margin"
        android:layout_gravity="right"
        android:text="@string/main_btn3"
        android:textColor="#fff"
        android:textSize="18sp"
        android:background="#0a0"
        android:onClick="main_btn3"
        />

</LinearLayout>

然后,定义一个自定义的对话框

dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="#ff0">

    <TextView 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_marginTop="@dimen/activity_vertical_margin"
        android:layout_marginLeft="@dimen/activity_horizontal_margin"
        android:layout_marginRight="@dimen/activity_horizontal_margin"
        android:text="@string/hello_world"
        android:gravity="left"
        android:textAppearance="?android:attr/textAppearanceMedium" />
            
    <TextView 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_marginTop="@dimen/activity_vertical_margin"
        android:layout_marginLeft="@dimen/activity_horizontal_margin"
        android:layout_marginRight="@dimen/activity_horizontal_margin"
        android:text="自定义对话框效果"
        android:gravity="left"
        android:textAppearance="?android:attr/textAppearanceMedium" />
    
</LinearLayout>

最后,实现其功能

MainActivity.java

public class MainActivity extends Activity
{
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
	
	public void main_btn1(View view)
	{//弹出系统对话框
		
		Dialog dialog = new AlertDialog.Builder(MainActivity.this)
		.setTitle("标题")//设置标题
		.setMessage("内容:系统对话框效果")//设置内容
		.setPositiveButton("确定", //设置确定按钮
				new DialogInterface.OnClickListener()//设置事件监听
				{
					@Override
					public void onClick(DialogInterface dialog, int which)
					{
						Toast.makeText(MainActivity.this, "您点击了确定按钮", Toast.LENGTH_SHORT).show();
					}
				})
		.setNegativeButton("取消", 
				new DialogInterface.OnClickListener()
				{
					@Override
					public void onClick(DialogInterface dialog, int which)
					{
						//点击"取消"按钮之后此对话框消失
						dialog.cancel();
					}
				})
		.create();
		dialog.show();// 显示对话框
	}
	
	public void main_btn2(View view)
	{//弹出自定义对话框
		
		LayoutInflater factory = LayoutInflater.from(MainActivity.this);
		//得到自定义对话框
		final View dialogView = factory.inflate(R.layout.dialog, null);
		//创建对话框
		AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)
		.setTitle("标题")//设置标题
		//.setMessage("内容")//设置内容
		.setView(dialogView)//设置视图
		.setPositiveButton("确定", //设置确定按钮
				new DialogInterface.OnClickListener()//设置事件监听
				{
					@Override
					public void onClick(DialogInterface dialog, int which)
					{
						Toast.makeText(MainActivity.this, "您点击了确定按钮", Toast.LENGTH_SHORT).show();
					}
				})
		.setNegativeButton("取消", 
				new DialogInterface.OnClickListener()
				{
					@Override
					public void onClick(DialogInterface dialog, int which)
					{
						//点击"取消"按钮之后此对话框消失
						dialog.cancel();
					}
				})
		.create();
		dialog.show();// 显示对话框
	}
	
	public void main_btn3(View view)
	{
		final ProgressDialog dialog = ProgressDialog.show(MainActivity.this,"请等待...","正在测试...",true);
		new Thread()
		{ 
			public void run()
			{ 
				try
				{ 
					sleep(3000);
				}
				catch (Exception e)
				{
					e.printStackTrace();
				}
				finally
				{
					dialog.dismiss();
				}
			}
		}.start(); 
	}
}

下面,让我们看看效果

主界面


点击第一个按钮


点击第二个按钮


点击第三个按钮


OK,这样就完成啦!


源码下载


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值