001. 顶部 Activity / TopActivity [android]
时间:2022-05-16
本文章向大家介绍001. 顶部 Activity / TopActivity [android],主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
第一个应用是 Android 的取最顶部 Activity
。
源码:https://github.com/iOSDevLog/1day1app
001.TopActivity.png
分析一下需求。
- 可以用
AccessibilityService
观察界面跳转 - 从
AccessibilityEvent
里面取出需要的包名和类名 - 用
WindowManager
添加移除View
开发
- 创建 Android Studio 项目
- 添加矢量图 play, stop
- build.gradle(Module: app) 添加矢量支持
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
- AndroidManifest.xml 添加顶部窗口权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
- 继承
AccessibilityService
,当窗口变化时显示或隐藏TopActivity
override fun onInterrupt() {
}
override fun onAccessibilityEvent(event: AccessibilityEvent?) {
if (showTopActivityEnabled) {
show(event!!.packageName.toString() + "n" + event.className)
} else {
dismiss()
}
}
- MainActivity 中控制是否开启显示
TopActivity
override fun onResume() {
super.onResume()
updateServiceStatus()
}
private fun updateServiceStatus() {
val accessibilityManager = getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager
val accessibilityServices = accessibilityManager.getEnabledAccessibilityServiceList(AccessibilityServiceInfo.FEEDBACK_GENERIC)
serviceEnabled = accessibilityServices.any { it.id == packageName + "/.TopActivityAccessibilityService" }
if (serviceEnabled) {
service_textview.setText(R.string.services_on)
fab.setImageResource(R.drawable.ic_stop_black_24dp)
} else {
service_textview.setText(R.string.services_off)
fab.setImageResource(R.drawable.ic_play_arrow_black_24dp)
showTopActivityEnabled = false
}
service_switch.isEnabled = serviceEnabled
service_switch.isChecked = showTopActivityEnabled
}
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Python 基础(十二):文件基本操作
- Python 基础(十三):os 模块
- Python 基础(十四):错误和异常
- Python 基础(十五):枚举
- 一个老程序员的30年生涯回顾
- 经典 90 坦克大战 Python 版实现(支持单双人模式)
- Python 基础(十六):迭代器与生成器
- MySQL information_schema详解 COLUMNS
- MySQL information_schema详解 COLUMN_PRIVILEGES
- 一分钟学Python|Python的字典
- MySQL information_schema详解 ENGINES
- 一日一技:不用轮询,基于事件监控文件变动
- Python 基础(十七):装饰器
- XtraBackup工具详解 Part 10 使用innobackupex对数据库进行部分备份(指定表或数据库)
- Python 基础(十九):数学相关模块