• Easy Tag Write(3.1)


      1 package skyseraph.android.util;
      2 
      3 import skyseraph.easytagwrite.R;
      4 import android.app.Dialog;
      5 import android.content.Context;
      6 import android.content.DialogInterface;
      7 import android.graphics.drawable.Drawable;
      8 import android.view.LayoutInflater;
      9 import android.view.View;
     10 import android.view.ViewGroup.LayoutParams;
     11 import android.widget.Button;
     12 import android.widget.ImageView;
     13 import android.widget.LinearLayout;
     14 import android.widget.TextView;
     15 
     16 public class CustomDialog extends Dialog {
     17     public CustomDialog(Context context, int theme) {
     18         super(context, theme);
     19     }
     20 
     21     public CustomDialog(Context context) {
     22         super(context);
     23     }
     24 
     25     /**
     26      * Helper class for creating a custom dialog
     27      */
     28     public static class Builder {
     29 
     30         private Context context;
     31 
     32         private String title;
     33 
     34         private String message;
     35 
     36         private String positiveButtonText;
     37 
     38         private String negativeButtonText;
     39 
     40         private View contentView;
     41 
     42         private Drawable drawable;
     43 
     44         private DialogInterface.OnClickListener positiveButtonClickListener,
     45                 negativeButtonClickListener;
     46 
     47         public Builder(Context context) {
     48             this.context = context;
     49         }
     50 
     51         /**
     52          * Set the Dialog message from String
     53          * 
     54          * @param title
     55          * @return
     56          */
     57         public Builder setMessage(String message) {
     58             this.message = message;
     59             return this;
     60         }
     61 
     62         /**
     63          * Set the Dialog message from resource
     64          * 
     65          * @param title
     66          * @return
     67          */
     68         public Builder setMessage(int message) {
     69             this.message = (String)context.getText(message);
     70             return this;
     71         }
     72 
     73         /**
     74          * Set the Dialog title from resource
     75          * 
     76          * @param title
     77          * @return
     78          */
     79         public Builder setTitle(int title) {
     80             this.title = (String)context.getText(title);
     81             return this;
     82         }
     83 
     84         /**
     85          * Set the Dialog title from String
     86          * 
     87          * @param title
     88          * @return
     89          */
     90         public Builder setTitle(String title) {
     91             this.title = title;
     92             return this;
     93         }
     94 
     95         /***
     96          * Set the Dialog Icon from resource
     97          * 
     98          * @param imageres
     99          * @return
    100          */
    101         public Builder setIcon(int imageres) {
    102 
    103             this.drawable = context.getResources().getDrawable(imageres);
    104 
    105             return this;
    106         }
    107 
    108         /***
    109          * Set the Dialog Icon from Drawable
    110          * 
    111          * @param drawable
    112          * @return
    113          */
    114         public Builder setIcon(Drawable drawable) {
    115             this.drawable = drawable;
    116             return this;
    117         }
    118 
    119         /**
    120          * Set a custom content view for the Dialog. If a message is set, the
    121          * contentView is not added to the Dialog...
    122          * 
    123          * @param v
    124          * @return
    125          */
    126         public Builder setContentView(View v) {
    127             this.contentView = v;
    128             return this;
    129         }
    130 
    131         /**
    132          * Set the positive button resource and it's listener
    133          * 
    134          * @param positiveButtonText
    135          * @param listener
    136          * @return
    137          */
    138         public Builder setPositiveButton(int positiveButtonText,
    139                 DialogInterface.OnClickListener listener) {
    140             this.positiveButtonText = (String)context.getText(positiveButtonText);
    141             this.positiveButtonClickListener = listener;
    142             return this;
    143         }
    144 
    145         /**
    146          * Set the positive button text and it's listener
    147          * 
    148          * @param positiveButtonText
    149          * @param listener
    150          * @return
    151          */
    152         public Builder setPositiveButton(String positiveButtonText,
    153                 DialogInterface.OnClickListener listener) {
    154             this.positiveButtonText = positiveButtonText;
    155             this.positiveButtonClickListener = listener;
    156             return this;
    157         }
    158 
    159         /**
    160          * Set the negative button resource and it's listener
    161          * 
    162          * @param negativeButtonText
    163          * @param listener
    164          * @return
    165          */
    166         public Builder setNegativeButton(int negativeButtonText,
    167                 DialogInterface.OnClickListener listener) {
    168             this.negativeButtonText = (String)context.getText(negativeButtonText);
    169             this.negativeButtonClickListener = listener;
    170             return this;
    171         }
    172 
    173         /**
    174          * Set the negative button text and it's listener
    175          * 
    176          * @param negativeButtonText
    177          * @param listener
    178          * @return
    179          */
    180         public Builder setNegativeButton(String negativeButtonText,
    181                 DialogInterface.OnClickListener listener) {
    182             this.negativeButtonText = negativeButtonText;
    183             this.negativeButtonClickListener = listener;
    184             return this;
    185         }
    186 
    187         /**
    188          * Create the custom dialog
    189          */
    190         public CustomDialog create() {
    191             LayoutInflater inflater = (LayoutInflater)context
    192                     .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    193             // instantiate the dialog with the custom Theme
    194             final CustomDialog dialog = new CustomDialog(context, R.style.Dialog);
    195             View layout = inflater.inflate(R.layout.dialog, null);
    196             dialog.addContentView(layout, new LayoutParams(LayoutParams.MATCH_PARENT,
    197                     LayoutParams.WRAP_CONTENT));
    198             // set the dialog title
    199             ((TextView)layout.findViewById(R.id.title)).setText(title);
    200             if (drawable != null) {
    201                 ((ImageView)layout.findViewById(R.id.imageView1)).setImageDrawable(drawable);
    202             } else {
    203                 ((ImageView)layout.findViewById(R.id.imageView1)).setVisibility(View.GONE);
    204             }
    205             // set the confirm button
    206             if (positiveButtonText != null) {
    207                 ((Button)layout.findViewById(R.id.positiveButton)).setText(positiveButtonText);
    208                 if (positiveButtonClickListener != null) {
    209                     ((Button)layout.findViewById(R.id.positiveButton))
    210                             .setOnClickListener(new View.OnClickListener() {
    211                                 public void onClick(View v) {
    212                                     positiveButtonClickListener.onClick(dialog,
    213                                             DialogInterface.BUTTON_POSITIVE);
    214                                 }
    215                             });
    216                 }
    217             } else {
    218                 // if no confirm button just set the visibility to GONE
    219                 layout.findViewById(R.id.positiveButton).setVisibility(View.GONE);
    220             }
    221             // set the cancel button
    222             if (negativeButtonText != null) {
    223                 ((Button)layout.findViewById(R.id.negativeButton)).setText(negativeButtonText);
    224                 if (negativeButtonClickListener != null) {
    225                     ((Button)layout.findViewById(R.id.negativeButton))
    226                             .setOnClickListener(new View.OnClickListener() {
    227                                 public void onClick(View v) {
    228                                     negativeButtonClickListener.onClick(dialog,
    229                                             DialogInterface.BUTTON_NEGATIVE);
    230                                 }
    231                             });
    232                 }
    233             } else {
    234                 // if no confirm button just set the visibility to GONE
    235                 layout.findViewById(R.id.negativeButton).setVisibility(View.GONE);
    236             }
    237             // set the content message
    238             if (message != null) {
    239                 ((TextView)layout.findViewById(R.id.message)).setText(message);
    240             } else if (contentView != null) {
    241                 // if no message set
    242                 // add the contentView to the dialog body
    243                 ((LinearLayout)layout.findViewById(R.id.content)).removeAllViews();
    244                 ((LinearLayout)layout.findViewById(R.id.content)).addView(contentView,
    245                         new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    246             }
    247             dialog.setContentView(layout);
    248 
    249             return dialog;
    250         }
    251 
    252     }
    253 
    254 }
  • 相关阅读:
    积累学习
    华为手机 android8.0APP更新时出现安装包解析异常的提示及安装闪退(无反应)问题
    新建Application 报错android.app.Application cannot be cast
    Android Studio Gradle无法获取pom文件
    取消设置透明状态栏,使 ContentView 内容不再覆盖状态栏
    Android欢迎页短暂白屏
    android Toast提示异常:java.lang.RuntimeException: Can't create handler inside thread that has not called
    ransformResourcesWithMergeJavaResForDebug问题
    android studio toolbar遮挡住下面控件内容
    Android VideoView无法播放网络视频
  • 原文地址:https://www.cnblogs.com/jyycnblogs/p/6035289.html
Copyright © 2020-2023  润新知