Android——超简单悬浮窗使用教程
完全自定义悬浮窗,保证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——超简单悬浮窗使用教程相关推荐
- android悬浮动态权限,android应用内悬浮窗-自动贴边,不需要权限!
简单基于注释的API来处理运行时6.0权限配置 热门度(没变化) 10.0/10 (没变化) ">10.0 活跃度(没变化) 0.8/10 (没变化) ">0.8 Wa ...
- android 夜间模式代码,Android 超简单的夜间模式如何实现?
原标题:Android 超简单的夜间模式如何实现? 本文作者 作者: 唐子玄 实现夜间模式有很多种方式,经过多次尝试,算是找到了一种性价比较高的方式. 1 主题方式 这是最正统的方式,但工作量巨大,因 ...
- Android Demo : 悬浮窗
Android Demo : 悬浮窗 搬砖自:简书 链接:https://www.jianshu.com/p/ac63c57d2555 设计思路分析 本Demo的设计思路如下: 一个MainActiv ...
- 牙齿美化,超简单的美白牙齿教程
牙齿美化,超简单的美白牙齿教程 本篇教程分享美白牙齿的方法,分别是先用调色工具对牙齿进行美白处理,这步不用考虑皮肤,之后再用蒙版保留美白后的牙齿部分即可,方法简单,美白效果一流,分享给大家学习了. 前 ...
- Android WindowManager实现悬浮窗效果 (一)——与当前Activity绑定
最近有学生做毕业设计,想使用悬浮窗这种效果,其实很简单,我们可以通过系统服务WindowManager来实现此功能,本章我们来试验一下在当前Activity之上创建一个悬浮的view. 第一步:认识W ...
- Android 全屏悬浮窗适配(悬浮窗沉浸式)
前言 由于Android 高版本的类型限制,如果我们使用WindowsManager 做悬浮窗,会被限制在当前窗口内容中.而当前窗口大小会限制在状态栏和导航栏之间,所以会导致悬浮窗沉浸不了状态栏. 高 ...
- EasyPay(易支付)Android超简单微信支付宝支付接入
今天我们来看看一个超简单集成微信和支付宝的支付框架EasyPay(易支付), 初学者都能一看就会一写就对的集成支付的方法. 首先还是先上gitHub链接 GitHub - kingofglory/Ea ...
- Android全屏悬浮窗画布,使用WindowManager实现Android悬浮窗
WindowManager介绍 通过Context.getSystemService(Context.WINDOW_SERVICE)可以获得 WindowManager对象. 每一个WindowMan ...
- Android 实现Service悬浮窗监听实时网速
我们都知道Android 的Service一般情况下是没有界面的,也就是运行在后台看不见的地方,实际上Service也可以是可见的,这篇文章简单记录一下如何让Service可见. 在安卓8以后显示悬浮 ...
最新文章
- babymips(下) 寒假逆向生涯(14/100)
- 每天60秒读懂世界20211127
- 计算机组成原理实验八报告,计算机组成原理实验八报告
- eltree ref什么时候有_Vue3响应式系统源码解析-Ref篇
- Linux 命令之 sftp -- 交互式的文件传输程序
- java 反射api_Java学习笔记--反射API
- Cronolog 分割 Tomcat8 Catalina.out日志 (转)
- CISSP的成长之路(十六):复习访问控制(1)
- syslog-ng记录history日志
- 使用openssl 来生成rsa pkcs1 2048格式的公私钥
- 数据包络分析--Malmquist指数
- Android 9.0 开启飞行模式
- Docker 官方安装文档
- 给大龄程序员的4种竞争力策略
- VS C++控制台程序 错误 fatal error C1083: 无法打开包括文件 解决办法
- PyQt5实战之二维码生成器(一):基本界面设计
- Ubuntu18.04卸载并重新安装Ubuntu及
- 推荐画UML图以及流程图的在线网站Site
- 华为正式发布方舟编译器,相关源码已开放下载;微软开源量子开发工具包 QDK;GitHub回应突然断供:也很无可奈何的样子……...
- 福昕 取消高亮 等注释