有时候在应用中经常能看到点击按钮弹出一个窗口,提示你该干嘛。例如,微信、QQ的一些分享窗口。下面用代码来实现弹出窗口的功能,
//加载一个布局文件,布局文件就是你的弹出窗口的布局,把需要放的一些控件放到布局文件里面就可以啦。
View contentView1 = LayoutInflater.from(this).inflate(R.layout.share_poplayout, null); //新建弹出窗口,将布局加载进去,同时设置弹出窗口的宽度和高度,宽度适应屏幕,高度为100px; PopupWindow popWindow = new PopupWindow(contentView1, LinearLayout.LayoutParams.MATCH_PARENT, 100); //设置在窗口外面点击时会自动收起来,一般的应用里面的弹出窗口,当你点击窗口外面的时候会自动收起来。 popWindow.setOutsideTouchable(true); //这个方法是和上面设置将窗口收起来的方法一起使用的,这点一定要注意,不设置这个背景,上面那个方法是无效的,当然给出的背景只是个空架子的 对象,并没有实际内容。 popWindow.setBackgroundDrawable(new BitmapDrawable()); //将弹出窗口设置可以获得焦点,当我们按回退键时一般窗口也会收起来,这是为了响应回退键的方法,如果不设置,按下回退键直接会退出 Activity。 popWindow.setFocusable(true); //这里是为弹出窗口设置动画的Style,这里是为了实现弹出窗口的显示和隐藏的效果,需要先在res文件下面新建个anim动画文件夹, 然后添加动画文件,出入动画代码如下:<set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="2000" android:fromYDelta="100" android:toYDelta="0" ></translate> </set><set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromYDelta="0" android:toYDelta="100" android:duration="2000"></translate> </set>
由于这个方法传进来的参数是一个Style的类型,所以我们需要将创建的动画加到style文件里面,所以我们在style
文件下自定义一个style,并且加上窗口进入动画和窗口退出动画的的属性,并且指向动画文件夹下的动画文件<style name="pop_window_anim"> <item name="android:windowEnterAnimation">@anim/in</item> <item name="android:windowExitAnimation">@anim/out</item> </style>//然后将style引用进来
popWindow.setAnimationStyle(R.style.pop_window_anim);
//弹出窗口的显示方法有四个popupWindow.showAsDropDown();showAsDropDown()有三个重载方法,传入的参数是显示在哪个控件下面,对齐方式,x方向上的偏移量,y方向上的偏移量。参数有多
有少,都是显示在控件下面的方法。popWindow.showAtLocation(view, Gravity.BOTTOM,0,0);//这个方法是可以按Gravity里面的方向常量,在任意位置显示,第一个参数view可以是任意一个view控件,只是一个标志而已,没有实际意义,
一般给它传入响应弹出窗口的控件的view就可以,第二个参数是想要显示的方向,后面两个参数分别是x,y方向上的偏移量。
这里最需要注意的一点是:所有的关于弹出窗口的属性设置一定要放
到带有show方法的前面,不然会有的效果实现不了。