当前位置:  编程技术>移动开发

Android中自定义对话框(Dialog)的实例代码

    来源: 互联网  发布时间:2014-10-20

    本文导语:  1.修改系统默认的Dialog样式(风格、主题)2.自定义Dialog布局文件3.可以自己封装一个类,继承自Dialog或者直接使用Dialog类来实现,为了方便以后重复使用,建议自己封装一个Dialog类 第一步:  我们知道Android定义个控件或Vie...

1.修改系统默认的Dialog样式(风格、主题)

2.自定义Dialog布局文件

3.可以自己封装一个类,继承自Dialog或者直接使用Dialog类来实现,为了方便以后重复使用,建议自己封装一个Dialog类

 
第一步:

  我们知道Android定义个控件或View的样式都是通过定义其style来实现的,查看Android框架中的主题文件,在源码中的路径:/frameworks/base/core/res/res/values/themes.xml,我们可以看到,Android为Dialog定义了一个样式,
代码如下:


@null
@android:style/DialogWindowTitle
@android:drawable/panel_background
true
@null
@android:style/Animation.Dialog
stateUnspecified|adjustPan


我们可以看到,在Themes.xml中定义的Dialog的样式,其中,定义了window的标题样式,window的背景图,是否悬浮等等。

  那么,我们要创建具有自定义样式的Dialog就可以创建一个styles.xml,在其中定义我们自己的Dialog样式,让其继承自Theme.Dialog样式,并修改其中的某些属性即可。

  定义我们自己的Dialog样式:

  a.创建一个styles.xml文件,放在res/values 文件夹下(当然了,这就不用说了。。。啰嗦一下)

  b.在styles.xml中定义Dialog样式,代码如下:
代码如下:


@android:color/transparent
true


  上面代码中,定义了一个样式Theme_dialog,继承自@android:style/Theme.Dialog,然后定义了Dialog所在Window的背景图,此处使用的是透明颜色#00000000,然后定义了Dialog所在的Window隐藏标题(系统定义Dialog样式是带有标题的,在此设置此属性为true可隐藏标题),自定义Dialog样式到这就完成了。

第二步:

  定义Dialog的布局:

  创建一个布局文件layout_dialog.xml,代码如下:
代码如下:









这里使用了一个垂直方向的线性布局,并且设置所有子元素居中,子元素为已个进度条ProgressBar和一个TextView。

  此处,ProgressBar采用自定义样式,使用系统默认的ProgressBar可达到同样的效果(大同小异)。LinearLayout的背景

android:background="@drawable/pp_bg_dialog"(即上面效果图中居中显示的黑色透明背景框)是一个自定义的图片资源Shape:
代码如下:








代码中定义了一个矩形,并设置了圆角和颜色。到此,Dialog的布局就完成了。
第三步:
  自定义CustomDialog类,继承自Dialog,代码如下:
代码如下:

public class CustomDialog extends Dialog { 2
private static int default_width = 160; //默认宽度
private static int default_height = 120;//默认高度
public CustomDialog(Context context, int layout, int style) {
this(context, default_width, default_height, layout, style);
}

public CustomDialog(Context context, int width, int height, int layout, int style) {
super(context, style);12
//set content
setContentView(layout);
//set window params
Window window = getWindow();
WindowManager.LayoutParams params = window.getAttributes();
//set width,height by density and gravity
float density = getDensity(context);
params.width = (int) (width*density);
params.height = (int) (height*density);
params.gravity = Gravity.CENTER;
window.setAttributes(params);
}
private float getDensity(Context context) {
Resources resources = context.getResources();
DisplayMetrics dm = resources.getDisplayMetrics();
return dm.density;
}
}

在构造方法中设置了Dialog的contentView,并且设置了Window的宽度、高度和居中显示。

CustomDialog使用方法如下:
代码如下:

public class CustomDialogDemoActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
CustomDialog dialog1 = new CustomDialog(this, R.layout.common_dialog, R.style.Theme_dialog);//Dialog使用默认大小(160)
CustomDialog dialog2 = new CustomDialog(this, 180, 180, R.layout.common_dialog, R.style.Theme_dialog);
dialog2.show();//显示Dialog
    //如果要修改Dialog中的某个View,比如把"正在删除..."改为"加载中..."
TextView mMessage = (TextView) dialog2.findViewById(R.id.message);
mMessage.setText("加载中...");
}
}


大体过程就是这样,根据以上大家可以自由发挥吧,希望都设计出自己满意的dialog。

    
 
 

您可能感兴趣的文章:

  • android开发教程之时间对话框核心代码
  • Android加载对话框同时异步执行实现方法
  • Android修改源码解决Alertdialog触摸对话框边缘消失的问题
  • Android中 动态改变对话框值的方法
  • android 对话框弹出位置和透明度的设置具体实现方法
  • Android中创建一个透明的进度对话框实例
  • Android瀑布流实例 android_waterfall
  • Android的OpenGL编程实例 Android-GL
  • android 简单图片动画播放的实例代码
  • android WakeLock使用方法代码实例
  • android自动安装apk代码实例(不使用apk安装器安装)
  • android 弹出提示框的使用(图文实例)
  • 控制Android LED灯颜色的代码实例
  • Android中AnimationDrawable使用的简单实例
  • Android中将View的内容保存为图像的简单实例
  • Android入门之LinearLayout、AbsoluteLayout的用法实例讲解
  • android中Bitmap的放大和缩小实例代码
  • android中写一个内部类来选择文件夹中指定的图片类型实例说明
  • 怎样删除android的gallery中的图片实例说明
  • 在Android中 获取正在运行的Service 实例
  • Android根据电话号码获得联系人头像实例代码
  • HTML标签参考手册 iis7站长之家
  • android双缓冲技术实例详解
  • ANDROID 完美退出APP的实例代码
  • Android对sdcard扩展卡文件操作实例详解
  • Android 清除SharedPreferences 产生的数据(实例代码)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • android 自定义Android菜单背景的代码
  • android自定义控件和自定义回调函数步骤示例
  • Android 去掉自定义dialog的白色边框的简单方法
  • android开发教程之自定义控件checkbox的样式示例
  • android intent使用定义标题
  • Android开发笔记之:如何安全中止一个自定义线程Thread的方法
  • Android自定义View设定到FrameLayout布局中实现多组件显示的方法 分享
  • Android 自定义View的使用介绍
  • Android自定义Style实现方法
  • Android中自定义标题栏样式的两种方法
  • Android中自定义加载样式图片的具体实现
  • android自定义toast(widget开发)示例
  • Android中的Button自定义点击效果实例代码
  • android自定义按钮示例(重写imagebutton控件实现图片按钮)
  • Android自定义shape的使用示例
  • android之自定义Toast使用方法
  • Android自定义桌面功能代码实现
  • Android布局——Preference自定义layout的方法
  • Android自定义格式显示Button的布局思路
  • 解析Android中使用自定义字体的实现方法
  • 申请Android Map 的API Key(v2)的最新申请方式(SHA1密钥)
  • Android系统自带样式 (android:theme)
  • Android开发需要的几点注意事项总结
  • Android网络共享软件 Android Wifi Tether
  • android 4.0 托管进程介绍及优先级和回收机制
  • Android 图标库 Android GraphView
  • Android访问与手机通讯相关类的介绍
  • 轻量级Android开发工具 Android Tools
  • Android及andriod无线网络Wifi开发的几点注意事项
  • Android 开发环境 Android Studio
  • Android 2.3 下StrictMode介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3