Я пытаюсь создать растровое изображение из представления, которое пока не отображается, чтобы установить его как текстуру с OpenGL в android. Проблема в том, что когда я создаю растровое изображение, параметры макета моего представления имеют значение 0, потому что функция onLayout () еще не была вызвана. Есть ли способ «имитировать» макет или сделать «макет фона», чтобы получить правильные параметры макета? Я думал о макете фрейма, имеющем два вида, фон будет использоваться для создания моего растрового изображения, поскольку макет был бы выполнен.
Благодарю.
Вам действительно нужно развернуть свой вид, прежде чем рисовать его в растровое изображение. Просто вызовите myView.measure (…), затем myView.layout (0, 0, myView.getMeasuredWidth (), myView.getMeasuredHeigh ()). Я привел пример о том, как это сделать в одной из следующих презентаций: http://www.curious-creature.org/2010/12/02/android-graphics-animations-and-tips-tricks/
Итак, некоторые изменения после того, как вопрос был выяснен 🙂
Я предлагаю вам создать растровое изображение независимо от представления, а затем масштабировать его до того же размера, что и представление после создания представления. Создайте растровое изображение произвольного размера, которое позволяет вам отображать то, что вы хотите.
// Это в каком-то классе, который отображает ваше растровое изображение независимо и может быть // запрашивается, чтобы получить растровое изображение ... Bitmap b = Bitmap.createBitmap (100, 100, Bitmap.Config.ARGB_4444); // выставляем что-то вашему растровому изображению здесь
Затем, после того как ваше представление будет создано, возьмите предварительно обработанное растровое изображение и перетащите его в нужный размер (я на самом деле не проверял это, компилируя его – может быть, ошибки):
Rect original = new Rect (0, 0, 100, 100); RectF destination = new RectF (0.0, 0.0, (float) myView.getWidth (), (float) myView.getHeight ()); Canvas canvas = new Canvas (); Canvas.drawBitmap (myRenderingClass.b, original, destination, null); myView.draw (холст);