Я попытаюсь объяснить, что точно я должен сделать.
У меня есть 3 отдельных экрана, говорят что A, B, C. Существует другой названный экран, говорят, что HomeScreen, где все 3 экранных битовых массива должны быть отображены в представлении Gallery и пользователе, может выбрать, в котором представление делает он хочет пойти.
Я смог получить Битовые массивы всех 3 экранов и отобразить его в представлении Gallery путем размещения всего кода в Действие HomeScreen только. Теперь, это усложнило код много, и мне понравится упрощать его.
Так, могу я называть другое Действие от HomeScreen и не отображать его и просто получать Битовый массив того экрана. Например, говорю я, просто называют HomeScreen, и он называет Действие A, B, C, и ни одна из Операций от A, B, C не отображена. Это просто дает Битовый массив того экрана getDrawingCache (). И затем мы можем отобразить те битовые массивы в представлении Gallery в HomeScreen.
Я надеюсь, что объяснил проблему очень ясно.
Сообщите мне, на самом деле ли это возможно.
есть способ сделать это. вам нужно создать Bitmap и Canvas и вызвать view.draw (canvas);
вот код:
public static Bitmap loadBitmapFromView(View v) {
Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
v.draw(c);
return b;
}
если вид не отображался до того, как его размер будет равен нулю. Его можно измерить следующим образом:
if (v.getMeasuredHeight() <= 0) {
v.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
Bitmap b = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
v.draw(c);
return b;
}
РЕДАКТИРОВАТЬ: согласно этот пост , Передача WRAP_CONTENT
в качестве значения в makeMeasureSpec ()
не делает чтобы принести пользу (хотя для некоторых классов представлений это действительно работает), и рекомендуемый метод:
// Either this
int specWidth = MeasureSpec.makeMeasureSpec(parentWidth, MeasureSpec.AT_MOST);
// Or this
int specWidth = MeasureSpec.makeMeasureSpec(0 /* any */, MeasureSpec.UNSPECIFIED);
view.measure(specWidth, specWidth);
int questionWidth = view.getMeasuredWidth();