Android进阶2之PopupWindow弹窗(有点悬浮窗的感觉)

PopupWindow是一个可以用来显示一个任意的视图的弹出窗口,他需要完全依赖layout布局。

它没什么界面,在弹出的窗口中完全显示布局中的控件。




上面两个美女头就是弹窗PopupWindow显示的内容。是两个Button。


具体实现:

注意:那三个Button不能和普通的Button一样通过findViewById()方法获得,必须首先说的Button所在的视图,View popview = layoutInflater.inflate(R.layout.poplayout, null);

我的Button在poplayout.xml中。最后通过button1 = (Button) popview.findViewById(R.id.button1)获得。

另外一点就是:不要在oncreate()中获得Button,而是像我一样在onclick方法下获得,和popupwindow一起。这一点不一定正确。

为什么要提呢?因为我在oncreate()中获得Button时,button的点击事件不能用,我也不是很清楚。那位大牛要是知道的话,可以告诉我一下。


showAtLocation(findViewById(R.id.edit_layout), Gravity.BOTTOM,0, 0);

设置弹窗的位置:

第一个参数是弹窗父控件的布局;

第二个参数是位置如左,右,上部,下部等;

第三个参数是X方向的偏移量;

第四个参数是Y方向的偏移量。

package xiaosi.popwindow; import android.app.Activity; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager.LayoutParams; import android.widget.Button; import android.widget.PopupWindow; import android.widget.Toast; public class PopwindowActivity extends Activity implements OnClickListener { /** Called when the activity is first created. */ private Button button = null; private Button button1 = null; private Button button2 = null; private Button button3 = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button = (Button) findViewById(R.id.button); button.setOnClickListener(this); } public void onClick(View arg0) { if (arg0.getId() == R.id.button) { LayoutInflater layoutInflater = (LayoutInflater) (PopwindowActivity.this) .getSystemService(LAYOUT_INFLATER_SERVICE); // 获取自定义布局文件poplayout.xml的视图 View popview = layoutInflater.inflate(R.layout.poplayout, null); PopupWindow popWindow = new PopupWindow(popview, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); //规定弹窗的位置 popWindow.showAtLocation(findViewById(R.id.main), Gravity.BOTTOM, 0, 0); //PopupWindow里的两个Button button1 = (Button) popview.findViewById(R.id.button1); button1.setOnClickListener(this); button2 = (Button) popview.findViewById(R.id.button2); button2.setOnClickListener(this); } else if (arg0.getId() == R.id.button1) { Toast.makeText(PopwindowActivity.this, "button1", Toast.LENGTH_LONG) .show(); } else if (arg0.getId() == R.id.button2) { Toast.makeText(PopwindowActivity.this, "button2", Toast.LENGTH_LONG) .show(); } } }

poplayout.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="horizontal" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/colorframe_1" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/colorframe_3" /> </LinearLayout>
main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="@drawable/background"> <Button android:id="@+id/button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="点击查看效果" /> <ImageView android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/a" /> </LinearLayout>

以上只是用来学习之用,拿出来和大家一起分享一下。

有想要源代码的给我留言。


Android中悬浮窗口的实现原理实例分析 主要介绍了Android中悬浮窗口的实现原理,以实例形式较为详细的分析了Android悬浮窗口的原理与具体实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下 立即下载

相关推荐

保姆级教程:不用看古早代码,5分钟搞懂泛微ecology9附件存储与接口调用

本文详细解析了泛微ecology9附件存储与接口调用的核心原理,提供从基础概念到实战操作的完整指南。通过拆解文档化附件设计理念、解析RESTful接口参数,并给出Python代码示例,帮助开发者快速掌握附件上传与业务集成的关键技巧,提升二次开发效率。

weixin_28688385的博客 351

Android 之 PopupWindow (悬浮框)的基本使用

本节给大家带来的是最后一个用于显示信息的UI控件——PopupWindow(悬浮框),如果你想知道 他长什么样子,你可以打开你手机的QQ,长按列表中的某项,这个时候后弹出一个黑色的小 对话框,这种就是PopupWindow了,和AlertDialog对话框不同的是,他的位置可以是随意的。

leyang0910的博客 1844

CMap与L1000技术解析:基因表达数据在药物发现中的应用

本文深入解析了CMap(连接图)与L1000技术在药物发现中的核心应用。CMap通过构建基因表达“关系网”,实现基于模式匹配的药物重定位;L1000技术则以低成本、高通量方式生成关键基因表达数据,支撑了LINCS超级数据库。文章以CLUE平台为例,手把手演示了如何利用疾病基因表达签名逆向筛选潜在治疗化合物,并拓展了其在解析药物机制、预测副作用等多场景下的价值。

weixin_29207533的博客 728

33. 【Android教程】悬浮窗:PopupWindow

Android 提供了很多种消息弹窗,其中用的最多的是上一节讲到的 AlertDialog,当然如果需要定制自己的对话框风格或者某些场景下 AlertDialog 无法满足你的需求时,就可以考虑用 PopupWindow 悬浮窗了。很多初学者容易把 AlertDialog 和 PopupWindow 搞混淆,在你看完这两节内容之后就能够彻底明白两者的不同使用场景了。

这是一个web全栈开发的博客,取其精华去其糟粕,争取让大家一看就懂,一学就会,一用就成~ 2920

高通AI Engine SDK(QNN)使用教程(环境配置、模型转换、量化、推理、分析)

高通AI Engine使用教程

weixin_51031772的博客 1万+

双臂复合机器人眼在手外标定实战:从原理到D435标定流程详解

本文详细解析了双臂复合机器人中眼在手外标定的核心原理与实战流程。通过阐述坐标系转换与AX=XB方程,重点介绍了使用Intel RealSense D435相机进行标定的完整步骤,包括环境搭建、数据采集、计算与验证,并提供了关键的避坑指南,帮助工程师实现相机与机械臂基座间的精确坐标对齐。

weixin_29100927的博客 451

Android(三十三):PopupWindow 悬浮窗

展示 处理素材 源码 主布局 <ImageButton android:id="@+id/avatar_btn" android:layout_width="60dp" android:layout_height="60dp" android:background="@drawable/avatar"/> 悬浮窗布局 Resources/layout/popover_view.xml <?xml version="1.

You瞧谁不起 - 道不尽世间的沧桑,诉不完人生的悲凉 1911

SpringBoot Redis入门(一)——redis、Lettuce、Redisson使用

Lettuce是SpringBoot自带的Redis客户端,性能比Redis要好, 是线程安全的,支持同步编程,异步编程,响应式编程,自动重新连接,主从模式,集群模块,哨兵模式Redisson 是一个在 Redis 的功能基础上实现的 Java 驻内存数据网格客户端。实现了分布式和可扩展的 Java 数据结构,提供很多分布式相关操作服务,例如分布式锁,分布式集合,可通过 Redis 支持延迟队列。

朗朗的博客 3833

Android中使用PopupWindow实现上下左右弹框

最近做首页新手引导需要显示一个在控件下面的弹框,由于之前的同事使用的FramLayout以addview的方式实现的,发现很不好扩展,修改起来比较麻烦,于是自己使用PopupWindow从新写了一个.

u012556114的博客 5346

Oracle EBS FA 如何打开关闭的资产会计期间?

用户“运行折旧”,误勾选为“关闭期间”,还有一部分资产还需要操作报废和调整,希望后台打开关闭的资产会计期。

陈显平的专栏-Oracle EBS 1030

AI产品经理面试宝典第94天:RAG知识库构建与预处理策略面试指南

本文深入解析RAG知识库构建的核心挑战与预处理策略,涵盖文档格式转换、问答对生成及自动化测试全流程,为AI产品经理提供面试必备的实战方法论与避坑指南,助你精准应对技术深度类问题。

打造全国最全的AI Agent开发知识领域的博客 312

Android : PopupWindow 悬浮框_简单应用

Android : PopupWindow 悬浮框_简单应用

javaGHui的博客 462

数据挖掘实战-基于LSTM时间序列模型的香烟销售预测分析

本文介绍了基于LSTM时间序列模型的香烟销售预测分析实验。实验背景为烟草市场竞争激烈,企业需提高销售预测准确性以优化生产、库存和营销策略。LSTM模型因其处理长序列数据的能力被选为预测工具。实验步骤包括数据准备、特征工程、模型构建、训练与评估及结果分析。数据集来自某市门店的销售数据,技术工具为Python 3.9和Jupyter Notebook。实验过程涵盖数据导入、预处理、产品销售与区域销售分析、销售预测(包括销售额、销量、利润及海通店销售额预测)。

m0_64336780的博客 8952

Android 自定义PopupWindow实现悬浮窗效果

有时候我们需要在界面上弹出一个窗口,而Android中弹出窗体有两种方式:一种是AlertDialog,另一种就是PopupWindow,AlertDialog的位置是固定的,而PopupWindow的位置可以任意指定。下面我们使用自定义的PopupWindow来完成以下的效果图:    import android.app.Activity; import android.graphics.

ZuoZuoShengHen的博客 6426

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Android 悬浮窗口(一)

android 悬浮窗口

yunteng521的博客 2221

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Android 应用弹出悬浮窗

WindowManager添加了一个View,并显示到屏幕上

Jason_Lee155的博客 8560

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Android 项目必备(四十四)-->Android 实现悬浮窗

悬浮窗是一种比较常见的需求。例如把视频通话界面缩小成一个悬浮窗,然后用户可以在其他界面上处理事情。

Kevin Learn Android 5457

Android实现PopupWindow浮窗

Android实现PopupWindow浮窗

wangguijun1212的博客 1350

android原生 PopupWindow 的基本使用

Android 中的弹窗基本有两种,一种是 AlertDialog,另一种是 PopupWindow,AlertDialog 的显示位置是固定的,PopWindow 的显示位置是我们可以设置和调整的,因此,像项目中的一些场景如:某个功能的提示说明、点击按钮在按钮上方或者下方弹出菜单、新功能弹窗引导等。

波风水门 5309
上一篇: Android实战经验之图像处理及特效处理的集锦(总结版)
下一篇: Android进阶2之图片倒影效果
com_xpp
博客等级 码龄16年 23粉丝 160原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值