PopupWindow可以实现浮层效果,而且可以自定义显示位置,出现和退出时的动画,比如新浪微博顶部栏的微博分组就是用PopupWindow实现的。
一、实例化PopupWindow,这里用R.layout.group_list填充mPopupWindow,并指定宽高。
mPopupLayout = getLayoutInflater().inflate(R.layout.group_list, null);
mPopupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.transparent)); //必须为PopupWindow设置一个背景,点击其他区域才能让PopupWindow消失
mPopupWindow = new PopupWindow(mPopupLayout, width, height, true);
二、指定PopupWindow的显示位置
//mAncorView是页面中的某个View,默认是将mPopupWindow与mAncorView的左下角对齐,如果空间不够显示,则将将mPopupWindow与mAncorView的左上角对齐。offsetX和offsetY是mPopupWindow位置的相对偏移,很容易理解。
mPopupWindow.showAsDropDown(mAncorView, offsetX, offsetY);
也可使用下面方法
//下面的方法是用屏幕上的绝对坐标显示,mPopupWindow
//我们往往不知道mPopupWindow要显示的精确位置,通常先计算页面上某个元素mView的位置,在进行偏移
//得到mView在屏幕中的坐标
int [] pos = new int[2];
mView.getLocationOnScreen(pos);
offsetY = pos[1] + mView.getHeight();
offsetX = 0;
//显示mPopupWindow
mPopupWindow.showAtLocation(mView, Gravity.TOP|Gravity.CENTER_HORIZONTAL, offsetX, offsetY);//这里的第一个参数没搞明白什么用,android官方文档说是为了获取token
三、为PopupWindow指定动画
先定义动画
PopupWindow出现时的动画,popup_enter.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale android:fromXScale="1.0" android:toXScale="1.0"
android:fromYScale="0" android:toYScale="1.0"
android:pivotX="50%" android:pivotY="0%"
android:duration="100" />
</set>
PopupWindow消失时的动画,popup_exit.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:fromXScale="1.0" android:toXScale="1.0"
android:fromYScale="1.0" android:toYScale="0"
android:pivotX="50%" android:pivotY="0%"
android:duration="50" />
</set>
再设定动画的style
<style name="PopupAnimation" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/popup_enter</item>
<item name="android:windowExitAnimation">@anim/popup_exit</item>
</style>
最后通过Java代码设置动画
mPopupWindow.setAnimationStyle(R.style.PopupAnimation);
分享到:
相关推荐
仿QQ好友动态添加说说、图片菜单滑动移进移出效果--在指定控件下面显示popupwindow动画不移效果
简单有效的实现,轻量级的百度导航,通过借口的使用百度app直接跳转到导航界面,里面的key是个人的,如果需要请自己到百度开发者平台申请
实现在android的popupwindow中显示listview.docx
通过gridView实现的popupWindow效果
PopupWindow的使用,在一个Activity中显示PopupWindow,并使用一个Button来隐藏PopupWindow
Android弹窗实现之Popupwindow及DialogFragment。创建并实现PopupWindow布局 实现PopupWindow对象实例 设置PopupWindow背景、动画属性、控件实现及事件监听 显示PopupWindow及位置设定。
接下来,在你的Java或Kotlin代码中,创建并显示PopupWindow实例。在创建PopupWindow时,你需要将刚才定义的布局文件作为参数传入。这样,当PopupWindow显示时,它就会具有你设置的半透明背景。 最后,确保你的...
PopupWindow之显示顶层对话框代码
PopupWindow封装-view上方显示和下方显示
让popupwindow显示在view的上方并与该view水平居中对齐
此篇博客实现的功能是:点击界面中的图片,跳出一个PopupWindow,PopupWindow中含有相应的文字和图标,并且在显示PopupWindow的时候,背景为半透明。 看图描述:点击加号,跳出PopupWindow,其中包含三个图片,点击...
点击按钮在屏幕下方会出现PopupWindow,PopupWindow中的PickerView可以用来选择时间。
前几天要用到PopupWindow,一时竟想不起来怎么用,赶紧上网查了查,自己写了个demo,并在此记录... 显示PopupWindow。 其中,第二步是可选的(不过基本上都要进行第二步的设置)。下面是一个简单的例子: // 用于Popup
实现的功能有弹出的PopupWindow上有EditText能与软键盘并存不冲突,弹出PopupWindow的时候背景自动改变灰度为半透明黑色,消失后背景灰度复原,PopupWindow还能根据自己的实际需求制定自己想要的弹出动画,以及...
popupwindow中用listView绑定数据并显示在View上方
PopupWindow显示EditText输入内容,EditText失去焦点PopupWindow dismiss,EditText获得焦点PopupWindow show 输入时显示
在android中显示listview自己适配的方式; 博客链接:blog.csdn.net/zgyulongfei
解决popupwindow全屏显示问题,高度可选择是否包含状态栏,更换头像可选择拍照和相册选取,并且可以裁剪。退出程序保存的头像依然保留。
android 封装一个通用PopupWindow,避免重复造轮子,简化代码,方便管理。
Android: PopupWindow 上显示 ListView 并相应 Demo (仿QQ登录界面,待改进)