android - 获取当前 Activity (Android) 中可见的任何 AlertDialog 实例的 View 对象
问题描述
我有代码可以对当前窗口的根视图进行绘图屏幕截图。
问题是,屏幕截图仅针对正在运行的活动。它不会绘制任何可能在活动内可见的 AlertDialog。
有没有一种方法可以让我绘制当前活动和任何其他可见的 AlertDialogs/Views 的屏幕?
当前代码:
View v1 = getWindow().getDecorView().getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createScaledBitmap(v1.getDrawingCache(), 360, 740, false);
v1.setDrawingCacheEnabled(false);
解决方案
像这样实现屏幕截图方法 -
将您的 alertDialog 传递给 capture() 方法 -
private void capture(AlertDialog dialog) {
Date time = new Date();
android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", time);
try {
// image path
String mPath = "/data/data/com.example.sample/" + time + ".jpg"; //
View v1 = dialog.getWindow().getDecorView().getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
File imageFile = new File(mPath);
FileOutputStream outputStream = new FileOutputStream(imageFile);
int quality = 100;
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
outputStream.flush();
outputStream.close();
} catch (Throwable e) {
e.printStackTrace();
}
}
您可以通过将该视图传递给此方法来为任何其他视图创建屏幕截图,并根据您的要求更改视图 v1。
推荐阅读
- ajax - 如何使用 ajax 从 react 到 express?
- github - 删除 GitHub 上的问题
- sql - Postgres text [ ] 通配符搜索
- swift - 将 CoreData 与 Codable 协议一起使用的问题
- sql - 将数组转换为 Map
- vba - 查找最后一行vba excel的有效方法
- azure-data-lake - 将数据源从一个数据湖更改为另一个数据湖
- python - Python 与 JIRA XRAY 集成
- php - 在 php 中使用 openssl_encrypt 加密数据,然后寻找在 nodejs 中解密数据 - 所需的密钥大小似乎不同?
- reinforcement-learning - 是否可以修改 OpenAI 环境?