android的弹出框 -(一)--AlertDialog,时间弹出框DatePickerDialog 和进度条弹出框showProgressDialog

来源:互联网 发布:家居网络市场调研目标 编辑:程序博客网 时间:2024/05/16 02:15

这里介绍三种弹出框android的弹出框AlertDialog,时间弹出框DatePickerDialog 和进度条弹出框showProgressDialog--我将在下一篇介绍自定义弹出框


这里我们我们同一个layout.xml来写按钮事,app中肯定是少不了与用户交互的各种dialog,所以我们可以用谷歌的工程师包装好的方法来做这个弹出框 android:onClick="(自定义的方法名)Gress"这个我们只需要在MainActivity。java中实现这个方法就行。例如
public class MainActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void Gress view) {
实现方法的代码
}
}

<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"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.m_6dialog.MainActivity" >    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="Bt1"        android:text="普通弹出框" />    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="Bt2"        android:text="时间弹出框" />    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="Bt3"        android:text="进度条弹出框" />    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="Bt4"        android:text="自定义弹出框" /></LinearLayout>



第一个,普通弹出框AlertDialog

这里我三个按钮两个写了退出程序。

这里是实现代码

一般创建一个对话框需要经过以下几步:

  1、创建AlertDialog.Builder对象。

  2、调用AlertDialog.Builder的setTitle()或者setCustomTitle()方法设置标题。

  3、调用AlertDialog.Builder的setIcon()方法设置标题logo。

  4、调用AlertDialog.Builder的相关方法设置对话框内容。

  5、调用AlertDialog.Builder的setPositiveButton()、setNegativeButton()或setNeutralButton()方法添加多个按钮。

  6、调用AlertDialog.Builder的create()方法创建AlertDialog对象,再调用AlertDialog对象的show()方法将该对话框显示出来。

其中,第4步设置对话框的内容,这里有6种方法来指定:

  ·setMessage():设置对话框内容为简单文本内容。

  ·setItems():设置对话框内容为简单列表项。

  ·setSingleChoiceItems():设置对话框内容为单选列表项。

  ·setMultiChoiceItems():设置对话框内容为多选列表项。

  ·setAdapter():设置对话框内容为自定义列表项。

  ·setView():设置对话框内容为自定义View。

下面通过几个实例来介绍一下AlertDialog的用法。



package com.example.m_6dialong;import java.util.Date;import java.util.zip.Inflater;import android.app.Activity;import android.app.AlertDialog;import android.app.ProgressDialog;import android.app.AlertDialog.Builder;import android.app.DatePickerDialog;import android.app.DatePickerDialog.OnDateSetListener;import android.app.Dialog;import android.content.DialogInterface;import android.content.DialogInterface.OnClickListener;import android.os.Bundle;import android.support.v4.widget.SlidingPaneLayout.PanelSlideListener;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Button;import android.widget.DatePicker;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}/* *  * AlertDialog基本弹出框选择确定和取消 */public void Bt1(View view) {showAler();}void showAler() {AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("title");builder.setMessage("message");builder.setIcon(R.drawable.ic_launcher);// 1确定按钮排在第三个builder.setPositiveButton("text", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubfinish();}});// 2否定按钮,排在第一个builder.setNegativeButton("text2", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubfinish();}});// 3. 中立按钮排在第二个builder.setNeutralButton("zhong", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});builder.create().show();}}


第二个  显示时间的弹出框DatePickerDialog,TimePickerDialog


——DatePickerDialog,TimePickerDialog

这两个对话框功能简单,用法也很简单。只需要两步就可以了:

1)通过new关键字创建实例,调用show()将对话框显示出来

2)绑定监听器,从而通过监听器获取用户设置的事件

这里只有把上面的Bt1方法换掉就可以


public void Bt2(View view) {date();}private void date() {/* DatePickerDialog datePickerDialog1= new DatePickerDialog(context, callBack, year, monthOfYear, dayOfMonth) callBack 是使用了匿名内部类*/DatePickerDialog datePickerDialog = new DatePickerDialog(this,new OnDateSetListener() {@Overridepublic void onDateSet(DatePicker view, int year,int monthOfYear, int dayOfMonth) {// TODO Auto-generated method stub}}, new Date().getDate(), new Date().getMonth() + 1,new Date().getDay());datePickerDialog.show();System.out.println(new Date().getDate() + "getDate");System.out.println(new Date().getMonth() + "getMonth");System.out.println(new Date().getDay() + "getDay");System.out.println(new Date().getTime() + "getTime");System.out.println(new Date().getYear() + "year");}


第三个。进度条弹出框


——ProgressDialog

使用ProgressDialog进度条对话框有两种方式:

1)如果只是创建一个简单的进度对话框,

调用ProgressDialog提供的静态show()方法显示对话框即可

这里的参数boolean indeterminate设置是否是不明确的状态。

2)创建ProgressDialog,然后调用方法对对话框中的进度条进行设置,

设置完成后将对话框显示出来即可。

ProgressDialog包含如下的方法:

 

 a)setTitle("提示信息");

 b)setMessage(charSequence)设置对话框里显示的消息

 c)setMax(int)设置对话框中进度条的最大值

 d)setProgressStyle(ProgressDialog.STYLE_HORIZONTAL)设置对话框里进度条的风格

 e)setIndeterminate(boolean)设置进度条是否显示不明确值,不明确就是滚动条的当前值自动在最小到最大值之间来回移动,形成这样一个动画效果,这个只是告诉别人“我正在工作”,但不能提示工作进度到哪个阶段。主要是在进行一些无法确定操作时间的任务时作为提示。而“明确”就是根据你的进度可以设置现在的进度值

 f)p.dismiss()关闭对话框

 

——补充

补充:还有其他的方式也可以完成对话框

1)在需要设置成对话框的Activity在AndroidManifest.xml中配置

android:theme="@android:style/Theme.Dialog"

2)PopWindow也可以做类似对话框风格的窗口

只需要两步就可以完成:

 a)创建PopWindow对象,为其设置布局内容与宽度、高度

 b)调用pop.showAsDropDown(View)将PopupWindow作为View组件以下拉组件显示出来,

 或者调用showAtLocation()方法将PopupWindow在指定位置显示出来

第一个参数指定PopupWindow的锚点view,即依附在哪个view上。

第二个参数指定起始点

第三,四个参数设置以起始点的右下角为原点,向向右、下各偏移量。
/* *  *  * ProgressDialog 进度条弹窗 必须定义public的方法Button的onClick方法 */public void Bt3(View view) {// TODO Auto-generated method stubshowProgressDialog();}private void showProgressDialog() {// TODO Auto-generated method stubProgressDialog progressDialog = new ProgressDialog(this);progressDialog.setMessage("下载");progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);progressDialog.show();}

总结:  三个的实现方法都很简单,现在来看全部代码,我将在下一篇重点介绍自定义弹出框和事件逻辑

package com.example.m_6dialong;import java.util.Date;import java.util.zip.Inflater;import android.app.Activity;import android.app.AlertDialog;import android.app.ProgressDialog;import android.app.AlertDialog.Builder;import android.app.DatePickerDialog;import android.app.DatePickerDialog.OnDateSetListener;import android.app.Dialog;import android.content.DialogInterface;import android.content.DialogInterface.OnClickListener;import android.os.Bundle;import android.support.v4.widget.SlidingPaneLayout.PanelSlideListener;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Button;import android.widget.DatePicker;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}/* *  * AlertDialog基本弹出框选择确定和取消 */public void Bt1(View view) {showAler();}void showAler() {AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("title");builder.setMessage("message");builder.setIcon(R.drawable.ic_launcher);// 1确定按钮排在第三个builder.setPositiveButton("text", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubfinish();}});// 2否定按钮,排在第一个builder.setNegativeButton("text2", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubfinish();}});// 3. 中立按钮排在第二个builder.setNeutralButton("zhong", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});builder.create().show();}/* *  * DatePickerDialog 时间基本弹出框 */public void Bt2(View view) {date();}private void date() {/* DatePickerDialog datePickerDialog1= new DatePickerDialog(context, callBack, year, monthOfYear, dayOfMonth) callBack 是使用了匿名内部类*/DatePickerDialog datePickerDialog = new DatePickerDialog(this,new OnDateSetListener() {@Overridepublic void onDateSet(DatePicker view, int year,int monthOfYear, int dayOfMonth) {// TODO Auto-generated method stub}}, new Date().getDate(), new Date().getMonth() + 1,new Date().getDay());datePickerDialog.show();System.out.println(new Date().getDate() + "getDate");System.out.println(new Date().getMonth() + "getMonth");System.out.println(new Date().getDay() + "getDay");System.out.println(new Date().getTime() + "getTime");System.out.println(new Date().getYear() + "year");}/* *  *  * ProgressDialog 进度条弹窗 必须定义public的方法Button的onClick方法 */public void Bt3(View view) {// TODO Auto-generated method stubshowProgressDialog();}private void showProgressDialog() {// TODO Auto-generated method stubProgressDialog progressDialog = new ProgressDialog(this);progressDialog.setMessage("下载");progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);progressDialog.show();}


<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"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.m_6dialog.MainActivity" >    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="Bt1"        android:text="普通弹出框" />    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="Bt2"        android:text="时间弹出框" />    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="Bt3"        android:text="进度条弹出框" />    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="Bt4"        android:text="自定义弹出框" /></LinearLayout>



1 1