Android—关于自定义对话框的工具类


http://www.cnblogs.com/yunfang/p/5548010.html

Android—关于自定义对话框的工具类

开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类。

弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函数的参数中,并且是静态,可以用类直接调用此函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
public  class  MyAutoDialogUtil {
 
     private  static  AlertDialog dialog;
 
     /**
      *
      * @param context
      *            上下文
      * @param text
      *            自定义显示的文字
      * @param id
      *            自定义图片资源
      */
     public  static  void  showScanNumberDialog( final  Context context, String text,
             int  id) {
         // SysApplication.getInstance().exit();
         AlertDialog.Builder builder =  new  AlertDialog.Builder(context);
         // 创建对话框
         dialog = builder.create();
         // 没有下面这句代码会导致自定义对话框还存在原有的背景
 
         // 弹出对话框
         dialog.show();
         // 以下两行代码是对话框的EditText点击后不能显示输入法的
         dialog.getWindow().clearFlags(
                 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                         | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
         dialog.getWindow().setSoftInputMode(
                 WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
         // *** 主要就是在这里实现这种效果的.
         // 设置窗口的内容页面,shrew_exit_dialog.xml文件中定义view内容
         Window window = dialog.getWindow();
         window.setContentView(R.layout.auto_dialog);
         TextView tv_scan_number = (TextView) window
                 .findViewById(R.id.tv_dialoghint);
         tv_scan_number.setText(text);
         // 实例化确定按钮
         Button btn_hint_yes = (Button) window.findViewById(R.id.btn_hint_yes);
         // 实例化取消按钮
         Button btn_hint_no = (Button) window.findViewById(R.id.btn_hint_no);
         // 实例化图片
         ImageView iv_dialoghint = (ImageView) window
                 .findViewById(R.id.iv_dialoghint);
         // 自定义图片的资源
         iv_dialoghint.setImageResource(id);
         btn_hint_yes.setOnClickListener( new  OnClickListener() {
 
             @Override
             public  void  onClick(View arg0) {
                 // TODO Auto-generated method stub
                 Toast.makeText(context,  "确定" 0 ).show();
             }
         });
         btn_hint_no.setOnClickListener( new  OnClickListener() {
 
             @Override
             public  void  onClick(View arg0) {
                 // TODO Auto-generated method stub
                 Toast.makeText(context,  "取消" 0 ).show();
             }
         });
     }
 
     public  static  void  dismissScanNumberDialog() {
         dialog.dismiss();
     }
 
}

 对话框的xml文件布局:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?xml version= "1.0"  encoding= "utf-8" ?>
<LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android"
     android:layout_width= "match_parent"
     android:layout_height= "match_parent"
     android:background= "@drawable/app_customs_autodialog_background"
     android:gravity= "center"
     android:orientation= "vertical"  >
 
     <LinearLayout
         android:layout_width= "match_parent"
         android:layout_height= "wrap_content"
         android:orientation= "horizontal"
         android:padding= "16dp"  >
 
         <ImageView
             android:id= "@+id/iv_dialoghint"
             android:layout_width= "100dp"
             android:layout_height= "100dp"
             android:layout_gravity= "center_vertical"
             android:layout_marginRight= "16dp"
             android:src= "@drawable/app_customs_choose_background"  />
 
         <LinearLayout
             android:layout_width= "match_parent"
             android:layout_height= "wrap_content"
             android:orientation= "vertical"  >
 
             <TextView
                 android:layout_width= "wrap_content"
                 android:layout_height= "wrap_content"
                 android:text= "提示"
                 android:textColor= "#000"
                 android:textSize= "22sp"  />
 
             <TextView
                 android:layout_width= "wrap_content"
                 android:layout_height= "wrap_content"
                 android:layout_marginTop= "8dp"
                 android:text= "点击确定进入"
                 android:textColor= "#f00"
                 android:textSize= "20sp"  />
 
             <TextView
                 android:id= "@+id/tv_dialoghint"
                 android:layout_width= "wrap_content"
                 android:layout_height= "wrap_content"
                 android:layout_marginTop= "4dp"
                 android:text= "下一步 >>"
                 android:textColor= "#f00"
                 android:textSize= "20sp"  />
         </LinearLayout>
     </LinearLayout>
 
     <View
         android:layout_width= "match_parent"
         android:layout_height= "0.1dp"
         android:background= "#000"  />
 
     <LinearLayout
         android:layout_width= "match_parent"
         android:layout_height= "wrap_content"
         android:orientation= "horizontal"  >
 
         <Button
             android:id= "@+id/btn_hint_yes"
             android:layout_width= "0dp"
             android:layout_height= "wrap_content"
             android:layout_weight= "1"
             android:background= "@drawable/app_custom_changeactivity_btn_yess"
             android:padding= "8dp"
             android:text= "确定"
             android:textColor= "#1e9ee1"
             android:textSize= "20sp"  />
 
         <View
             android:layout_width= "0.1dp"
             android:layout_height= "match_parent"
             android:background= "#000"  />
 
         <Button
             android:id= "@+id/btn_hint_no"
             android:layout_width= "0dp"
             android:layout_height= "wrap_content"
             android:layout_weight= "1"
             android:background= "@drawable/app_custom_changeactivity_btn_yess"
             android:padding= "8dp"
             android:text= "取消"
             android:textColor= "#1e9ee1"
             android:textSize= "20sp"  />
     </LinearLayout>
 
</LinearLayout>

 Activity中弹出对话框函数的实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class MainActivity extends Activity {
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         Button button 1 =(Button) findViewById(R.id.button 1 );
         button 1 .setOnClickListener(new OnClickListener() {
             
             @Override
             public void onClick(View arg 0 ) {
                 // TODO Auto-generated method stub
                 MyAutoDialogUtil.showScanNumberDialog(MainActivity.this,  "自定义文字" , R.drawable.app_customs_choose_background);
             }
         });
     }
 
 
}

 MainActivity中调用了MyAutoDialogUtil类中的showScanNumberDialog()方法,并将上下文,自定义的内容和图片的资源传递到参数中从而得到需要的效果。

上图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值