对话框(Dialog)

一、对话框(Dialog

对话框就是程序与用户,或用户与程序进行人机交互。比如说当我们退出某个程序时会弹出是否退出的对话框等等。

代码:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
   <ImageButton //定义一个图片按钮
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/one1">
    </ImageButton>
</LinearLayout>
MainActivity.java文件的内容。

package com.example.dialog1;
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.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.ImageButton;

public class MainActivity extends Activity {
	private ImageButton but = null;//定义图片按钮
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		but = (ImageButton)super.findViewById(R.id.image);//取得按钮
		but.setOnClickListener(new OnClickListenerImpl());//设置监听器
	}
	private class OnClickListenerImpl implements OnClickListener {
		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			MainActivity.this.back();//当点击图片按钮时跳到back()方法上。
		}
	}
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		// TODO Auto-generated method stub
		if (keyCode == KeyEvent.KEYCODE_BACK) {//如果按下的是返回键
			MainActivity.this.back();
		}
		return false;
	}
	private void back() {
		Dialog dialog = new AlertDialog.Builder(MainActivity.this)
		.setTitle("车辆选择")//创建标题
		.setMessage("您确定要选择这辆车吗?")//表示对话框中的内容
		.setIcon(R.drawable.car)//设置图标
		.setPositiveButton("确定", new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				MainActivity.this.finish();
			}
		}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
			}
		}).create();//创建对话框
		dialog.show();//显示对话框
	}
}
1.1、单选钮对话框

代码:

<LinearLayout
    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/showtxt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="" />
    <TextView
        android:id="@+id/context"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="" />
	<Button 
        android:id="@+id/but"
	android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/txt1" />
</LinearLayout>
MainActivity.java文件内容。

package com.example.dialog2;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
	private TextView text1 = null;           //定义文本组件
	private TextView text2 = null;
	private Button but = null ;			 //定义按钮组件
	private String[] carcontexts = new String[]{"该车采用轻量化设计,车身质量仅为1341kg,过弯时的过载可达到两个重力加速度",
			"最高时速是350km/h","百公里加速只有6s,但是最高时速只有180km/h"}; //定义一个String类型的数组存储信息。
	private String[] car = new String[]{"柯塞尼格 ONE1","兰博基尼Aventador LP-700-4","奔驰G63 AMG 6x6"};     //定义一个String类型的数组存储信息。   
	private int chnum;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		this.text1 = (TextView)super.findViewById(R.id.showtxt);
		this.text2 = (TextView)super.findViewById(R.id.context);
		this.but = (Button)super.findViewById(R.id.but);
		this.but.setOnClickListener(new OnClickListenerImpl()); //给按钮设置监听器 
	}
	private class OnClickListenerImpl implements OnClickListener {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub</span>
 		       //设置对话框
                         Dialog dialog = new AlertDialog.Builder(MainActivity.this)
			.setIcon(R.drawable.car)                            	        //设置对话框的图标
			.setTitle("请选择您最喜欢的车")                                //设置对话框的标题 
//设置对话框中的按钮,并设置了监听器
			.setPositiveButton("确定", new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					MainActivity.this.text2.setText(MainActivity.this.carcontexts[chnum]);//当点击对话框中的"确定"按钮时做出设置文本组件显示内容的操作。
				}
			})
			.setNegativeButton("取消", new DialogInterface.OnClickListener() {
				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					
				}
			}).setSingleChoiceItems(MainActivity.this.car, 0, new DialogInterface.OnClickListener() //第一个参数的意思是从MainActivity.this.car中获得所有单选项,第二个参数的意思是单选项中的第一个被默认选中,第三个参数的意思是设置监听器(当点击的时候) 
 			
				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					MainActivity.this.text1.setText(MainActivity.this.car[which]);
					MainActivity.this.text2.setText("");
					MainActivity.this.chnum = which;
				}
			}).create();//创建单选对话框
			dialog.show();//显示单选对话框
		}
	}
} 
1.2、多选对话框

代码:

<LinearLayout 
    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/txt1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""/>//默认不显示文字
    <TextView
        android:id="@+id/txt2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""/>
    <Button //设置按钮组件
        android:id="@+id/but"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请选择你最喜欢的食物"
        />
</LinearLayout> 
MainActivity.java文件的内容。

package com.example.dialog3;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
	private TextView txt1 = null; //定义文本组件
	private TextView txt2 = null;  //定义文本组件
	private Button but = null; //定义按钮组件
	private String[] food = new String[] {"红烧肉","糖醋里脊","红烧排骨","狮子头"}; //定义一个字符串数组存储信息
	private boolean[] checkedfood = new boolean[]{true,true,false,false};//定义一个布尔类型的数组存储默认选中项(true:选中,false:不选中)
	private String[] contexts = new String[] {"好吃","美味","鲜嫩","味美多汁"}; //定义一个字符串数组存储信息  
	private int checkednum;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		txt1 = (TextView)super.findViewById(R.id.txt1);//取得文本组件
		txt2 = (TextView)super.findViewById(R.id.txt2);//取得文本组件
		but = (Button)super.findViewById(R.id.but);//取得按钮组件
		but.setOnClickListener(new OnClickListenerImpl());//给按钮设置监听器
	}
	private class OnClickListenerImpl implements OnClickListener {
		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub 
 		//设置对话框
			Dialog dialog = new AlertDialog.Builder(MainActivity.this)
			.setIcon(R.drawable.food) //设置对话框图标
			.setTitle("请选择你最喜欢的食物") //设置对话框标题
			.setPositiveButton("确定", new DialogInterface.OnClickListener() { 			 //当点击"确定"时程序所做出的反应
				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					MainActivity.this.txt2.setText(txt1.getText());
					MainActivity.this.txt1.setText("");
 				}
			}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
				//当点击"取消"时程序所作出的反应
				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					
				}
			}).setMultiChoiceItems(MainActivity.this.food, MainActivity.this.checkedfood, new DialogInterface.OnMultiChoiceClickListener() //设置多选框。第一个参数:从 MainActivity.this.food中取得多选内容,第二个参数:在多选内容中默认选中项,第三个参数设置监听器  { 
				
				@Override
				public void onClick(DialogInterface dialog, int which, boolean isChecked) {
					// TODO Auto-generated method stub
					 for (int i = 0; i < MainActivity.this.food.length; i++){
						 if (i == which && isChecked) {
							 MainActivity.this.txt1.append(MainActivity.this.food[i] + "、");
							 
						 }
					 }
				}
			}).create();
			dialog.show();
		}
	}
} 
1.3、定制对话框与(LayoutInflater)

定制对话框无非就是写一个新的布局文件,LayoutInflater的作用就是查找到res/layout/..xml文件,下面写一个定制的登录对话框说明。

代码:

 <LinearLayout
    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/txt1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="" /> 
 <Button 
	android:id="@+id/but"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="登录"/>
</LinearLayout>
 

MainActivity.java文件的内容。

package com.example.dialog4;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
	private Button but = null;
	private TextView txt1 = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		but = (Button)super.findViewById(R.id.but);
		txt1 = (TextView)super.findViewById(R.id.txt1);
		but.setOnClickListener(new OnClickListenerImpl());//给按钮设置监听器
	}
	private class OnClickListenerImpl implements OnClickListener {
		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
 <span style="white-space:pre">			</span>//从 MainActivity.this查找布局文件 
			LayoutInflater factory = LayoutInflater.from(MainActivity.this); 
                      View V = factory.inflate(R.layout.login, null);//定义一个新视图
			Dialog dialog = new AlertDialog.Builder(MainActivity.this)
			.setTitle("用户登录")
			.setPositiveButton("登录", new DialogInterface.OnClickListener() {	
				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					final ProgressDialog pdl = ProgressDialog.show(MainActivity.this, "正在登录中", "请耐心等候"); //设置进度对话框
					new Thread() {
						public void run() {
							try {
							Thread.sleep(5000);//线程睡眠5s后继续执行程序
							}catch (Exception {
							}finally {
								pdl.dismiss();
							}
						}
					}.start();//启动进度框
					pdl.show();//创建进度对话框
 				}
			}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					MainActivity.this.txt1.setText("您已取消了本次登录");
				}
			}).setView(V).create();//创建新视图
			dialog.show();//显示对话框
		}
	}
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙潭一条鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值