前言

最近在一个项目中,需要制作录屏的功能,原先是在应用中有录屏/控制的按钮,思考之下觉得这种效果并不好,因此就想制作一个可以悬浮的悬浮窗,这样不论手机在什么界面中都可以对录屏功能进行控制。

这里就来构建一个桌面的悬浮窗,使用了DataBinding的MVVM模式,这些方面就不再多提。

FloatNormalView

这个是一个普通的悬浮窗,悬浮窗只有一个按钮,点击按钮显示更多的按钮。

首先是页面布局:

name="viewModel"

type="com.example.zjt.floatrecorder.FloatNormalViewModel"/>

android:layout_width="50dp"

android:layout_height="50dp"

android:gravity="center">

android:id="@+id/root"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="vertical">

android:id="@+id/float_id"

android:layout_width="40dp"

android:layout_height="40dp"

android:background="@drawable/ic_launcher_background"

android:onClick="@{viewModel::onControlClick}"/>

下面一步步的介绍这个悬浮窗的创建。

1 悬浮窗的显示

// 创建WindowManager对象

private WindowManager windowManager;

windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

// 创建悬浮窗的LayoutParams

private void initLayoutParams() {

try {

DisplayMetrics metrics = new DisplayMetrics();

windowManager.getDefaultDisplay().getMetrics(metrics);

screenWidth = metrics.widthPixels;

screenHeight = metrics.heightPixels;

lp = new WindowManager.LayoutParams();

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

lp.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;

} else {

lp.type = WindowManager.LayoutParams.TYPE_TOAST;

}

lp.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |

WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;

lp.gravity = Gravity.START | Gravity.TOP;

lp.x = screenWidth - view.getLayoutParams().width * 2;

lp.y = 0;

lp.width = WindowManager.LayoutParams.WRAP_CONTENT;

lp.height = WindowManager.LayoutParams.WRAP_CONTENT;

lp.format = PixelFormat.TRANSPARENT;

} catch (Exception e) {

}

}

android 悬浮按钮出现隐藏,Android悬浮窗按钮实现点击并显示/隐藏多功能列表相关推荐

  1. 点击按钮之后右侧弹出导航,再点击右侧导航隐藏回去的实现

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/53408091 本文出自[我是干勾鱼的博客] 实现了一个点击按钮之后右侧弹出导航, ...

  2. html图片自动收起代码,HTML代码实现点击图片显示/隐藏

    今天晚上刚好放了国庆假期,也发现好久没有摆弄博客了,就摆弄在文章页面添加了个打赏提示,确实,泽以最近的日子真心不好过了,做工作室倒闭,免费主机供应不起暂停,自助下单平台(dsw)备案掉了也暂停了,流量 ...

  3. jquery实现div的隐藏和显示和点击空白显示隐藏

    $('#button')是要点击的按钮,$('#view')是要显示或隐藏的内容区域 一.点击按钮显示隐藏 $(function () { $("#button").click(f ...

  4. 密码框点击眼睛显示隐藏

    输入框input变成密码框只需要简简单单的添加一个type="password"就好了 <input type="password" id="i ...

  5. flutter控制显示隐藏_leaflet中如何通过透明度控制layerGroup的显示隐藏

    最近在leaflet开发过程中,遇到地图数据需要按时序播放的需求,处理思路是将每个时间节点的要素添加到layerGroup中,然后通过切换layerGroup的显示隐藏来实现效果.翻看leaflet的 ...

  6. win10下如何隐藏Linux盘符,Win10专业版系统下如何显示隐藏盘符

    在win10专业版系统中,很多用户都会在磁盘中保存很多重要的文件,考虑到安全问题,有部分用户会将保存有重要信息的盘符隐藏起来,但是有时候想要打开隐藏盘符,却不知道要如何显示隐藏盘符,其实方法很简单,这 ...

  7. uni-app点击编辑显示隐藏修改删除图标

    在uni-app中点击编辑,显示隐藏修改删除图标. 特别感谢 我的同桌~

  8. android悬浮按钮弹出与隐藏,Android悬浮窗按钮实现点击并显示/隐藏多功能列表

    前言 最近在一个项目中,需要制作录屏的功能,原先是在应用中有录屏/控制的按钮,思考之下觉得这种效果并不好,因此就想制作一个可以悬浮的悬浮窗,这样不论手机在什么界面中都可以对录屏功能进行控制. 这里就来 ...

  9. Android P在状态栏加入USB图标并根据插入/拔出状态显示/隐藏USB图标

    代码路径: frameworks\base\packages\SystemUI\res\layout\system_icons.xml frameworks\base\packages\SystemU ...

  10. js写多余文字用省略号表示,点击可显示隐藏

    因为是多段文字的隐藏,用js写比较麻烦,索性用jquery写了 html部分 <div><p class="word-length">超过20个字多余隐藏超 ...

最新文章

  1. Windows 下面的 redis GUI操作工具
  2. python 办公自动化-Python办公自动化|从Excel到Word
  3. CMSIS对异常和中断标识符、中断处理函数名以及中断向量异常号都有严格的要求。
  4. 实现一个EventTarget类
  5. python中常见的双下方法_python中常见的双下方法_python面向对象(5)__特殊双下方法...
  6. 离散事件模拟-银行管理
  7. C# window forms Treeview checkbox子节点和父节点相互选中的关系
  8. 小明用计算机算出58十35,人教版三年级数学下册第三四单元测试卷.docx
  9. 忘记linux密码怎么办?
  10. vs编译与停止调试时卡顿、无响应的问题
  11. STM8开发环境搭建(STVD + COSMIC)
  12. python字符串排列组合子集_python编程题:字符串的(所有可能的)排列组合
  13. 打造任何地方都能使用的markdown写作软件:Typora云端化
  14. 了解 Fetch API
  15. 我比较笨,我得一步一步来
  16. 个人项目 免费开源 基于STM32F103的oled示波器,频谱fft adc电压采集 spi接口0.96寸oled
  17. W3school离线手册2019资源下载
  18. WinDebug 调试工具-0
  19. oj-杭电 No Brainer
  20. 【C++】从无到有学习路线

热门文章

  1. java并发编程 Lock
  2. python爬取商品信息
  3. java向注册表单传递数据php_form表单传递数组数据、php脚本接收的实例
  4. SpringApplication.run方法分析
  5. 数组转ArrayList的正确方式
  6. List中根据某个实体的属性去重
  7. React使用详解(学习笔记)
  8. Java 12网络编程
  9. bzoj1458 士兵占领
  10. ARM汇编初探---汇编代码中都有哪几类指令---ARM伪指令介绍