只是自己用的时候顺便整理了一下
创建一个popupwindow
view的布局文件自己写一个就好了,这里就不说了
View view= LayoutInflater.from(context).inflate(R.layout.view, null); //背景颜色 view.setBackgroundColor(Color.WHITE); PopupWinow popupWindow = new PopupWindow(view,LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, true); //显示(自定义位置) popupWindow .showAtLocation(button, Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL, 0, 0); //popupWindow .showAsDropDown();//显示在控件下面 //关闭 popupWindow.dismiss(); popupWindow.isShowing();//判断当前popupwindow是否打开
2.经常用到的,点击窗体外消失
// 需要设置一下此参数,点击外边可消失 popupWindow.setBackgroundDrawable(new BitmapDrawable(getResources(), (Bitmap) null)); // 点击窗外可取消 popupWindow.setTouchable(true); popupWindow.setOutsideTouchable(true);
3.关于窗体会被软件盘遮挡
// 设置pop被键盘顶上去,而不是遮挡 popupWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED); popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
4.关于给popupwindow添加各种动画效果(旋转,渐现,平移...),至于动画效果自己选
(1).给pop设置属性
popupWindow.setAnimationStyle(R.style.popwindow_anim_style); // 设置动画
(2).然后就是在style样式里面写样式了
<style name="popwindow_anim_style"> <item name="android:windowEnterAnimation">@anim/popup_show</item> <!-- 指定显示时的动画xml --> <item name="android:windowExitAnimation">@anim/popup_gone</item> <!-- 指定消失时的动画xml --> </style>
(3).最后就是在anim里面配置动画效果了
popup_show:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:fromXDelta="-100%" android:toXDelta="0" android:fromYDelta="0" android:toYDelta="0" android:duration="500" /> </set>
popup_gone:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:fromXDelta="0" android:toXDelta="-100%" android:fromYDelta="0" android:toYDelta="0" android:duration="300" /> </set>
5.pop的弹窗效果可以通过在AndroidManifest.xml里面设置成Theme.Dialog,
android:theme="@android:style/Theme.Dialog"
个人感觉如果页面的内容稍复杂点不喜欢用pop容易出现各种问题。一提的是,使用activity回调时如果startActivityForResult()刚刚执行完就调用了onActivityResult()而没有将相应的值传回来,在AndroidManifest.xml里将当前activity的launchMode去掉
android:launchMode="singleTask"
以上只是提供一些思路或方式,希望能有用.如有不对的地方还请见谅,当然更希望能够互相丰富一下内容