基础

动画

通过android:windowEnterAnimationandroid:windowExitAnimation可以定义dialog的动画。如下:

    <style name="dialogAnimation">    <item name="android:windowEnterAnimation">@anim/dialog_enter</item>    <item name="android:windowExitAnimation">@anim/anim_exit</item>    </style>
应用
        Dialog d = new ProgressDialog(MainActivity.this);        Window window = d.getWindow();//得到window        params = (WindowManager.LayoutParams)window.getAttributes();        params.windowAnimations = R.style.dialogAnimation;//引用style文件的id

AlertDialog

它一般是用来提醒用户进行确认等操作的。如用户要删除一个信息,就需要提醒用户是否确定要删除。因此它叫“提醒对话框”。

创建与显示

是通过AlertDialog.Builder来完成的。如:

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.create().show();//或者直接builder.show()

AlertDialog.Builder:

大部分都是把用户传入的值设置到相应的位置上的。但是其中有两个是可以用来自定义:

setCustomTitle()设置对话框的标题。因此,如果想让标题中的文字居中,可以自定义一个布局,再把布局生成的view设置到其中即可.如:

builder.setCustomTitle(View.inflate(MainActivity.this,R.layout.second, null));

setView()是用来更改对话框的主体内容。

ProgressDialog

它是进度条对话框,因为在该对话框上含有一个进度条。因此,它主要是用来在执行一些耗时操作时显示的。如:删除信息时.

其中的进度条默认是圆形的。

示例:

final ProgressDialog dialog = new ProgressDialog(this);dialog.setMax(100);//为进度条设置最大值//将圆形有进度条改成横条状dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);dialog.show();final ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();service.scheduleAtFixedRate(new Runnable() {public void run() {//使进度条每次都增加1dialog.incrementProgressBy(1);if (count == 100) {service.shutdown();dialog.dismiss();}count++;}}, 4000, 100, TimeUnit.MILLISECONDS);

也可以为ProgressDialog设置按钮:

dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "12", new OnClickListener() {public void onClick(DialogInterface dialog, int which) {}});dialog.setButton(DialogInterface.BUTTON_POSITIVE, "fda", new OnClickListener() {public void onClick(DialogInterface dialog, int which) {}});

DatePickerDialog

选择时间的dialog。样式如下:

Dialog基本使用_第1张图片

代码如下:

DatePickerDialog dialog = new DatePickerDialog(this, new OnDateSetListener() {public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {System.out.println("onDateSet");}//当点击下面的完成按钮时.monthOfYear是从0到11.超过11会顺延到下一年}, 2012, 11, 1);dialog.show();

TimePickerDialog

与DatePickerDialog显示的类似。只不过它是显示一天的时间。从参数就可以看出。示例如下:

TimePickerDialog dialog = new TimePickerDialog(this, new OnTimeSetListener() {public void onTimeSet(TimePicker view, int hourOfDay, int minute) {System.out.println('a'+"-----");}}, 13, 66, false);dialog.show();

自定义Dialog

虽然通过Builder中的setView与setCustomTitle()可以实现一定的自定义,但是这并不能完全实现自定义,如:要实现一个圆角的Dialog。

具体步骤:

1,new一个dialog,并在new的时候传入一个style。

2,用第一步得到的dialog调用setContentView()。

3,用第一步得到的dialog调用show()即可。

style文件

    <style name="MyDialog" parent="@android:Theme.Dialog">        <item name="android:windowFrame">@null</item>        <item name="android:windowNoTitle">true</item>         <item name="android:windowBackground">@android:color/transparent</item>        <item name="android:windowIsFloating">true</item>        <item name="android:windowContentOverlay">@null</item>    </style>

其中:

android:windowBackground设置的便是dialog的背景。因此,可以为dialog设置任意背景。

示例

final Dialog dialog = new Dialog(MainActivity.this,R.style.MyDialog);View v2 = View.inflate(MainActivity.this, R.layout.dialog, null);v2.findViewById(R.id.dialog_button_cancel).setOnClickListener(new OnClickListener() {public void onClick(View v) {dialog.dismiss();}});dialog.setContentView(v2);dialog.show();

这样就自定义了一个dialog。这个dialog显示的内容就是R.layout.dialog所指定的。

常见问题

使用该方法自定义dialog时,会发现dialog的占据的位置过小。这可以通过设置LayoutParams来改变。如下:

Dialog dialog = new Dialog(MainActivity.this,R.style.DialogStyle);View content = View.inflate(MainActivity.this,R.layout.dialog_content, null);LayoutParams lp = new LayoutParams();//WindowManager.LayoutParamslp.width = 300;//单位dplp.height = LayoutParams.WRAP_CONTENT;dialog.setContentView(content, lp);dialog.show();
其中的LayoutParams是WindowManager的内部类。











更多相关文章

  1. Android中的onCreateOptionsMenu()方法和onOptionsItemSelected()方
  2. Android 对话框中的进度条
  3. Android自定义对话框去掉白色边框
  4. 综合传感器示例
  5. Android 开发系列6 安装Cordova及示例程序
  6. 【Android】手机地图功能——利用手机GPS获取用户地理坐标
  7. 一个日期选择对话框

随机推荐

  1. 【Android】volley网络框架的文件下载
  2. android Vibrator
  3. Android屏幕横屏竖屏切换的方法
  4. 在文字周围环绕一层阴影效果[android:sha
  5. android源码修改USB权限,去掉USB弹出框
  6. Android(安卓)实现由下至上弹出并位于屏
  7. android 对文件的操作模式
  8. android 视频播放器
  9. AndroidのCountDownTimer倒计时器
  10. Android(安卓)查询远程服务器的工具Query