本文实例讲述了Android 开发使用PopupWindow实现弹出警告框的复用类。分享给大家供大家参考,具体如下:
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
package com.***.popupwindow; import ******; public abstract class MyPopupWindow { private PopupWindow popupWindow; private Activity context; private String content; private String positiveWord = "确定" ; private String negativeWord = "取消" ; /** * 构造函数 * * @param context */ public MyPopupWindow(Activity context) { this .context = context; } /** * 显示警示框 */ public void show() { View popView = View.inflate(context, R.layout.popup, null ); popupWindow = new PopupWindow(context); popupWindow.setHeight( 400 ); popupWindow.setWidth( 700 ); popupWindow.setOutsideTouchable( true ); popupWindow.setFocusable( true ); popupWindow.setContentView(popView); popupWindow.showAtLocation(context.getWindow().getDecorView(), Gravity.CENTER, 0 , 0 ); TextView tv_pop_text = (TextView) popView.findViewById(R.id.tv_pop_text); tv_pop_text.setText(content); Button bt_pop_sure = (Button) popView.findViewById(R.id.bt_pop_sure); bt_pop_sure.setText(positiveWord); bt_pop_sure.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { sureClick(); } }); Button bt_pop_cancel = (Button) popView.findViewById(R.id.bt_pop_cancel); bt_pop_cancel.setText(negativeWord); bt_pop_cancel.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { cancelClick(); } }); } /** * 确定键按下后执行 */ public abstract void sureClick(); /** * 取消键按下后执行 */ public abstract void cancelClick(); /** * 为警示设置警示内容 * * @param content */ public void setContent(String content) { this .content = content; } /** * 设置确定键文字 * * @param positiveWord */ public void setPositiveWord(String positiveWord) { this .positiveWord = positiveWord; } /** * 设置取消键文字 * * @param negativeWord */ public void setNegativeWord(String negativeWord) { this .negativeWord = negativeWord; } /** * 手动取消警示框 */ public void dismiss() { popupWindow.dismiss(); } } |
其中弹出框用到的布局popup.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
|
<? 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 = "@android:color/white" android:orientation = "vertical" > < TextView android:id = "@+id/tv_pop_text" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_weight = "1" android:gravity = "center" /> < TextView android:layout_width = "match_parent" android:layout_height = "1px" android:background = "@android:color/darker_gray" /> < LinearLayout android:layout_width = "match_parent" android:layout_height = "wrap_content" android:orientation = "horizontal" > < Button android:id = "@+id/bt_pop_sure" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:background = "@android:color/transparent" android:layout_weight = "1" /> < TextView android:layout_width = "1px" android:layout_height = "match_parent" android:background = "@android:color/darker_gray" /> < Button android:id = "@+id/bt_pop_cancel" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:background = "@android:color/transparent" android:layout_weight = "1" /> </ LinearLayout > </ LinearLayout > |
下面简单的使用一下:在界面放一个按钮,按钮点击后弹出警告框。代码如下:
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
|
package com.toprs.popupwindow; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.AttributeSet; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.PopupWindow; import android.widget.SeekBar; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private PopupWindow popupWindow; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button); button.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { MyPopupWindow myPopupWindow = new MyPopupWindow(MainActivity. this ) { @Override public void sureClick() { Toast.makeText(MainActivity. this , "确定" , Toast.LENGTH_SHORT).show(); } @Override public void cancelClick() { Toast.makeText(MainActivity. this , "取消" , Toast.LENGTH_SHORT).show(); } }; myPopupWindow.setContent( "确定退出?" ); myPopupWindow.show(); } }); } } |
即如下效果:
So,以后使用只需要简单调用几句代码就好了!
希望本文所述对大家Android程序设计有所帮助。
原文链接:https://blog.csdn.net/wangtaocsdn/article/details/71330670