android中实现PopupWindow跟随ProgressBar进度显示

android基础 [超级详细android常用控件解析(ScollView控件,ProgressBar进度条,PopupWindow控件)] 阅读详情

早就想写博客了,直到今天才开始真正的去写一篇,接下来奉上今天的主题:实现PopupWindow跟随ProgressBar进度显示

最近遇到一个功能实现,大概就是以下这个图的样子,上方为PopupWindow,下方有ProgressBar,PopupWindow位置跟随ProgressBar进度位置动态变化


开始实现吧:

首先实例化PopupWindow

pop_wiew = LayoutInflater.from(this).inflate(R.layout.member_popwindow, null, false);

mPopupWindow = new PopupWindow(pop_wiew, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);

然后去测量PopupWindow的宽高,因为放置位置为PopupWindow的中央:

pop_wiew.post(new Runnable() {
    @Override
    public void run() {
        pop_wiew.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
        popwidth = pop_wiew.getMeasuredWidth();
        pophight = pop_wiew.getMeasuredHeight();
    }
});
因为绘画过程异步,所以使用view的post方法,携带自身宽高属性以供获得,需要注意的是:

 pop_wiew.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
若是不设置测量模式,则获取不到PopupWindow的属性(已踩过坑)

另外需要注意的是,如果不做任何操作,这样直接显示PopupWindow,会导致界面的控件获取不到焦点,并且返回键失效(仅针对上图实现的功能来说),所以需要做如下操作:

mPopupWindow.setTouchable(true);
mPopupWindow.setFocusable(false);
mPopupWindow.setOutsideTouchable(false);
接下来是对Progress进行操作:

mProbarLeftMembercenterExpeience.post(new Runnable() {
    @Override
    public void run() {
        int width = mProbarLeftMembercenterExpeience.getWidth();
        int height = mProbarLeftMembercenterExpeience.getHeight();
        int[] location = new int[2];
        mProbarLeftMembercenterExpeience.getLocationOnScreen(location);
        //获得在屏幕中的x,y值
        int x = location[0];
        int y = location[1];
        //目前popwindow应该在的x值
        int poplocation = (int) (width * baifenbi + x);
        mPopupWindow.showAtLocation(mProbarLeftMembercenterExpeience, Gravity.NO_GRAVITY,
                poplocation - popwidth / 2, y - pophight - height);
    }
});
同理,使用view的post方法获得自己的属性,然后首先获取自身的宽高:

 int width = mProbarLeftMembercenterExpeience.getWidth();
        int height = mProbarLeftMembercenterExpeience.getHeight();
然后获得在屏幕中的x,y值:

 int[] location = new int[2];
        mProbarLeftMembercenterExpeience.getLocationOnScreen(location);
        //获得在屏幕中的x,y值
        int x = location[0];
        int y = location[1];
最后设置popwindow的位置:

 int poplocation = (int) (width * percentage+ x);
        mPopupWindow.showAtLocation(mProbarLeftMembercenterExpeience, Gravity.NO_GRAVITY,
                poplocation - popwidth / 2, y - pophight - height);
上述代码中的percentage为ProgressBar的当前百分比,至于PopupWindow在何处显示,请看管自行百度。

人生第一遍博客,如有错误,请指出,谢谢观看!

android开发PopupWindow实现跟随试弹出框 立即下载

相关推荐

Android ProgressBar进度条使用详解

ProgressBar进度条,分为旋转进度条和水平进度条,进度条的样式根据需要自定义,之前一直不明白进度条如何在实际项目中使用,网上演示进度条的案例大多都是通过Button点击增加、减少进度值,使用方法incrementProgressBy(int),最简单的做法是在xml布局文件中放置ProgressBar空间,然后再MainActivity中触发事件后执行incrementProgressBy(int),代码如下: <LinearLayout xmlns:android=http://schemas.android.com/apk/res/android xmlns:tools=h

Android开发仿QQ空间根据位置弹出PopupWindow显示更多操作效果

我们打开QQ空间的时候有个箭头按钮点击之后弹出PopupWindow会根据位置的变化显示在箭头的上方还是下方,若果下方空间不够,就显示在上方。 效果图如下:   这个要实现这个效果可以分几步进行 1.第一步自定义PopupWindow,实现如图的样式,这个继承PopupWindow自定义布局很容易实现 2.得到点击按钮的位置,根据位置是否在屏幕的中间的上方还是下方,将PopupWin...

huangwenkui1990的专栏 724

28、解码清华SSVEP基准数据集:从EEG信号到深度学习模型的实战指南

本文详细解析了清华大学SSVEP基准数据集的处理与深度学习模型构建全流程。从EEG信号预处理、数据维度变换到SSVEP分类模型设计,提供了实战代码示例和关键技巧,帮助读者掌握脑机接口领域的数据处理方法与模型优化策略。

weixin_29029995的博客 176

android popupwindow 指定位置,Android中PopupWindow显示在指定位置

Android中PopupWindow位置的确定一般通过showAsDropDown函数来实现,该函数有两个重载函数,分别定义如下:public void showAsDropDown(View anchor) {showAsDropDown(anchor, 0, 0);}public void showAsDropDown(View anchor, int xoff, int yoff) {if...

weixin_39715187的博客 546

如何用ISBN API快速获取图书信息?Python实战教程(附完整代码)

本文是一篇Python实战教程,详细介绍了如何利用ISBN API高效获取图书元数据。内容涵盖从API服务选择、密钥管理,到使用requests库构建健壮的请求模块,并利用Pydantic进行数据验证与解析。教程还提供了批量查询、缓存优化及集成到Flask Web应用等高级技巧,帮助开发者快速实现图书信息的自动化获取与处理。

p8q9r0的博客 456

【自动驾驶】控制算法(十)深度解析车辆纵向控制 | Carsim 油门刹车标定表的制作...

写在前面: ???? 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。???? ???? 人生如戏,我们并非能选择舞台和剧本,但我们可以选择如何演绎 ????感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行~~~文章目录引言一、油门标定原理1.1 油门与速度、加速度的关系1.2 油门控制曲面模型的构建二、油门标定表的制作流程...

qq_35485206的博客 2140

Android基础控件ScollView控件、ProgressBar进度条、PopupWindow控件

Android ScollView控件、ProgressBar进度条、PopupWindow控件

ojbk99267710的博客 746

SAP-ABAP:SAP ABAP 深度解析:BAPI 从入门到精通 —— 原理、实战与自定义开发全指南

SAP ABAP BAPI 深度解析摘要 本文全面介绍了 SAP ABAP 中的 BAPI(业务应用程序编程接口)技术,涵盖以下核心内容: BAPI 定义与特点:BAPI 是 SAP 为业务对象提供的标准化编程接口,具有面向对象、封装业务逻辑、标准化错误处理和版本兼容性等特点。 BAPI 与 RFC 关系:所有 BAPI 都是 RFC,但需额外满足业务对象注册、标准化参数和错误处理等要求。 BAPI 核心作用:包括业务逻辑封装、系统集成、标准化错误处理、版本兼容和审计合规。 实战演示:通过创建销售订单的完整

baidu_35680696的博客 1034

Android中进度条ProgressBar的使用

1.环形进度条的使用 这种进度条无法显示进度,显示为一个不断旋转的环形,可以通过设置其可见性来使用,这种进度条只需要添加其控件即可大的环形进度条 <ProgressBar style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content"

啦啦啦啦 la 1428

国产化办公新选择:在银河麒麟V10上部署ToDesk远程桌面

本文详细介绍了在国产操作系统银河麒麟V10上部署ToDesk远程桌面的完整指南。作为国产远程控制工具,ToDesk在连接速度、系统适配性和用户体验方面表现优异,特别适合国产化办公场景。文章包含X86和ARM架构的安装步骤、常见问题排查及性能优化技巧,帮助用户高效实现远程办公。

weixin_33742618的博客 234

【车载以太网】【架构】整体架构与协议标准

车载以太网架构图 应用层:DHCP /SOMEIP/DoIP/XCP/UDPNM 传输层:TCP/IP 网络层:IPv4/IPv6/ARP/ICMP 链路层:IEEE Ethernet MAC+VLAN 物理层:Ethernet PHY: 100BASE-T1/1000BASE-T1/100BASE-Tx

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 8358

Android进度条列表播放,Android自定义SeekBar实现视频播放进度条

首先来看一下效果图,如下所示:其中进度条如下:接下来说一说我的思路,上面的进度拖动条有自定义的Thumb,在Thumb正上方有一个PopupWindow窗口,窗口里面显示当前的播放时间。在SeekBar右边有一个文本框显示当前播放时间/总时间。step1、先来看一看PopupWindow的布局文件,seek_popu.xml,效果如下图所示:android:layout_width="wrap_c...

weixin_39887577的博客 649

PCL点云库入门(第1讲)——PCL库简介和安装(Win10/11+VS2019+PCL 1.12.0)

PCL,全称为,即点云库,是一个专注于2D/3D图像和点云处理的大型开源项目。该项目最初由斯坦福大学的杰出计算机视觉专家Radu博士及其团队开发和维护,经过十余年的发展,目前(2024年12月)已更新至1.14.1版本。PCL点云库集成了众多尖端的点云处理算法,这些算法不仅包括基础的滤波、特征估计、表面重建、配准、模型拟合和分割等,还涵盖了更高级的功能,如点云数据的语义理解、场景解析以及动态环境下的实时处理。这些算法能够对含有噪声的点云数据进行有效过滤,去除异常值;

qq_36812406的博客 1万+

Android中Activity之间的跳转 ProgressBar进度条 PopupWindow 弹出框 Dialog 对话框 Spinner 下拉框

Toast.makeText(MainActivity4.this,"你的账号为"+user+",你的密码为"+pwd,Toast.LENGTH_SHORT).show();String[]acd={"金水区","惠济区","管城区","二七区","中原区"};String[]strings={"A照","B照","C照","D照"};String[]strings={"A照","B照","C照","D照"};..................

xubo667的博客 826

uniapp:实现APP获取陀螺仪数据、加速传感器、线性加速传感器,uniApp实时监听陀螺仪【XYZ】数据及停止监听与资源释放等功能示例源码,根据需求做功能(完美兼容Android安卓、苹果ios)

uniapp陀螺仪,uniapp加速传感器,uniapp线性加速传感器,APP陀螺仪数据,uniapp app 端获取陀螺仪数据示例代码,手机中获取陀螺仪的数据,uniApp实时获取陀螺仪xyz数据,android陀螺仪方向,获得陀螺仪传感器,处理传感器数据,停止监听与资源释放,Android使用陀螺仪,uniapp苹果ios陀螺仪,uni-app设备之(加速计,罗盘,陀螺仪)插件安卓/IOS APP提供了获取陀螺仪数据的能力,手机陀螺仪传感器获得手机自身旋转的角度,陀螺仪获取旋转角度,陀螺仪、加速度传感器

✅ 精选推荐文章 4268

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Acitivity(页面)之间的跳转,ProgressBar 进度条,PopupWindow 弹出框,Dialog 对话框,Spinner下拉框

Acitivity(页面)之间的跳转,ProgressBar 进度条,PopupWindow 弹出框,Dialog 对话框,Spinner下拉框 的简单介绍

jzj_nd的博客 547

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ProgressBar 进度条 PopuoWindow 弹出框 , Dialog 对话框 ,​ Spinner 下拉框

在XML中,将style设置为Widget.Spinner,代码如下style=“@androidstyle/Widget.Spinner”​读取Strings.xml中的数据,将数据加载到spinner。Dialog和PopupWindow的区别?​prompt没有生效,怎么回事?​点击事件是放在button上的。​点击事件只能放在Spinner。​Dialog对话框(重点)​加载一个view应该怎么做?​如何导入自定义布局?​跟按钮结合的使用。......

m0_58391685的博客 541

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android popupwindow 等待对话框 选择dialog

让用户等待执行完。 import android.widget.PopupWindow; //新建实例 final PopupWindow popupWindow = new PopupWindow(); //显示 popupWindow.setOutsideTouchable(false); popupWindow.setFocusable(false);//点击区域外不会消失,点击返回会执行back事件 popupWindow.setHeight(ViewGroup.LayoutPar.

chenhao0568的专栏 440

ProgressBar 进度条、PopuoWindow 弹出框、Dialog 对话框 (重点)、Spinner 下拉框 (重点)

ProgressBar 进度条 PopuoWindow 弹出框 Dialog 对话框 (重点) Spinner 下拉框 (重点)

shuo277的博客 404

【android控件 】EditText、imageView,PrgressBar多种用法

android的组件使用

weixin_43857838的博客 876

Android基础学习(二)—— 常用控件

android基础学习

123 1801

很low的安卓学习笔记(二、控件)

很low的安卓学习笔记(二、控件)二、控件1.TextView(文本):1.1.常见属性:1.2.文本覆盖:2.ImageView(图片):2.1.常见属性:2.2.android:adjustViewBounds:3.Button(按钮):3.1.设置点击事件: 二、控件 1.TextView(文本): 1.1.常见属性: 1.2.文本覆盖: 若在xml中设置text为“xxx”,但是在Activity中输入了 TextView tv_1 = findViewById(R.id.tv_1); tv_1.

qq_45256661的博客 1919

安卓基础控件小结

布局,TextView:EditText:inmageView,Button;RadioButton:inmagebutton:checkbox:

qq_41738599的博客 705

Android 学习(2)

控件 Text View: layout_width:组件的宽度 layout_height: 组件的高度 id : 为Test View 设置一个组件id text:设置显示的文本内容 test Color:设置字体颜色 text Style:设置字体风格,三个可选值:normal(无效果),bold(加粗),italic(斜体) text Size:字体大小,单位一般是用sp background:控件的背景颜色,可以理解为填

hx1113的博客 3315

Android 开发学习(一)

Android 初级学习记录

moranxiangshouyuni的博客 1216

Android的高级控件

使用时的注意点?不用再ScrollView内部使用自带滚动条的控件或布局ScrollView直接子View只能有一个ScrollView只支持竖直滑动如果想要横向滑动HorizontalScrollView跳转使用具体案例实现。

weixin_57543920的博客 398
下一篇: git的使用,用以记录,以后忘记查看,有想要学习的童鞋也可参考
LZ涸泽而渔
博客等级 码龄10年 269粉丝 21原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值