Android: Root View 的快照(带有 ActionBar)

标签 android android-activity

我过去常常通过获取 Activity 的内容 View 并绘制它来捕捉 Activity 的位图:

View view = activity.findViewById(android.R.id.content)

Bitmap bitmap = Bitmap.createBitmap(
    view.getWidth(), view.getHeight(), Config.ARGB_8888
);

view.draw(new Canvas(bitmap));

现在我使用的是 ActionBar,它没有嵌套在 content View 下,因此将其排除在外。如何获得真实 Root View ?或者用其他方式用操作栏拍照(如果不可能的话)?

最佳答案

要获取整个窗口(包括 ActionBar)的位图,您可以使用 DecorView。

  1. 首先您需要启用绘图缓存

    getWindow().getDecorView().setDrawingCacheEnabled(true);
    
  2. 获取位图

    Bitmap bmp = getWindow().getDecorView().getDrawingCache();  
    
  3. 在其他地方使用位图,我用 ImageView 尝试了这一点,效果很好。

  4. 禁用绘图缓存

    getWindow().getDecorView().setDrawingCacheEnabled(false);
    

关于Android: Root View 的快照(带有 ActionBar),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11371777/

相关文章:

android - 同一 Activity 和同一屏幕中的两个 fragment

android - Firestore 配置 - Firebase

android - 方案主机无法在 android Lollipop 上运行,单击链接以打开应用程序

java - xml 中的字符串标记在 16 以上的 api 中产生了一些问题

java - 安装 Android ADT 14 : "R cannot be resolved" 后

Android:如何让一个 Activity 将结果返回给调用它的 Activity ?

android - 如何从最近导出的 Activity 中排除?

android - 如何从当前 Activity 开始新 Activity ?

android - 是否需要在 Android 应用程序的每个 Activity 中调用 bugsense 崩溃处理程序?

android - 将我的 Android 用作 USB 设备