前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >001. 顶部 Activity / TopActivity [android]

001. 顶部 Activity / TopActivity [android]

作者头像
iOSDevLog
发布2018-05-17 11:05:32
9630
发布2018-05-17 11:05:32
举报
文章被收录于专栏:iOSDevLogiOSDevLog

第一个应用是 Android 的取最顶部 Activity

源码:https://github.com/iOSDevLog/1day1app

001.TopActivity.png

分析一下需求。

  1. 可以用 AccessibilityService 观察界面跳转
  2. AccessibilityEvent 里面取出需要的包名和类名
  3. WindowManager 添加移除 View

开发

  • 创建 Android Studio 项目
  • 添加矢量图 play, stop
  • build.gradle(Module: app) 添加矢量支持
代码语言:javascript
复制
android {
    defaultConfig {
        vectorDrawables.useSupportLibrary = true
    }
}
  • AndroidManifest.xml 添加顶部窗口权限
代码语言:javascript
复制
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
  • 继承 AccessibilityService,当窗口变化时显示或隐藏 TopActivity
代码语言:javascript
复制
override fun onInterrupt() {
}

override fun onAccessibilityEvent(event: AccessibilityEvent?) {
    if (showTopActivityEnabled) {
        show(event!!.packageName.toString() + "\n" + event.className)
    } else {
        dismiss()
    }
}
  • MainActivity 中控制是否开启显示 TopActivity
代码语言:javascript
复制
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
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.01.13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分析一下需求。
  • 开发
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档