带有操作栏的 Activity 的 Android 屏幕截图

标签 android android-actionbar screenshot

我使用这些行来截取我的 Activity :

View toppest = ((ViewGroup) ctx.getWindow().getDecorView().findViewById(android.R.id.content)).getChildAt(0);
toppest.setDrawingCacheEnabled(true);
Bitmap bmap = toppest.getDrawingCache();
Utils.saveBitmapOnSdcard(bmap);
toppest.setDrawingCacheEnabled(false);

无论如何,此屏幕截图不包含操作栏。

如何使用 actionBar 截屏?

有关信息:我将 Sherlock 操作栏实现与 windowActionBarOverlay 选项设置为“true”。

最佳答案

我找到了解决方案。需要使用 ctx.getWindow().getDecorView() View 获取全屏位图缓存。

此外,还有一个小细节:屏幕截图包含状态栏的空白区域。我们在 Window.ID_ANDROID_CONTENT 上边距的帮助下跳过状态栏高度。最后,这给出了与我们之前在手机上看到的大小相同的 Activity 的完整屏幕截图:

  View view = ctx.getWindow().getDecorView();
  view.setDrawingCacheEnabled(true);

  Bitmap bmap = view.getDrawingCache();
  Log.i(TAG,"bmap:" + b);


  int contentViewTop = ctx.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop(); /* skip status bar in screenshot */
  Storage.shareBitmapInfo = Bitmap.createBitmap(bmap, 0, contentViewTop, bmap.getWidth(), bmap.getHeight() - contentViewTop, null, true);

  view.setDrawingCacheEnabled(false);

关于带有操作栏的 Activity 的 Android 屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13194118/

相关文章:

Java Wicket 组件到图像

Java - 将图像转换为 Word 文档

android - 分析 android-ndk 纯 C/C++ 可执行文件

android - 在 Xamarin.Forms 中处理 Android 推送通知操作

android - 从首选项以编程方式更改操作栏背景颜色

c# - 将 key 发送到 DirectX 游戏

java - 使用 Retrofit 和 GSON 将复杂 JSON 映射为 Java 对象的正确方法

android - 从没有读/写权限的内部存储读取文件?

android - 显示进度微调操作栏 android L api 21

java - 安卓工具栏