PopupWindow,也就是弹出窗体,是我们在许多app常见的一种界面形式,在弹出的窗体的中可以显示任意的ui控件,并且可以在屏幕的任意位置显示,非常的灵活。下面是使用popupWindow的一些主要步骤:
1 在res/layout目录下定义一个你想在PopupWindow中显示的界面,如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:background="@android:color/darker_gray"
android:orientation="vertical" >
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="popupwindow的按钮1"
android:id="@+id/popup_btn1"/>
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ic_launcher"
android:id="@+id/popup_iv"/>
</LinearLayout>
将上述文件保存为winow_layout.xml,在里面显示了一个Button和ImageView。
2 在代码中建立PopupWindow对象并设置相关参数:
PopupWindow window=new PopupWindow(this);
view =View.inflate(this, R.layout.popup_window, null);
window.setWindowLayoutMode(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
除了setWindowLayoutMode方法,设置PopupWIndow的大小,你也可以调用
window.setHeight(int height);
window.setWidth(int width);
来设置具体的大小, 不管哪种方式一定要记得设置大小,否则将无法显示出来
3 接着显示PopupWIndow有三个方法,首先是:
window.showAsDropDown(View anchor);
该方法把PopupWindow显示在所给的anchor的下方
另一个方法是
window.showAsDropDown(View anchor,int xoff,int yoff);
这个方法也是吧PopupWindow显示在所给的anchor的下方,并可以设置x,y方向上的偏移
最后一个方法是
window.showAtLocation(View parent,int gravity,int x,int y);
这个方法中的第一个参数我不清楚有什么用,因为这个方法是以屏幕作为参考的,而不是像第一和第二个方法那样以给定的锚点来确定位置,所以第一个参数不管是什么都不影响显示位置(当然是否影响其他方面我不清楚),第二个参数的是设置PopupWindow与屏幕(注意是和屏幕而不是和第一个参数view)的对齐方式,注意Gravity.NOGRAVITY相当于左对齐且顶部对齐,第三第四个参数设置x和y轴上的位置偏移。
4通过3个显示方法就可以,在灵活的在屏幕中显示PopupWindow了,下面讲述如何为弹出窗体的出现和消失设置动画:
在PopupWindow中有一个setAnimationStyle(int animationStyle);方法,注意该方法的参数是一个style资源,而不是一个动画资源,style资源定义如下:
<style name="PopupAnimation">
<item name="android:windowEnterAnimation">@anim/popupwindow_enter</item>
<item name="android:windowExitAnimation">@anim/popupwindow_exit</item>
</style>
当然你也可以通过给PopupWIndow中显示的内容添加动画,来实现出现和消失动画,如果采用这种方式,最好将PopupWindow的背景设置透明
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
不然会非常的丑
好了以上就是PopupWindow的大致用法,如果有什么错误的地方还请指出。