完全自定义悬浮窗,保证100%学会的超简单悬浮窗

先看看效果图:

图1                                                 图2                                              图3

图1只需要31行代码即可完成。

我们来看看这些都是如何实现的

在使用GT库里封装的架构当然需要先依赖好GT库:

详细依赖教程请参看

GitHub - 1079374315/GTContribute to 1079374315/GT development by creating an account on GitHub.https://github.com/1079374315/GT

使用GT 悬浮窗教程

第一步:自定义的xml布局 demo_floating_window

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="wrap_content"android:layout_height="wrap_content"><!-- ConstraintLayout 必须要将对话框大小设置出来,解决设置最外层宽高无效的问题 --><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/view_bg"android:layout_width="300dp"android:layout_height="200dp"android:background="#5B77D5FF"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"><TextViewandroid:id="@+id/tv_back"android:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingLeft="10dp"android:paddingRight="10dp"android:text="×"android:textColor="#99FFFFFF"android:textSize="28sp"android:textStyle="bold"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:id="@+id/tv_data"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#8D03B1FF"android:padding="10dp"android:text="简易自定义对话框\n支持返回数据\n支持监听返回键\n用法与 Fragment 毫无差异\n"android:textColor="#A4FFFFFF"android:textStyle="bold"app:layout_constraintBottom_toTopOf="@+id/btn_ok"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/tv_back" /><Buttonandroid:id="@+id/btn_ok"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="好的"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toStartOf="@+id/btn_cancel"app:layout_constraintStart_toStartOf="parent" /><Buttonandroid:id="@+id/btn_cancel"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="取消"app:layout_constraintBottom_toBottomOf="@+id/btn_ok"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toEndOf="@+id/btn_ok" /></androidx.constraintlayout.widget.ConstraintLayout></LinearLayout>

第二步:加载悬浮窗布局

//加载布局
@GT.Annotations.GT_AnnotationFloatingWindow(R.layout.demo_floating_window)
public class DemoFloatingWindow extends GT.GT_FloatingWindow.AnnotationFloatingWindow {@Overrideprotected void initView(View view) {super.initView(view);setDrag(true);//设置可拖动}@GT.Annotations.GT_Click({R.id.btn_ok, R.id.tv_back, R.id.btn_cancel})public void onClick(View view) {switch (view.getId()) {case R.id.btn_ok:GT.toast("单击了ok");break;case R.id.tv_back:case R.id.btn_cancel:finish();//关闭当前悬浮窗break;}}}

第三步:使用悬浮窗(这里的布局因为只有一个按钮组件,故不贴出布局了)

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {GT.startFloatingWindow(MainActivity.this, DemoFloatingWindow.class);//启动悬浮窗}});}}

第四步:添加悬浮窗权限 与 注册写好的悬浮窗 (AndroidManifest.xml)

可直接复制粘贴:

 <!-- 添加悬浮窗权限 --><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /><!-- 注册写好的悬浮窗 --><service android:name=".DemoFloatingWindow"  android:exported="true"/>

然后就完工,可直接运行了

总结:熟悉GT库的是不是感觉特别熟悉,没错,GT内的Activity、Fragment、DialogFragment、FloatingWindow 的使用方法与结构都是一模一样的,也就是说只要你学会了其中一个,那就等同于其他的你都学会了。

糖豆:如果想要图2、图3的源码,请直接下载最新GT库,GT库中的 util 目录中就是源码。 启动GT模拟手机版悬浮窗的代码如下:

点个关注点个赞呗(〃'▽'〃),关注博主最新发布库:GitHub - 1079374315/GT

Android——超简单悬浮窗使用教程相关推荐

  1. android悬浮动态权限,android应用内悬浮窗-自动贴边,不需要权限!

    简单基于注释的API来处理运行时6.0权限配置 热门度(没变化) 10.0/10 (没变化) ">10.0 活跃度(没变化) 0.8/10 (没变化) ">0.8 Wa ...

  2. android 夜间模式代码,Android 超简单的夜间模式如何实现?

    原标题:Android 超简单的夜间模式如何实现? 本文作者 作者: 唐子玄 实现夜间模式有很多种方式,经过多次尝试,算是找到了一种性价比较高的方式. 1 主题方式 这是最正统的方式,但工作量巨大,因 ...

  3. Android Demo : 悬浮窗

    Android Demo : 悬浮窗 搬砖自:简书 链接:https://www.jianshu.com/p/ac63c57d2555 设计思路分析 本Demo的设计思路如下: 一个MainActiv ...

  4. 牙齿美化,超简单的美白牙齿教程

    牙齿美化,超简单的美白牙齿教程 本篇教程分享美白牙齿的方法,分别是先用调色工具对牙齿进行美白处理,这步不用考虑皮肤,之后再用蒙版保留美白后的牙齿部分即可,方法简单,美白效果一流,分享给大家学习了. 前 ...

  5. Android WindowManager实现悬浮窗效果 (一)——与当前Activity绑定

    最近有学生做毕业设计,想使用悬浮窗这种效果,其实很简单,我们可以通过系统服务WindowManager来实现此功能,本章我们来试验一下在当前Activity之上创建一个悬浮的view. 第一步:认识W ...

  6. Android 全屏悬浮窗适配(悬浮窗沉浸式)

    前言 由于Android 高版本的类型限制,如果我们使用WindowsManager 做悬浮窗,会被限制在当前窗口内容中.而当前窗口大小会限制在状态栏和导航栏之间,所以会导致悬浮窗沉浸不了状态栏. 高 ...

  7. EasyPay(易支付)Android超简单微信支付宝支付接入

    今天我们来看看一个超简单集成微信和支付宝的支付框架EasyPay(易支付), 初学者都能一看就会一写就对的集成支付的方法. 首先还是先上gitHub链接 GitHub - kingofglory/Ea ...

  8. Android全屏悬浮窗画布,使用WindowManager实现Android悬浮窗

    WindowManager介绍 通过Context.getSystemService(Context.WINDOW_SERVICE)可以获得 WindowManager对象. 每一个WindowMan ...

  9. Android 实现Service悬浮窗监听实时网速

    我们都知道Android 的Service一般情况下是没有界面的,也就是运行在后台看不见的地方,实际上Service也可以是可见的,这篇文章简单记录一下如何让Service可见. 在安卓8以后显示悬浮 ...

最新文章

  1. babymips(下) 寒假逆向生涯(14/100)
  2. 每天60秒读懂世界20211127
  3. 计算机组成原理实验八报告,计算机组成原理实验八报告
  4. eltree ref什么时候有_Vue3响应式系统源码解析-Ref篇
  5. Linux 命令之 sftp -- 交互式的文件传输程序
  6. java 反射api_Java学习笔记--反射API
  7. Cronolog 分割 Tomcat8 Catalina.out日志 (转)
  8. CISSP的成长之路(十六):复习访问控制(1)
  9. syslog-ng记录history日志
  10. 使用openssl 来生成rsa pkcs1 2048格式的公私钥
  11. 数据包络分析--Malmquist指数
  12. Android 9.0 开启飞行模式
  13. Docker 官方安装文档
  14. 给大龄程序员的4种竞争力策略
  15. VS C++控制台程序 错误 fatal error C1083: 无法打开包括文件 解决办法
  16. PyQt5实战之二维码生成器(一):基本界面设计
  17. Ubuntu18.04卸载并重新安装Ubuntu及
  18. 推荐画UML图以及流程图的在线网站Site
  19. 华为正式发布方舟编译器,相关源码已开放下载;微软开源量子开发工具包 QDK;GitHub回应突然断供:也很无可奈何的样子……...
  20. 福昕 取消高亮 等注释

热门文章

  1. curl调用新版jenkins crumb报错 No valid crumb was included in the request 解决方法
  2. Linux中不同MTD设备分区,Linux MTD设备总结
  3. 常用的几种数据库介绍
  4. 在设备管理器中找不到笔记本电脑内置摄像头的解决方法
  5. 植物神经紊乱,适量进食米饭有什么好处?
  6. 洛谷P2058 海港(模拟,优先队列)
  7. Python一个回合制兵棋小游戏(1)
  8. 微信公众平台服务器配置时token验证失败
  9. WPS Office应用大全
  10. 从0到1 开启商业与未来的秘密读书笔记