`
ipjmc
  • 浏览: 707067 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

显示PopupWindow

阅读更多
        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);
分享到:
评论
1 楼 yahier 2012-12-04  
  为什么我的popupwindow 有时不显示呢。经过测试 他被显示了  但就是不可见。里面装载的view的可见的啊  神奇啊啊

相关推荐

    百度地图开发--在指定位置显示PopupWindow

    "百度地图开发--在指定位置显示PopupWindow"这个主题,主要涉及了如何结合百度地图API,在地图上创建一个可以弹出并显示详细信息的窗口。下面将详细介绍这一过程,以及涉及到的关键技术点。 首先,我们需要理解...

    仿QQ好友动态添加说说、图片菜单滑动移进移出效果--在指定控件下面显示popupwindow动画不移效果

    在需要显示PopupWindow的地方,实例化这个自定义类,然后调用显示方法。 `animationtest`文件夹可能包含了示例项目的资源文件,如XML布局文件(用于定义PopupWindow的结构和内容),以及`.xml`格式的动画资源文件,...

    PopupWindow之显示顶层对话框代码

    5. 显示PopupWindow:调用`showAsDropDown(View anchor, int xoff, int yoff)`或`showAtLocation(View, int, int, int)`方法,让PopupWindow显示出来。`anchor`是PopupWindow相对于哪个视图显示,`xoff`和`yoff`是相...

    让popupwindow显示在view的上方并与该view水平居中对齐

    // 显示PopupWindow popupWindow.showAsDropDown(targetView, xOffset, yOffset); ``` 这里,`dpToPx()`是一个转换函数,用于将密度无关像素(dp)转换为像素(px),以适应不同屏幕密度的设备。其实现如下: ```...

    PopupWindow封装-view上方显示和下方显示

    这样,我们就可以通过调用PopupUtil.showAbove或showBelow方法轻松地在任意view上方或下方显示PopupWindow,并且可以方便地扩展其他功能。 在实际项目中,可能还需要处理各种边界情况,例如当PopupWindow超出屏幕...

    PopupWindow

    - 在Activity或Fragment中实例化这个自定义类,并调用相关方法显示PopupWindow。 3. **直接调用** - 直接在Activity或Fragment中通过代码创建PopupWindow对象,并设置其布局、宽高等属性,最后调用显示方法。 #...

    popupwindow中显示listview自适配

    现在,我们将ListView添加到PopupWindow的内容视图中,并显示PopupWindow: ```java View popupView = LayoutInflater.from(context).inflate(R.layout.popup_window_layout, null); listView = popupView....

    popupWindow动画显示

    通常,显示PopupWindow的方法是`showAsDropDown()`或`showAtLocation()`: ```java // 在锚点View下方显示 popupWindow.showAsDropDown(anchorView, xOffset, yOffset); // 在指定坐标显示 popupWindow....

    popupwindow中用listView绑定数据并显示在View上方

    总之,要在PopupWindow中使用ListView显示数据,你需要创建一个包含ListView的布局,初始化PopupWindow,设置数据绑定,最后定位并显示PopupWindow。通过这种方式,你可以在Android应用中提供一个动态、交互式的数据...

    安卓popupwindow相关-仿微信popupwindow.zip

    (3) 显示PopupWindow,可以选择在某个View的上方、下方、左侧或右侧显示。 3. **使用示例**: ```java // 创建View View popupView = LayoutInflater.from(context).inflate(R.layout.popup_window, null); // ...

    安卓 PopupWindow 简单使用学习

    5. 显示PopupWindow,调用showAsDropDown()或showAtLocation()。 在Android Studio中,你可以直接在布局文件中设计PopupWindow的内容,然后在代码中加载这个布局并创建PopupWindow。例如: ```java // 创建布局 ...

    Android: PopupWindow 上显示 ListView 并相应 Demo

    最后,显示PopupWindow可以在需要的时候调用showAsDropDown()或showAtLocation()方法: ```java // 显示在某个View的下方 popupWindow.showAsDropDown(anchorView, 0, 0); // 或者显示在屏幕的指定位置 popupWindow...

    popupwindow实现按钮下方阴影

    4. 显示PopupWindow,通常通过锚定某个View(比如按钮)来决定其位置。 实现阴影效果通常使用`android:elevation`属性,这是Android 5.0(API Level 21)及以上版本引入的Lollipop特性,用于设置元素的Z轴深度,...

    android自定义通用PopupWindow

    // 显示PopupWindow showAtLocation(anchor, Gravity.BOTTOM, 0, 0); } ``` 同时,我们还可以提供一个关闭方法: ```java public void dismissWithAnimation() { Animation animation = AnimationUtils....

    android popupwindow 底部灰色背景

    4. **显示PopupWindow**:接下来,我们需要指定PopupWindow的位置。通常,我们会让它在某个View的底部弹出,使用`showAsDropDown()`或`showAtLocation()`方法。例如,如果想让它在某个按钮下方弹出,可以这样: ```...

    PopupWindow嵌套Demo

    7. **权限问题**:某些设备可能需要权限才能显示PopupWindow,特别是当需要在系统层面上显示时。确保在AndroidManifest.xml中添加相应的权限声明。 通过以上这些注意事项和技巧,我们可以有效地解决"PopupWindow...

    Android PopupWindow使用

    3. **显示PopupWindow**:在某个视图上方或下方显示PopupWindow,需要指定一个锚点View。可以使用`showAsDropDown()`或`showAtLocation()`方法。 ```java View anchorView = findViewById(R.id.anchor_view); ...

Global site tag (gtag.js) - Google Analytics