Android 获取 View 显示区域截图

 private Bitmap mCopyBmp = null;
   
 private Bitmap captureVisibleBitmap(View view) {
        view.setDrawingCacheEnabled(true);
        Bitmap copy = view.getDrawingCache();
        if (null != copy) {
            if (null != mCopyBmp) {
                mCopyBmp.recycle();
            }
            mCopyBmp = Bitmap.createBitmap(copy);
        }

        view.setDrawingCacheEnabled(false);
        return mCopyBmp;
    }

说明

  1. 不要试图在 onDraw() 方法中调用 getDrawingCache(), 因为 getDrawingCache() 内部会调用 onDraw()

  2. 如果不调用setDrawingCacheEnabled(true) 那么每次 getDrawingCache() 都需要调用 buildDrawingCache(), 重要的是在要记得最后调用 destroyDrawingCache()来释放 cache

  3. 在setDrawingCacheEnabled(true)的情况下,不需要调用 buildDrawingCache(),也不需要 destroyDrawingCache(), 系统会自动管理