Android Service 加载 GLSurfaceView 显示动画

2023-11-09

 

先说遇到的需求,要在不影响前台应用的情况下,弹出一些通知,且样式比较花哨。所以用后台Service + GLSurfaceView的方式做个小demo,趟一趟路。

实现的效果就是这样了,就是桌面有个cube一直转圈圈,不影响其他任何操作。

简单来说,要做的就是,自己新创建一个View,然后通过WindowManager把它加载进去。

要注意权限,在Manifest文件中声明权限,这样才能在最上层显示。

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

LayoutParams参数里,要设置成 WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY 属性,否则会报错:permission denied for window type 2006。

要让背景透明的话,GLSurfaceView必须设置成 PixelFormat.TRANSPARENT 格式,以及颜色深度格式 setEGLConfigChooser(8, 8, 8, 8, 16, 0),这样Alfa通道的透明度才能表现出来。

下面是完整的onCreate()逻辑,opengl相关的操作比较繁琐,有兴趣可以下载demo源码查看。

    @Override
    public void onCreate() {
        super.onCreate();

        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO)
            return;

        MySurfaceView = new GLSurfaceView(this);
        MySurfaceView.setEGLContextClientVersion(3);
        MySurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
        MySurfaceView.getHolder().setFormat(PixelFormat.TRANSPARENT);
        MySurfaceView.setRenderer(new ViewRender(this));
        MySurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);

        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                        | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
                        | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
                        | WindowManager.LayoutParams.FLAG_FULLSCREEN
                ,
                PixelFormat.TRANSLUCENT
        );
        params.gravity = Gravity.LEFT | Gravity.TOP;
        params.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
        params.setTitle("ViewService");
        WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
        wm.addView(MySurfaceView, params);
    }

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Service 加载 GLSurfaceView 显示动画 的相关文章

随机推荐

  • 有向图的拓扑排序

    有向图的拓扑排序的基本思想是 首先在有向图中选取一个没有前驱的顶点 将其输出 从有向图中删除该顶点 并且删除 以该顶点为尾 的所有有向图的边 重复以上的步骤 直到图中的 所有顶点均输 出或是图中的 顶点均没有前驱 为止 对于后者 说明有向图
  • 网络安全入门学习第五课——MySQL运算函数集合

    文章目录 前言 一 COUNT 二 SUM 三 AVG 四 MAX 五 MIN 前言 MySQL中包括COUNT SUM AVG MAX 和MIN 当需要对表中的记录求和 求平均值 查询最大值和查询最小值等操作时 可以使用集合函数 GROU
  • ModuleNotFoundError: No module named ‘MultiScaleDeformableAttention

    需要编译一下 下载这个项目的代码GitHub fundamentalvision Deformable DETR Deformable DETR Deformable Transformers for End to End Object D
  • LAMP环境的搭建与部署

    目录 一 LAMP是什么 二 LAMP是怎么协同工作的 为什么需要的是这四个组合 三 搭建LAMP环境 gt 部署WEB程序 1 LAMP环境作用 四 LAMP环境搭建过程 1 安装apache 2 安装mysql 一 LAMP是什么 Li
  • Mac 抓包工具 Charles安装和破解教程

    1 环境 mac 10 13 charles 4 2 2 安装 官方地址 https www charlesproxy com 3 破解 1 可以参考CSDN博客上面的破解教程 比如修改charles jar文件或者替换掉原来的软件 2 可
  • 【R语言】——火山图绘制

    本期介绍利用R语言筛选差异表达基因及绘制火山图 一 什么是火山图 火山图 volcano plot 是散点图的一种 它将统计测试中的统计显著性量度 如p value FDR 和变化幅度相结合 从而可以快速直观地识别那些变化幅度较大且具有统计
  • 写一篇关于挠脚心的文章

    挠脚心是一种常见的不适症状 它指的是在脚底部或脚趾处感到刺痛或针刺感 挠脚心可能是由于多种原因引起的 其中常见的原因有 高弓足 高弓足是指脚弓高度过高 导致脚底和脚趾处压力过大 引起挠脚心 足部运动损伤 长期运动或活动过度可能导致脚底和脚趾
  • SDNU 1224.Tom'problem B(迪杰斯特拉)

    Description Tom is a student in Shan Dong Normal University his University in the suburbs this day Tom wanted to go to t
  • 《马克思主义基本原理概论》第 1 章世界的物质性及发展规律

    未完待续
  • Python-GIL深度理解

    1 GIL介绍 GIL 意为全局解释器锁 是cPython执行多线程 进程计算密集型代码效果不如人意的主要原因 cPython限制一个进程内同时只能执行一个线程 首先介绍一下 正常多线程 进程执行时 多线程 进程数据混乱的原因 cpu分成多
  • Ubuntu中安装Python的mysqlclient的相关命令

    在Ubuntu中安装Python的mysqlclient的相关命令 安装MySQL数据库 具体步骤如下 apt get update apt get install python pip 已经有pip命令则跳过此步骤 apt get ins
  • 搭建个人网站,服务器应该怎么选择。

    新手怎么去挑选服务器的配置呢 目前不管是个人还是企业 只要是需要在网上开展业务的话 都需要有自己的网站或者应用程序 VPS因为性能较低使用不太方便 渐渐被淘汰出市场 那么在各类服务器的选项下 怎么选择适合的配置呢 一 服务器区域 影响一个网
  • VMware安装ubuntu连接互联网和主机

    1 需求 ubuntu既需要连接互联网也需要和主机进行ssh操作 2 实现 2 1 VMware查看NAT IP 如下图 VMware随机生成的一个IP 无需手动修改 2 2 对虚拟机设置使用NAT模式 2 3 修改物理机网卡 修改物理机v
  • Mybatis、MybatisPlus自定义返回单个Map集合

    1 mybatis返回单个map存单条数据 mapper接口 Map
  • 【Fluent】雷诺方程:推导与求解(附MATLAB代码)

    目录 引言 雷诺方程的推导 雷诺方程的解 雷诺方程的推广 有限体积法 引言 雷诺方程 即湍流的平均运动方程 所属黏性不可压缩流体动力学 从Navier Stokes方程派生 是经典润滑理论的基本方程之一 1886年 奥斯本 雷诺兹 Osbo
  • 【单片机毕业设计】【dz-078】基于物联网的环境测控系统设计

    最近设计了一个项目基于物联网的环境测控系统设计 与大家分享一下 一 基本介绍 项目名 WIFI环境监测 实物 项目编号 mcuclub dz 078 单片机类型 STM32F103C8T6 具体功能 1 通过DHT11检测温湿度 当温湿度超
  • Python判断字符串是否为字母或者数字

    str 1 123 str 2 Abc str 3 123Abc isdigit函数判断是否数字 print str 1 isdigit True print str 2 isdigit False print str 3 isdigit
  • 算法笔记——力扣。持续更新

    动态规划 算法复习 动态规划 HongmingYou 博客园 T583
  • 【tflearn系列教程】(二)如何安装tflearn

    本教程参考自tflearn官方文档 英文版 http tflearn org 主要是对官方文档的翻译与讲解 并结合本人实战经验而作 如有错误 欢迎指出 作者 totorocyx 邮箱 847994259 qq com 转载请联系 一 从te
  • Android Service 加载 GLSurfaceView 显示动画

    先说遇到的需求 要在不影响前台应用的情况下 弹出一些通知 且样式比较花哨 所以用后台Service GLSurfaceView的方式做个小demo 趟一趟路 实现的效果就是这样了 就是桌面有个cube一直转圈圈 不影响其他任何操作 简单来说