Android - getDrawingCache - черный экран

Я читал почти все посты на эту тему, но ни один из них, похоже, не помог.

Я пытаюсь сделать снимок текущего экрана. Для этого я использую getDrawingCache. Вот мой код:

mRootView.get().setDrawingCacheEnabled(true);
mRootView.get().buildDrawingCache();
Bitmap screenShot = Bitmap.createBitmap(mRootView.get().getDrawingCache());
mRootView.get().setDrawingCacheEnabled(false);

Полученное растровое изображение всегда черное.

mRootView - это слабая ссылка на макет ящика, который является моим корневым представлением.

Вот что я попробовал:

  1. Добавление вызова меры и макета (хотя в этом нет необходимости, поскольку этот код запускается при нажатии кнопки, поэтому представление уже должно быть размечено).
  2. Установка типа слоя в LAYER_TYPE_NONE перед вызовом setDrawingCacheEnabled(true)
  3. Использование другого представления в качестве корневого представления (например, ViewPager внутри DrawerLayout).

Кажется, ничего не работает, и у меня закончились идеи.

2 ответа

Решение

Вы можете нарисовать свой вид на холсте

передайте ссылку на основной макет этому методу

 Bitmap file = save(layout);

 Bitmap save(View v)
   {
    Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(b);
    v.draw(c);
    return b;
   }

Если вышеуказанное решение не работает, просто перейдите по этой ссылке, чтобы преобразовать представление в растровое изображение.

Другие вопросы по тегам