PopupWindow整理

1.简单使用

使用步骤:

①.创建PopupWindow对象

②.调用popupWindow.showAsDropDown(View v)|popupWindow.showAsLocation(),控制显示位置

③.点击popupwindow以外区域 popupwindow自动消失

方法一重写onTouchEvent(这种方法可以处理popupwindows dimiss的时候一些其他的操作,比如让其他控件的隐藏,消失等):

代码如下:

//focusable要为false(不设置默认的就是False);

popupWindow.setFocusable(false);
//OnTouchEvent代表的是Activity 获得事件(即为PopupWindow之外)

@Override

public boolean onTouchEvent(MotionEvent event) {

// TODO Auto-generated method stub

if (popupWindow != null && popupWindow.isShowing()) {

popupWindow.dismiss();

popupWindow = null;

}

return super.onTouchEvent(event);

}

方法二:设置popupWindow参数(这种方法只能让自身消失,不能够提供其他伴随操作,比如让其他控件的隐藏,消失等)

// 使其聚焦 
                                mPopupWindow.setFocusable(true); 
                                // 设置允许在外点击消失 
                                mPopupWindow.setOutsideTouchable(true); 
                                //刷新状态  
                                mPopupWindow.update(); 
                            
                                //点back键和其他地方使其消失,设置了这个才能触发OnDismisslistener ,设置其他控件                 变化等操作
                                mPopupWindow.setBackgroundDrawable(new BitmapDrawable());

2.用setAnimationStyle来设置popwindow显示消失的动画效果

Ps:个人感觉和大多数控件设置动画类似,比如Imageview

实现步骤:

①.在res/values/style.xml中添加

android:windowEnterAnimation表示进入窗口动画
android:windowExitAnimation表示窗口退出动画

②.在res/anim文件夹下声明所需进入动画

③.在java代码中设置动画

popupWindow.setAnimationStyle(R.style.PopupAnimation);

3.Activity充当PopupWindow

参考资料:

http://www.cnblogs.com/joey-home/archive/2012/07/02/2573855.html

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0303/956.html

http://www.cnblogs.com/winxiang/archive/2012/11/20/2778729.html?

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0702/1627.html

附:

1.关键方法

①.显示PopupWindow:

showAsDropDown(View anchor):相对某个控件的位置(正左下方),无偏移

showAsDropDown(View anchor, int xoff, int yoff):相对某个控件的位置,有偏移

showAtLocation(View parent, int gravity, int x, int y):相对于父控件的位置,可设置偏移或无偏移

时间: 2024-10-12 03:29:43

PopupWindow整理的相关文章

关于Android PopupWindow中实用Spinner控件点击APP Crash情况整理!

场景异常信息如下: android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running? at android.view.ViewRootImpl.setView(ViewRootImpl.java:646) at android.view.WindowManagerGlobal.addView(Wi

Touch事件or手机卫士面试题整理回答(二)

Touch事件or手机卫士面试题整理回答(二) 自定义控件 1. Touch事件的传递机制 顶级View->父View->子View,不处理逆向返回 OnInterceptTouchEvent(),返回值控制Touch是否向下传递. true中断事件,false不中断事件. onTouchEvent() 返回值决定否处理事件.True消耗事件,False不处理事件向上传递. 2. 轮播动画的实现原理 ViewPage和TextView组合实现图片和标题的效果 ViewPage设置setOnPa

android popupwindow大集合

最近业余时间在整理一些资料,发现popupwindow在APP  应用开发还是比较广泛的,今天列举了几种常见的  分享一下 一.自定义下拉列表,类似于网页中三级联动的 二.仿UC底部的MENU菜单 三.仿照微信 四.仿照拍照上传 源码下载地址:http://download.csdn.net/detail/wangliang198901/8225379(不需要任何积分) 

Android 项目优化(七):阿里巴巴Android开发手册整理总结

本来之前觉得Android项目优化系列的文章基本整理完毕了,但是近期又看了一下阿里Android开发手册有了很多收货,想再整理一篇,下面就开工吧. 先在这里列一下之前整理的文章及链接: Android 项目优化(一):项目代码规范优化 Android 项目优化(二):启动页面优化 Android 项目优化(三):MultiDex 优化 Android 项目优化(四):内存优化 Android 项目优化(五):应用启动优化 Android 项目优化(六):项目开发时优化技巧总结 下面是<阿里巴巴A

WPF笔记整理 - Bitmap和BitmapImage

项目中有图片处理的逻辑,因此要用到Bitmap.而WPF加载的一般都是BitmapImage.这里就需要将BitmapImage转成Bitmap 1. 图片的路径要用这样的,假设图片在project下的Images目录,文件名XXImage.png. pack://application:,,,/xxx;component/Images/XXImage.png 2. 代码: Bitmap bmp = null; var image = new BitmapImage(new Uri(this.X

linux 命令 及学习进度综合整理

linux  命令  及学习进度综合整理 pwd 查看当前所在位置 cd  跳转到什么什么目录 ls  显示所有文件和目录 ls -l  显示目录详细信息 cd ..  返回上一级 vi  lnany.txt  创建一个文件 vi  .lnany.txt    创建一个隐藏文件 vim 是 vi 的升级版 功能更多 出现 -bash: vim: command not found 的解决办法 i. 那么如何安裝 vim 呢?输入rpm -qa|grep vim 命令, 如果 vim 已经正确安裝

夏令营讲课内容整理Day 0.

今年没有发纸质讲义是最气的.还好我留了点课件. 第一次用这个估计也不怎么会用,但尝试一下新事物总是好的. 前四天gty哥哥讲的内容和去年差不多,后三天zhn大佬讲的内容有点难,努力去理解吧. 毕竟知识还是需要消化的. 这里我只整理知识点,每天上午评测的题目我会单独处理. 嗯大概就是这样了. 写完后我就会考虑发到博客园里.

linux基本命令整理(三):进程和vim

linux基本命令整理(三) -----------进程和vim 一.进程 1.查看进程 ps:将某个时间点的程序运行的状况截取下来 a:所有的进程 x:后台进程 u:有效的使用者相关的进程(常用组合aux) -IA:也能观察系统所有的数据 axjf:连同部分的程序树状态 -I:今查看和自己bash相关的程序 top:动态的观察进程的变化 -d:后面接描述,就是整个页面刷新的时间:默认是5秒 -b:以批次的方式执行top -n:与-b搭配使用,意义是需要进行几次top的输出结果 如:top -b

检测和整理索引碎片

索引碎片的检测和整理 存储数据是为了查找数据,存储结构影响数据查找的性能.对无序数据进行查找,最快的查找算法是哈希查找:对有序数据进行查找,最快的查找算法是平衡树查找.在传统的关系型数据库中,聚集索引和非聚集索引都是平衡树(B-Tree)类型的存储结构,用于顺序存储数据,便于实现数据的快速查找.除了提升数据查找的性能之外,索引还能减少硬盘IO和内存消耗.通常情况下,硬盘IO是查找性能的瓶颈,由于索引是数据表的列的子集,这意味着,索引只存储部分列的数据,占用的硬盘空间比全部列少了很多,因此,数据库