各种风格的安卓dialog

本篇文章为大家介绍一些常用的安卓dialog,各种风格都有,相信应该能满足广大读者的需求

第一个是最普通的dialog,弹出一个提示对话框,用户可以选择确定,继续操作,或者点取消,取消操作

各种风格的安卓dialog_第1张图片
private void showDialog() {
		AlertDialog.Builder builder = new Builder(MainActivity.this);

		builder.setTitle("提示");
		builder.setMessage("这是一个普通对话框");

		builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				//点击确认做的操作
				dialog.dismiss();
			}
		});

		builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				//点击取消做的操作
				dialog.dismiss();
			}
		});

		builder.create().show();
	}

第二个展示的是一个列表对话框,用户可以从列表中点击选择需要的内容,我们需要传入一个String类型的数组

各种风格的安卓dialog_第2张图片
private void showDialog() {
    	AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
		builder.setIcon(R.drawable.ic_launcher);
		builder.setTitle("选择一个城市");
		// 指定下拉列表的显示数据
		final String[] cities = { "广州", "上海", "北京", "香港", "澳门" };
		// 设置一个下拉的列表选择项
		builder.setItems(cities, new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				Toast.makeText(MainActivity.this, "选择的城市为:" + cities[which], Toast.LENGTH_SHORT).show();
			}
		});
		builder.show();
	}

第三个展示的是一个单选列表对话框,本对话框主要方法setSingleChoiceItems,需要传入三个参数,第一个参数String类型数组代表选项,第二个参数为int数字作为默认选中索引,这里要注意数组长度,不能大于数组长度,也不能为负数,否则数组越界,第三个参数给每一个单选项绑定一个监听器

各种风格的安卓dialog_第3张图片
private void showDialog() {
    	AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
		builder.setIcon(R.drawable.ic_launcher);
		builder.setTitle("请选择性别");
		final String[] sex = { "男", "女", "未知性别" };
		// 设置一个单项选择下拉框
		/**
		 * 第一个参数指定我们要显示的一组下拉单选框的数据集合 第二个参数代表索引,指定默认哪一个单选框被勾选上,1表示默认'女' 会被勾选上
		 * 第三个参数给每一个单选项绑定一个监听器
		 */
		builder.setSingleChoiceItems(sex, 1, new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				Toast.makeText(MainActivity.this, "性别为:" + sex[which], Toast.LENGTH_SHORT).show();
			}
		});
		builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {

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

			}
		});
		builder.show();
	}



第四个dialog为多选列表对话框,代码如下所示,各项参数含义可以看注释

各种风格的安卓dialog_第4张图片
private void showDialog() {
    	AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
		builder.setIcon(R.drawable.ic_launcher);
		builder.setTitle("爱好");
		final String[] hobbies = { "篮球", "足球", "网球", "斯诺克" };
		final boolean[] selectd = {false,true,false,true};
		// 设置一个单项选择下拉框
		/**
		 * 第一个参数指定我们要显示的一组下拉多选框的数据集合
		 * 第二个参数代表哪几个选项被选择,如果是null,则表示一个都不选择,如果希望指定哪一个多选选项框被选择,
		 * 需要传递一个boolean[]数组进去,其长度要和第一个参数的长度相同,例如 {true, false, false, true};
		 * 第三个参数给每一个多选项绑定一个监听器
		 */
		builder.setMultiChoiceItems(hobbies, selectd, new DialogInterface.OnMultiChoiceClickListener() {
			StringBuffer sb = new StringBuffer(100);

			@Override
			public void onClick(DialogInterface dialog, int which, boolean isChecked) {
				
			}
		});
		builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {

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

			}
		});
		builder.show();
	}



第五个是一个自定义的对话框,我们可以自己在layout文件下建立一个布局,然后通过LayoutInflater加载布局,将获取到的View通过setView添加到dialog中,我们可以通过findViewById方法获取到dialog中的控件实例来操作dialog,具体使用如下所示,my_dialog为自定义的dialog所要加载的布局

各种风格的安卓dialog_第5张图片
private void showDialog() {
    	//	    通过LayoutInflater来加载一个xml的布局文件作为一个View对象
        View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.my_dialog, null);
        final AlertDialog mDialog = new AlertDialog.Builder(MainActivity.this)
				.setView(view).create();
						
		mDialog.setCancelable(true);
		
		final EditText editText = (EditText) view.findViewById(R.id.e_tv);
		
		view.findViewById(R.id.ok).setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Toast.makeText(MainActivity.this, editText.getText(), Toast.LENGTH_LONG).show();
				mDialog.dismiss();
			}
		});

		view.findViewById(R.id.cancel).setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				mDialog.dismiss();
			}
		});
		mDialog.show();
	}


    
    
    
    
    
    
        
    
    
    
    
    
       


第六个是一个圆形进度条加载对话框,比较简单

各种风格的安卓dialog_第6张图片
private void showDialog() {
    	ProgressDialog dialog = new ProgressDialog(this);
    	 dialog.setMessage("正在加载中");
    	 dialog.show();
	}


第七个是设置一个水平的进度条并显示当前进度,只需要把他的样式设置为ProgressDialog.STYLE_HORIZONTAL即可。

各种风格的安卓dialog_第7张图片

private void showDialog() {
    	final ProgressDialog dialog = new ProgressDialog(this);
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        dialog.setMessage("正在加载中");
        dialog.setMax(100);
        final Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            int progress = 0;

            @Override
            public void run() {
                dialog.setProgress(progress += 5);
                if (progress == 100) {
                    timer.cancel();
                }
            }
        }, 0, 1000);
        dialog.show();
	}


下面为大家介绍一下如何设置dialog的样式,分为系统自带的和自定义的,首先来看一下系统自带的,图中的样式和代码中设置的顺序相同

各种风格的安卓dialog_第8张图片 各种风格的安卓dialog_第9张图片 各种风格的安卓dialog_第10张图片 各种风格的安卓dialog_第11张图片 各种风格的安卓dialog_第12张图片
private void showDialog() {
		@SuppressWarnings("deprecation")
		AlertDialog.Builder builder = new Builder(MainActivity.this,AlertDialog.THEME_DEVICE_DEFAULT_DARK);
//		AlertDialog.Builder builder = newBuilder(MainActivity.this,AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
//		AlertDialog.Builder builder = new Builder(MainActivity.this,AlertDialog.THEME_HOLO_DARK);
//		AlertDialog.Builder builder = new Builder(MainActivity.this,AlertDialog.THEME_HOLO_LIGHT);
//		AlertDialog.Builder builder = new Builder(MainActivity.this,AlertDialog.THEME_TRADITIONAL);

		builder.setTitle("提示");
		builder.setMessage("这是一个普通对话框");

		builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				//点击确认做的操作
				dialog.dismiss();
			}
		});

		builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				//点击取消做的操作
				dialog.dismiss();
			}
		});

		builder.create().show();
	}

我们也可以自己为dialog在style文件中定义一个样式,如下

各种风格的安卓dialog_第13张图片
private void showDialog() {
		@SuppressWarnings("deprecation")
		AlertDialog.Builder builder = new Builder(MainActivity.this,R.style.NormalDialogStyle);

		builder.setTitle("提示");
		builder.setMessage("这是一个普通对话框");

		builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				//点击确认做的操作
				dialog.dismiss();
			}
		});

		builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				//点击取消做的操作
				dialog.dismiss();
			}
		});

		builder.create().show();
	}


    


好了,关于dialog的相关知识就介绍这么多,本篇文章涵盖了大部分的dialog,如果普通的dialog无法满足你的要求,你可以通过自定义一个自己的dialog,通过自定义dialog,你可以实现各种各样的dialog,同时,你还可以根据个人喜好和需求来设置dialog的style,喜欢的朋友点个赞吧

你可能感兴趣的:(安卓综合开发)