您的位置:首页 > 运维架构

弹出窗口的两种实现方式 PopupWindow 和 Activity

2012-11-20 12:18 399 查看
本人小菜一个。目前只见过两种弹出框的实现方式,第一种是最常见的PopupWindow,第二种也就是Activity的方式是前几天才见识过。感觉很霸气哦。没想到,activity也可以做伪窗口。

先贴上最常见的方法,主要讲activity的方法。

一、弹出PopupWindow

View Code

1 <?xml version="1.0" encoding="UTF-8"?>
2     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3         android:id="@+id/exit_layout"
4         android:layout_width="280dp"
5         android:layout_height="wrap_content"
6         android:gravity="center_horizontal"
7         android:orientation="vertical"
8         android:background="@drawable/confirm_dialog_bg2" >
9
10         <TextView
11             android:layout_width="wrap_content"
12             android:layout_height="wrap_content"
13             android:layout_marginTop="4dp"
14             android:padding="5dp"
15             android:textColor="#333"
16             android:textSize="20sp"
17             android:text="退出微信" />
18
19         <TextView
20             android:layout_width="wrap_content"
21             android:layout_height="wrap_content"
22             android:textColor="#333"
23             android:layout_marginTop="1dp"
24             android:padding="10dp"
25             android:textSize="16sp"
26             android:gravity="center_horizontal"
27             android:text="退出后,你将收不到新的消\n息.确定要退出?" />
28
29
30         <LinearLayout
31             android:layout_width="wrap_content"
32             android:layout_height="wrap_content"
33             android:layout_marginTop="33dp"
34             android:layout_marginBottom="8dp"
35              >
36
37             <Button
38               android:id="@+id/exitBtn0"
39               android:layout_width="110dp"
40               android:layout_height="wrap_content"
41               android:text="是"
42               android:textSize="16sp"
43               android:textColor="#fff"
44               android:background="@drawable/btn_style_green"
45               android:gravity="center"
46               android:onClick="exitbutton0"
47               />
48
49             <Button
50               android:id="@+id/exitBtn1"
51               android:layout_width="110dp"
52               android:layout_height="wrap_content"
53               android:layout_marginLeft="10dp"
54               android:text="否"
55               android:textSize="16sp"
56               android:textColor="#333"
57               android:background="@drawable/btn_style_white"
58               android:gravity="center"
59               android:onClick="exitbutton1"
60               />
61         </LinearLayout>
62
63     </LinearLayout>


分析,弹出exit这个框很简单,本身就是activity,在主界面用startavtivity等方法像普通activity启动。
关键是如何做到点击其他地方退出和如何关闭程序。

1、点击其他地方退出,只要监听OnClickListener让所有的点击都退出就行了(除了xml中指定按钮事件之外)。

2、退出主程序。只要在出程序中将主程序自己设置成静态对象,在外部调用即可 public static MainWeixin instance=null;

上面的布局和activity并不能将activity的窗体展现在主界面之上,看起来像个弹出框。下面是弹出框的styles配置:

1     <style name="MyDialogStyle">
2         <item name="android:windowBackground">@android:color/transparent</item>
3         <item name="android:windowFrame">@null</item>
4         <item name="android:windowNoTitle">true</item>
5         <item name="android:windowIsFloating">true</item>
6         <item name="android:windowIsTranslucent">true</item>
7         <item name="android:windowContentOverlay">@null</item>
8         <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
9         <item name="android:backgroundDimEnabled">true</item>
10     </style>


下面我们来分析一下这个布局的含义及重点:

重点1、<item name="android:windowBackground">@android:color/transparent</item>窗口背景色

重点2、<item name="android:windowFrame">@null</item>Dialog的windowFrame框为无

重点4、<item name="android:windowIsFloating">true</item>是否浮现在activity之上

重点5、<item name="android:windowIsTranslucent">true</item>窗口是否半透明——是(与第一条配合使用)

重点6、<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>窗口弹出效果

重点7、<item name="android:backgroundDimEnabled">true</item> 是否允许背景模糊

重点8、<item name="android:windowContentOverlay">@null</item>这个不设置的话,可能会出现边框黑线

[b]以上代码都是牛人们的功劳,我拿来做一分析,给更多需要的朋友。


我在众多牛人的指引下一步步成长,感谢牛人们。

参考链接:

Dialog 顶部黑线问题

demo下载

buaa版防微信demo http://download.csdn.net/detail/win_xiang/4788158
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: