PopupWindow可以实现浮层效果,而且可以自定义显示位置,出现和退出时的动画。

首先解析一个View

LayoutInflater inflater = getLayoutInflater();
final View view = inflater.inflate(R.layout.popup, null);

创建PopupWindow 构造参数 PopupWindow(View contentView, int width, int height, boolean focusable)。

contentView为要显示的view,width和height为宽和高,值为像素值,也可以是MATCHT_PARENT和WRAP_CONTENT。

focusable为是否可以获得焦点,这是一个很重要的参数。

这里需要为popupWindow设置一个背景,点击其他区域才能让PopupWindow消失。

PopupWindow popupWindow = new PopupWindow(view, 400, 400, true);
popupWindow.setBackgroundDrawable(new BitmapDrawable());

显示PopupWindow

showAsDropDown(View anchor)://相对某个控件的位置(正左下方),无偏移
showAsDropDown(View anchor, int xoff, int yoff)://相对某个控件的位置,有偏移
showAtLocation(View parent, int gravity, int x, int y)://相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移

为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代码设置动画

popupWindow.setAnimationStyle(R.style.PopupAnimation);  

另外在记录一个从屏幕底部弹出的动画

menu_bottombar_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" ><translateandroid:duration="250"android:fromYDelta="100.0%"android:toYDelta="0.0" />
</set>

menu_bottombar_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" ><translateandroid:duration="250"android:fromYDelta="0.0"android:toYDelta="100%" />
</set>

定义样式

<style name="anim_menu_bottombar"><item name="android:windowEnterAnimation">@anim/menu_bottombar_in</item><item name="android:windowExitAnimation">@anim/menu_bottombar_out</item>
</style>

最后显示showAtLocation(findViewById(R.id.layout_main), Gravity.BOTTOM, 0, 0);

PopupWindow 常用方法学习笔记相关推荐

  1. 2023年软考信息安全工程师备考学习笔记汇总

    信息安全工程师分属"信息系统"专业,位处中级资格,2016年下半年,第一次开考信息安全工程师(中级)考试.目前每年考试一次.已开考六次,2016年11月12日,2017年5月20日 ...

  2. day4 vue 学习笔记 组件 生命周期 数据共享 数组常用方法

    系列文章目录 day1学习vue2笔记 vue指令 day2 学习vue2 笔记 过滤器 侦听器 计算属性 axios day3 vue2 学习笔记 vue组件 day4 vue 学习笔记 组件 生命 ...

  3. Unity API常用方法和类学习笔记2

    Unity API常用方法和类学习笔记2 ------Mathf & Input & Vector & Random 类Mathf 一.静态变量 print(Mathf.Deg ...

  4. Unity API常用方法和类学习笔记1

    Unity API常用方法和类学习笔记1 ------主要构架(Unity-Engine.GameObject.Component) 事件 一.事件执行顺序 二.测试代码 using System.C ...

  5. 《Unity API常用方法和类详细讲解—Siki学院》课程学习笔记02

    <Unity API常用方法和类详细讲解-Siki学院>课程学习笔记02 课时10 GameObject.Component和Object的千丝万缕的关系 一个游戏由多个场景组成,一个场景 ...

  6. 《Unity API常用方法和类详细讲解—Siki学院》课程学习笔记03

    <Unity API常用方法和类详细讲解-Siki学院>课程学习笔记03 课时18-20协程及其执行 1.使用Coroutine实现颜色动画渐变 void Update(){if (Inp ...

  7. oracle常用数据统计,学习笔记:Oracle DBMS_STATS常用方法汇总 常用于收集统计oracle...

    天萃荷净 Oracle数据库中DBMS_STATS常用方法(收集oracle数据库.索引.表等信息) –收集Oracle数据库信息命令 EXEC DBMS_STATS.gather_database_ ...

  8. JS学习笔记十——时间常用方法

    前言 时间本身是 JS 中的一个数据类型 Date,是一种引用数据类型,其创建方式有两种:一是 new Date(),创建时间对象,且为当前终端的时间,即电脑时间:二是 new Date(年,月,日, ...

  9. 一文让你完全弄懂回归问题、激活函数、梯度下降和神经元模型实战《繁凡的深度学习笔记》第 2 章 回归问题与神经元模型(DL笔记整理系列)

    <繁凡的深度学习笔记>第 2 章 回归问题与神经元模型(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net/ http ...

最新文章

  1. 使用工具知乎点赞工具
  2. 招聘|腾讯机器人实验室语义视觉方向(实习+社招)
  3. cosx的麦克劳林级数是多少_cosx泰勒展开
  4. linux内核编译与内核模块
  5. mysql text 查询速度_数据库学习之让索引加快查询速度(四)
  6. Rust : RUST_BACKTRACE=1错误提示
  7. CSDN下载频道积分规则2.1
  8. 计算机专业及相关知识测试,计算机知识及测验考试.doc
  9. 东南大学硕士毕业论文Latex 模版教程
  10. python中show函数的用法_python学习笔记之——函数模块
  11. 找到解决办法了,特回来写总结,the import cannot be resolved问题可以通过以下方法解决
  12. feign调用是否会经过网关
  13. Android之ANR
  14. 计算机视觉与人的视觉
  15. linux 服务器 安装网卡驱动,Linux系统下安装Intel千兆网卡驱动
  16. win10计算机维护,Win10系统打开或关闭自动维护功能的方法
  17. ardupilot相机拍照控制
  18. 5 matlab详解牛顿下山法求解复杂函数代数方程和超越方程
  19. TCP UDP之网络编程及数据库入门
  20. 计算机主机硬件图片,电脑主机里的各个硬件名称图片用途和使用说明

热门文章

  1. 360手机浏览器_UC、QQ、华为、360、搜狗、小米、vivo、OPPO等8款手机浏览器被纳入首批传播秩序专项整治...
  2. selinux= 为 disabled_微课 | 状态管理 SELinux(2)
  3. Linux系统和windows系统mysql5.7.32的下载
  4. 2016考试计算机知识基础题库,2016年计算机二级公共基础知识基础练习题演练(6)...
  5. 英语本科 国外跨计算机,跨专业考研需具备哪些条件,如英语,计算机的过级情况...
  6. rdd与mysql表 join_Spark 之RDD
  7. 必须声明标量变量 @列名
  8. ppp lcp协商报文有哪些_PPP 点到点协议
  9. 实用供热空调设计手册第三版_【最新资讯】执行主编周敏赴北京、天津进行手册编制工作会谈...
  10. 1e-5 java_内功心法 -- java.util.LinkedListE (5)