Android入门开发之Dialog实例

转载请注明出处:http://write.blog.csdn.net/postedit/52476237

一、Dilog使用实例

activity_main.xml文件:

<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" 
    tools:context=".MainActivity" >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10pt"
        android:text="对话框测试" />
    <Button 
        android:id="@+id/simpleButton"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:text="简单对话框"/>
    <Button 
        android:id="@+id/listButton"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:text="列表对话框"/>
    <Button 
        android:id="@+id/multiButton"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:text="多选对话框"/>
    <Button 
        android:id="@+id/loginButton"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:text="登录对话框"/>
    <Button 
        android:id="@+id/timerButton"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:text="时间对话框"/>
    <Button 
        android:id="@+id/popupButton"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:text="弹出对话框"/>
    <Button 
        android:id="@+id/customButton"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:text="自定义对话框"/>
</LinearLayout>
user_login.xml文件:为登录对话框提供布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/editText1"
        android:layout_marginLeft="28dp"
        android:layout_marginTop="56dp"
        android:text="密码:" />
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_alignParentTop="true"
        android:layout_marginTop="100dp"
        android:text="账号:" />
    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView2"
        android:layout_alignBottom="@+id/textView2"
        android:layout_toRightOf="@+id/textView2"
        android:ems="10" />
    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView1"
        android:layout_alignBottom="@+id/textView1"
        android:layout_alignLeft="@+id/editText2"
        android:ems="10" >
    </EditText>
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_below="@+id/editText2"
        android:layout_marginLeft="32dp"
        android:layout_marginTop="48dp"
        android:text="登录" />
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button1"
        android:layout_alignBottom="@+id/button1"
        android:layout_alignRight="@+id/editText2"
        android:layout_marginRight="16dp"
        android:text="注册" />
</RelativeLayout>
popup.xml文件:为弹出窗口提供布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
    <TextView
        android:id="@+id/Text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="我是弹出窗口"
        android:textSize="10pt" />
    <Button
        android:id="@+id/closeButton"
        android:layout_width="100dp"
        android:layout_height="60dp"
        android:layout_alignBaseline="@+id/sureButton"
        android:layout_alignBottom="@+id/sureButton"
        android:layout_alignParentRight="true"
        android:layout_marginRight="60dp"
        android:text="关闭" />
    <Button
        android:id="@+id/sureButton"
        android:layout_width="100dp"
        android:layout_height="60dp"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/Text"
        android:layout_marginLeft="38dp"
        android:layout_marginTop="30dp"
        android:text="确定" />
</RelativeLayout>

MainActivity.java源文件:

package com.example.alertdialogtest;
/**
 * copyright : qiao
 * date: 2016/9/4
 */
import java.lang.reflect.Field;
import java.util.Calendar;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.Toast;

public class MainActivity  extends Activity {

	protected static final int PROGRESS_DIALOG = 0x112;
	private Button simpleButton;
	private Button listButton;
	private Button multiButton;
	private Button loginButton;
	private Button timerButton;
	private Button progressButton;
	private Button customButton;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initSimpleButton();
		initListButton();
		initMultiButton();
		initLoginButton();
		initTimerButton();
		initPopupButton();
		initCustomButton();
	}
	//初始化简单对话框
    private void initSimpleButton(){
    	simpleButton = (Button)findViewById(R.id.simpleButton);
    	 final Builder builder =new  AlertDialog.Builder(this);
    	simpleButton.setOnClickListener(new OnClickListener() {			
			@Override
			public void onClick(View v) {
                   builder.setIcon(R.drawable.ic_launcher);
                   builder.setTitle("普通对话框");
                   builder.setMessage("Hello");
                   builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
   					@Override
   					public void onClick(DialogInterface dialog, int which) {
   					    try   
   	                    {  
   	                        Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing" );
   	                        field.setAccessible( true );  
   	                        field.set(dialog, true );  
   	                        dialog.dismiss();  
   	                    }  
   	                    catch (Exception e)  
   	                    {  
   	                        e.printStackTrace();  
   	                    }  
   						  dialog.cancel();
   					}
   				}) ;
                   builder.setPositiveButton("确定",new DialogInterface.OnClickListener() {
					@Override
					     public void onClick(DialogInterface dialog, int which) {
					    try   
	                    {  
	                        Field field = dialog.getClass().getSuperclass().getDeclaredField(  "mShowing" );  
	                        field.setAccessible( true );   
	                        field.set(dialog, false );  
	                        dialog.dismiss();  
	                    }  
	                    catch (Exception e)  
	                    {  
	                        e.printStackTrace();  
	                    }  
						    Toast.makeText(getBaseContext() , "你点击了确定", Toast.LENGTH_LONG).show();
					     }		
				    });    
                   builder.show();
			 }
		});
    }
  //初始化列表对话框
    private void initListButton(){
    	listButton = (Button)findViewById(R.id.listButton);
    	final Builder builder = new AlertDialog.Builder(this);
    	final String[] names = new String[]{"刘德华","古天乐","吴彦祖"};
    	listButton.setOnClickListener(new OnClickListener() {		
			@Override
			public void onClick(View v) {
				builder.setIcon(R.drawable.ic_launcher);
				builder.setTitle("列表选项对话框");
				builder.setItems(names,
				        new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this, "你点击了:"+names[which], Toast.LENGTH_LONG).show();
					}
				});
				builder.show();
			}
		});
    }
  //初始化多选按钮对话框
    private void initMultiButton(){
    	 multiButton = (Button)findViewById(R.id.multiButton);
    	 final Builder builder = new AlertDialog.Builder(this);
    	 final String[] names = new String[]{"刘德华","古天乐","吴彦祖"};
    	 final boolean[] checkStatus = new boolean[]{false,false,false};
    	 multiButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				   builder.setIcon(R.drawable.ic_launcher);
				   builder.setTitle("多选对话框");
				   builder.setMultiChoiceItems(names, checkStatus, new DialogInterface.OnMultiChoiceClickListener() {					
					@Override
					public void onClick(DialogInterface dialog, int which, boolean isChecked) {
						     String checked ="";
                             for(int i = 0 ; i < checkStatus.length ; i++){
                            	 if(checkStatus[i]){
                            		 checked = checked+names[i]+"/";
                            	 }
                             }
                             Toast.makeText(MainActivity.this, "你选择了:"+checked, Toast.LENGTH_LONG).show();
					  }
				});
				   builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						Toast.makeText(MainActivity.this, "你点击了确定按钮:", Toast.LENGTH_LONG).show();
					}
				});
			    builder.show();
			}
		});
    }
  //初始化登录对话框
    private void initLoginButton(){
    	loginButton = (Button)findViewById(R.id.loginButton);
    	final Builder builder = new AlertDialog.Builder(this);
    	loginButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
                   builder.setIcon(R.drawable.ic_launcher);
                   builder.setTitle("登录对话框");
                   RelativeLayout rl = (RelativeLayout)getLayoutInflater().inflate(R.layout.user_login, null);
				   builder.setView(rl);
				   builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {	
					@Override
					public void onClick(DialogInterface dialog, int which) {
					}
				});
				   builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
					}
				});
				   builder.create().show();
			}
		});
    }
  //初始化日期时间对话框
    private void initTimerButton(){
    	  timerButton = (Button)findViewById(R.id.timerButton);
    	  timerButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Calendar c =  Calendar.getInstance();
				  new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
					@Override
					public void onDateSet(DatePicker view, int year, int monthOfYear,
							int dayOfMonth) {
					}
				}, c.get(Calendar.YEAR),c.get(Calendar.MONTH),c.get(Calendar.DAY_OF_MONTH)).show();
			}
		});
    }
  //初始化弹出对话框
    private void initPopupButton(){
    	View root = this.getLayoutInflater().inflate(R.layout.popup, null);
    	progressButton=(Button)findViewById(R.id.popupButton);
    	final PopupWindow p =new PopupWindow(root,500,500);
    	progressButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
                  p.showAsDropDown(v);
			}
		});
    	root.findViewById(R.id.closeButton).setOnClickListener(new OnClickListener() {	
			@Override
			public void onClick(View v) {
               p.dismiss();
			}
		});
    }
  //初始化自定义对话框
    private void initCustomButton(){
    	final int ListDialog = 0x113;
    	customButton = (Button)findViewById(R.id.customButton);
    	customButton.setOnClickListener(new OnClickListener() {		
			@SuppressWarnings("deprecation")
			@Override
			public void onClick(View v) {
				 showDialog(ListDialog);
			}
		});
    }
    @Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
	@Override
	@Deprecated
	protected Dialog onCreateDialog(int id, Bundle args) {
           if(id == 0x113){
        	   String[] names = new String[]{"刘德华","古天乐","吴彦祖"};
        	    Builder builder = new AlertDialog.Builder(this);
        	    builder.setIcon(R.drawable.ic_launcher);
        	    builder.setTitle("列表对话框");
        	    builder.setItems(names, new DialogInterface.OnClickListener() {			
					@Override
					public void onClick(DialogInterface dialog, int which) {
					}
				});
        	    return builder.create();   	
           }
		  return null;
	}
}

  运行效果:

                                                                  


                                                

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值