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