android:PopupWindow的使用场景和注意事项
1.PopupWindow的特点
借用Google官方的说法:
“A popup window that can be used to display an arbitrary view. The popup window is a floating container that appears on top of the current activity.”
也就是说。popupwindow是activity上方的一个悬浮容器。它能够显示随意的视图View,非常霸气的样子。
以下看一下,它怎样使用的。
2.初始化PopupWindow的一些特性
举例:
PopupWindow popupWindow = new PopupWindow(getApplicationContext()); popupWindow.setContentView(contentView);//能够设置随意的View popupWindow.setWidth(LayoutParams.WRAP_CONTENT);//设置宽度 popupWindow.setHeight(LayoutParams.WRAP_CONTENT);//高度 popupWindow.setAnimationStyle(R.anim.abc_fade_in);//显示的动画 popupWindow.setFocusable(true);//设置是否获取焦点
当中,contentView是你想要显示的View。这个view,你能够使用LayoutInflater.from(context).inflate映射对应的xml文件
3.PopupWindow的显示和隐藏
显示的方法:
public void showAtLocation (View parent, int gravity, int x, int y) Added in API level 1 Display the content view in a popup window at the specified location. If the popup window cannot fit on screen, it will be clipped. See WindowManager.LayoutParams for more information on how gravity and the x and y parameters are related. Specifying a gravity of NO_GRAVITY is similar to specifying Gravity.LEFT | Gravity.TOP. Parameters parent a parent view to get the getWindowToken() token from gravity the gravity which controls the placement of the popup window x the popup's x location offset y the popup's y location offset
popupWindow.showAtLocation(contentView, Gravity.CENTER, 0, 0);//设置居中
popupWindow.showAtLocation(contentView, Gravity.NO_GRAVITY, x, y);//显示窗体的以(x,y)为左上角的位置
隐藏:
if (popupWindow != null && popupWindow.isShowing()) { popupWindow.dismiss(); popupWindow = null; }
相关:注意,在计算view的位置时:
Android里面提供了一些方法能够获取View在屏幕中的位置。
1).getLocationOnScreen ,计算该视图在全局坐标系中的x,y值,获取在当前屏幕内的绝对坐标(该值从屏幕顶端算起。包含了通知栏高度)。
2).getLocationInWindow ,计算该视图在它所在的widnow的坐标x,y值。
3)getLeft , getTop, getBottom, getRight, 这一组是获取相对在它父亲布局里的坐标。
相关:popupwindow动画:http://blog.csdn.net/wl455624651/article/details/7798879
很多其它交流,Android开发联盟QQ群:272209595
相关文章
- android 浏览器 开发,Android 浏览器的开发实例分享
- js android 换行符,关于js对textarea换行符的处理方法浅析
- strictmode android,Android 应用性能优化-StrictMode(严格模式)
- Android 代码混淆 混淆方案
- android app 退出功能,Android 完美退出 App (Exit)
- android 定时器实例,Android定时器和Handler用法实例分析
- 聚焦 Android 11:游戏开发新工具
- libyuv编译Android平台so
- android toast全屏,Android Toast实现全屏显示
- android toast显示时间,Android Toast自定义显示时间「建议收藏」
- android系统中toast是什么_Android个人资料简单布局
- Android n_android 反编译
- android调用相册并显示图片_Android获取相册列表
- Android resource linking failed_android sdk location should not
- Android传感器_悦动凸轮轴位置传感器故障
- Android Services Library_android freeware
- Android - NETD解读
- 原创Paper | 在 Android 中开发 eBPF 程序学习总结(二)
- 【Android 逆向】获取安装在手机中的应用的 APK 包 ( 进入 adb shell | 获取 root 权限 | 进入 /data/app/ 目录 | 拷贝 base.apk 到外置存储 )
- 【Android 逆向】整体加固脱壳 ( DEX 优化流程分析 | dvmDexFileOpenPartial | dexFileParse | 脱壳点 | 获取 dex 文件在内存中的首地址 )
- 【ijkplayer】编译 Android 版本的 ijkplayer ⑤ ( 执行 init-android-libyuv.sh | 执行 init-android-soundtouch.sh )
- 【Android Gradle 插件】自定义 Gradle 任务 ⑧ ( 控制 Gradle 执行任务顺序 | Task#shouldRunAfter 函数 | 三个函数使用场景对比 )
- Android实现ProgressBar旋转菊花加载的动画详解手机开发
- [android] 隐式意图和显式意图的使用场景详解手机开发
- [android] 数据库的事务详解手机开发
- Android入门之数据传递详解手机开发
- Android ClassLoader详解手机开发
- android and webview详解编程语言
- Android轻松刷入Linux,优化你的技能(安卓刷成linux)
- 奥迪S3上体验Android Auto:简约而不简单
- Android实现PHP连接MySQL进行数据交互(android通过php连接mysql)
- Android实现Flip翻转动画效果