Мне нужно захватить основной макет на экране или просто весь экран, если это быстрее. Я пробовал два метода, и оба вызывают заметную задержку.
Способ 1: кэш чертежа - занимает около 80 мс
setDrawingCacheEnabled (true);
Bitmap oldLayout = Bitmap.createBitmap (getDrawingCache ());
setDrawingCacheEnabled (false);
Способ 2: отрисовка на холсте - занимает около 50 мс
Bitmap oldLayout = Bitmap.createBitmap (getWidth (), getHeight (), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas (oldLayout);
int wSpec = MeasureSpec.makeMeasureSpec (getWidth (), MeasureSpec.EXACTLY);
int hSpec = MeasureSpec.makeMeasureSpec (getHeight (), MeasureSpec.EXACTLY);
measure (wSpec, hSpec);
layout (0, 0, getWidth (), getHeight ());
draw (canvas);
Кажется, что если бы я мог снимать прямо с экрана, это было бы быстрее. Однако я не видел способа сделать это. Любые другие методы стоит попробовать?