android - 如何在 Android 中获取包括对话框和 Toast 在内的所有内容的像素位图?
问题描述
我在互联网上做了一些搜索。有些人建议使用 PixelCopy API 或 Canvas。但是,任何一种方式都仅限于获取装饰视图的位图。如果当前活动顶部有 toast 或 AlertDialog,则它们的图像不会出现在最终位图中。
所以我的问题是,我可以获得整个活动的位图,而不仅仅是视图,所以位图包含活动顶部的任何对话框或 Toast?
解决方案
所以我的问题是,我可以获得整个活动的位图,而不仅仅是视图,所以位图包含活动顶部的任何对话框或 Toast?
是的,我们可以使用窗口管理器来访问层次结构中的所有视图。
如何实现这一点:
- 获取活动的窗口管理器,它负责管理有序的窗口列表并包含有关它们在屏幕上的布局方式的信息。这
Object
可以保持您需要的视图层次结构。 - 对于对象中的目标类,使用getDeclaredFields()方法获取声明的字段。这给出了为给定活动视图声明的所有视图字段。您可以使用字段标签
mGlobal
、mRoots
和来区分视图层次结构mParams
。 - 这使您可以访问活动中声明的所有视图字段。
Falcon对此进行了深思熟虑的实施。
推荐阅读
- node.js - 在 Sequelize 中有一个关联
- powershell - 未保存在 PowerShell 中的变量
- javascript - 使用 Div 作为表格,如何按特定列排序?
- c - 我正在运行一个程序并遇到了这个错误。这是什么意思?
- javascript - 路由更改时的Vue组件高度转换
- java - java map toString() 覆盖
- pandas - 当循环找到特定的字符串序列时创建一个新索引
- android - 在Android Studio中,导入tensorflow lite模型后,生成的示例代码如何使用?
- ios - 在 SwiftUI 中阅读 colorScheme?
- laravel - 在 Laravel 中显示两个不相关的表