Android - getDrawingCache - черный экран
Я читал почти все посты на эту тему, но ни один из них, похоже, не помог.
Я пытаюсь сделать снимок текущего экрана. Для этого я использую getDrawingCache. Вот мой код:
mRootView.get().setDrawingCacheEnabled(true);
mRootView.get().buildDrawingCache();
Bitmap screenShot = Bitmap.createBitmap(mRootView.get().getDrawingCache());
mRootView.get().setDrawingCacheEnabled(false);
Полученное растровое изображение всегда черное.
mRootView - это слабая ссылка на макет ящика, который является моим корневым представлением.
Вот что я попробовал:
- Добавление вызова меры и макета (хотя в этом нет необходимости, поскольку этот код запускается при нажатии кнопки, поэтому представление уже должно быть размечено).
- Установка типа слоя в LAYER_TYPE_NONE перед вызовом setDrawingCacheEnabled(true)
- Использование другого представления в качестве корневого представления (например, 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;
}
Если вышеуказанное решение не работает, просто перейдите по этой ссылке, чтобы преобразовать представление в растровое изображение.