Android自定义Dialog(美化界面)

前言:在做项目的时候,发现dialog界面太丑陋,从csdn上下载了一份自定义dialog的源码,在他的基础上对界面进行美化...有需要的朋友可以直接拿走

效果图如下:

主要代码:

  1. /** 
  2.  * 自定义dialog 
  3.  * @author ansen 
  4.  */  
  5. public class CustomDialog extends Dialog {  
  6.     public CustomDialog(Context context) {  
  7.         super(context);  
  8.     }  
  9.   
  10.     public CustomDialog(Context context, int theme) {  
  11.         super(context, theme);  
  12.     }  
  13.   
  14.     public static class Builder {  
  15.         private Context context;  
  16.         private String title;  
  17.         private String message;  
  18.         private String positiveButtonText;  
  19.         private String negativeButtonText;  
  20.         private View contentView;  
  21.         private DialogInterface.OnClickListener positiveButtonClickListener;  
  22.         private DialogInterface.OnClickListener negativeButtonClickListener;  
  23.   
  24.         public Builder(Context context) {  
  25.             this.context = context;  
  26.         }  
  27.   
  28.         public Builder setMessage(String message) {  
  29.             this.message = message;  
  30.             return this;  
  31.         }  
  32.   
  33.         /** 
  34.          * Set the Dialog message from resource 
  35.          * @param title 
  36.          * @return 
  37.          */  
  38.         public Builder setMessage(int message) {  
  39.             this.message = (String) context.getText(message);  
  40.             return this;  
  41.         }  
  42.   
  43.         /** 
  44.          * Set the Dialog title from resource 
  45.          * @param title 
  46.          * @return 
  47.          */  
  48.         public Builder setTitle(int title) {  
  49.             this.title = (String) context.getText(title);  
  50.             return this;  
  51.         }  
  52.   
  53.         /** 
  54.          * Set the Dialog title from String 
  55.          * @param title 
  56.          * @return 
  57.          */  
  58.   
  59.         public Builder setTitle(String title) {  
  60.             this.title = title;  
  61.             return this;  
  62.         }  
  63.   
  64.         public Builder setContentView(View v) {  
  65.             this.contentView = v;  
  66.             return this;  
  67.         }  
  68.   
  69.         /** 
  70.          * Set the positive button resource and it's listener 
  71.          * @param positiveButtonText 
  72.          * @return 
  73.          */  
  74.         public Builder setPositiveButton(int positiveButtonText,  
  75.                 DialogInterface.OnClickListener listener) {  
  76.             this.positiveButtonText = (String) context  
  77.                     .getText(positiveButtonText);  
  78.             this.positiveButtonClickListener = listener;  
  79.             return this;  
  80.         }  
  81.   
  82.         public Builder setPositiveButton(String positiveButtonText,  
  83.                 DialogInterface.OnClickListener listener) {  
  84.             this.positiveButtonText = positiveButtonText;  
  85.             this.positiveButtonClickListener = listener;  
  86.             return this;  
  87.         }  
  88.   
  89.         public Builder setNegativeButton(int negativeButtonText,  
  90.                 DialogInterface.OnClickListener listener) {  
  91.             this.negativeButtonText = (String) context  
  92.                     .getText(negativeButtonText);  
  93.             this.negativeButtonClickListener = listener;  
  94.             return this;  
  95.         }  
  96.   
  97.         public Builder setNegativeButton(String negativeButtonText,  
  98.                 DialogInterface.OnClickListener listener) {  
  99.             this.negativeButtonText = negativeButtonText;  
  100.             this.negativeButtonClickListener = listener;  
  101.             return this;  
  102.         }  
  103.           
  104.         //创建dialog对象   主要就是这个方法,加载自定义布局文件  
  105.         public CustomDialog create() {  
  106.             LayoutInflater inflater = (LayoutInflater) context  
  107.                     .getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
  108.             // instantiate the dialog with the custom Theme  
  109.             final CustomDialog dialog = new CustomDialog(context,  
  110.                     R.style.Dialog);  
  111.             View layout = inflater.inflate(R.layout.dialog_normal_layout, null);  
  112.             dialog.addContentView(layout, new LayoutParams(  
  113.                     LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));  
  114.             // set the dialog title  
  115.             ((TextView) layout.findViewById(R.id.title)).setText(title);  
  116.             // set the confirm button  
  117.             if (positiveButtonText != null) {  
  118.                 ((Button) layout.findViewById(R.id.positiveButton))  
  119.                         .setText(positiveButtonText);  
  120.                 if (positiveButtonClickListener != null) {  
  121.                     ((Button) layout.findViewById(R.id.positiveButton))  
  122.                             .setOnClickListener(new View.OnClickListener() {  
  123.                                 public void onClick(View v) {  
  124.                                     positiveButtonClickListener.onClick(dialog,  
  125.                                             DialogInterface.BUTTON_POSITIVE);  
  126.                                 }  
  127.                             });  
  128.                 }  
  129.             } else {  
  130.                 // if no confirm button just set the visibility to GONE  
  131.                 layout.findViewById(R.id.positiveButton).setVisibility(  
  132.                         View.GONE);  
  133.             }  
  134.             // set the cancel button  
  135.             if (negativeButtonText != null) {  
  136.                 ((Button) layout.findViewById(R.id.negativeButton))  
  137.                         .setText(negativeButtonText);  
  138.                 if (negativeButtonClickListener != null) {  
  139.                     ((Button) layout.findViewById(R.id.negativeButton))  
  140.                             .setOnClickListener(new View.OnClickListener() {  
  141.                                 public void onClick(View v) {  
  142.                                     negativeButtonClickListener.onClick(dialog,  
  143.                                             DialogInterface.BUTTON_NEGATIVE);  
  144.                                 }  
  145.                             });  
  146.                 }  
  147.             } else {  
  148.                 // if no confirm button just set the visibility to GONE  
  149.                 layout.findViewById(R.id.negativeButton).setVisibility(  
  150.                         View.GONE);  
  151.             }  
  152.             // set the content message  
  153.             if (message != null) {  
  154.                 ((TextView) layout.findViewById(R.id.message)).setText(message);  
  155.             } else if (contentView != null) {  
  156.                 ((LinearLayout) layout.findViewById(R.id.content))  
  157.                         .removeAllViews();  
  158.                 ((LinearLayout) layout.findViewById(R.id.content)).addView(  
  159.                         contentView, new LayoutParams(LayoutParams.FILL_PARENT,  
  160.                                 LayoutParams.FILL_PARENT));  
  161.             }  
  162.             dialog.setContentView(layout);  
  163.             return dialog;  
  164.         }  
  165.   
  166.     }  
  167. }  

4.Activity中如何调用:

  1. CustomDialog.Builder builder = new CustomDialog.Builder(this);  
  2. builder.setMessage("这个就是自定义的提示框");  
  3. builder.setTitle("提示");  
  4. builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {  
  5.     public void onClick(DialogInterface dialog, int which) {  
  6.         dialog.dismiss();  
  7.         //设置你的操作事项  
  8.     }  
  9. });  
  10.   
  11. builder.setNegativeButton("取消",  
  12.         new android.content.DialogInterface.OnClickListener() {  
  13.             public void onClick(DialogInterface dialog, int which) {  
  14.                 dialog.dismiss();  
  15.             }  
  16.         });  
  17.   
  18. builder.create().show();  
时间: 2024-10-29 18:10:15

Android自定义Dialog(美化界面)的相关文章

Android 自定义Dialog 实例_Android

开发中经常需要请求网络获取数据,我们在请求网络到得到数据时当中需要等待一些时间,为了增加用户体验,我们一般会用一个Dialog来提示用户我们在加载网络数据. 今天我们来实现如下效果的加载中Dialog.   从图中我们可以看到要这个Dialog是图片还有文字组成的,(不过我这里使用代码实现的,没有用图片),以下是这个加载图形的代码: public class LVCircularRing extends View { private float mWidth = 0f; private floa

Android 自定义dialog添加文字超链接,点击报错无法实现跳转

问题描述 Android 自定义dialog添加文字超链接,点击报错无法实现跳转 自定义dialog,添加文字超链接,点击超链接报错,同样方法,在activity中就能实现,什么原因?? 解决方案 Intent中加入这个试试: intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 解决方案二: 报错是报的什么错,, 解决方案三: 抓取log如下 01-01 02:49:07.928: E/InputEventReceiver(3774): Excepti

Android自定义dialog简单实现方法_Android

本文实例讲述了Android自定义dialog简单实现方法.分享给大家供大家参考,具体如下: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.function_music); // 实例化新的窗口 Window w = getWindow(); // 获取默认显示数据 Display display

Android自定义dialog简单实现方法

本文实例讲述了Android自定义dialog简单实现方法.分享给大家供大家参考,具体如下: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.function_music); // 实例化新的窗口 Window w = getWindow(); // 获取默认显示数据 Display display

Android自定义dialog可选择展示年月日时间选择栏

自定义dialog package com.poptest; import android.app.DatePickerDialog; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.DatePicker; //dialog类 public class YearPickerDialog extends DatePickerD

Android自定义Dialog实现文字动态加载效果_Android

之前在技术问答上面看到一个提问 "加载中-" 后面三个点是动态的,这么一个效果实现.想来想去,好像没想到好的处理方式. 尝试了一下,以一个最笨的方式实现了.先来看一下效果 : 我是通过自定义一个Dialog,加载中的效果,是在Dialog内部实现的,进度还是从Activity里面控制的. 下面是Dialog实现类: public class CustomDialog extends AlertDialog { public CustomDialog(Context context) {

android 自定义dialog,窗口动画

http://www.apkbus.com/android-17050-1-1.html 自定义dialog窗口,根据坐标可随意设置dialog显示位置,实现了窗口弹出动画 Java代码: package com.sunxu.org.IndividualityDialog; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.os.Bundle

android 自定义dialog弹出和消失动画

http://308210.blog.51cto.com/298210/703682 自定义dialog窗口,根据坐标可随意设置dialog显示位置,实现了窗口弹出动画   Java代码: package com.sunxu.org.IndividualityDialog; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.os.Bundle

android 自定义Dialog背景透明及显示位置设置

http://blog.csdn.net/fengkuanghun/article/details/6763317 1.自定义Dialog public class SelectDialog extends AlertDialog{ public SelectDialog(Context context, int theme) { super(context, theme); } public SelectDialog(Context context) { super(context); } @