2013-12-16 4 views
1

Я недавно начал строить свое второе приложение для Android, и я ударил стену. В общем, я хочу знать это. Почти во всех других языках программирования, которые я использовал, есть простой способ рисования произвольно на экране. Обычно есть класс типа Scene или Canvas и еще один класс класса GraphicObject. Итак, если, скажем, я хочу нарисовать автомобиль, я создаю класс, который сходит с GraphicObject и определит, что он сам рисует, а затем добавляет экземпляр класса Car (объект) в сцену. Если я хочу второй автомобиль, вы просто создаете экземпляр другого и помещаете его туда, где хотите, задав какую-то функцию координат. Если это программа, в которой то, что нарисовано, зависит от пользовательского ввода, все должно выполняться программно и, следовательно, оно не зависит ни от чего, кроме написанного кода.Каков наилучший способ рисования произвольных объектов в Android?

Как вы достигаете этого в Android? Насколько я могу собрать единственный объект, который вы можете определить, как он нарисован, является View. Однако я не смог просто взять свой пользовательский вид (который рисует прямоугольник в моем случае) и создать экземпляр двух из них, чтобы поместить их на экран, где я их хочу, и сделать это простым программным способом.

Благодарим за любые советы.

+0

Canvas или OpenGL ES – SpeedEX505

+0

Ответ на Canvas в ответах ниже, а не на OpenGL ES .... – aarelovich

+0

У меня был небольшой опыт работы с открытым GL. То, что я хочу сделать, не является ужасно сложным, так как в основном это касается рисования карт и текста, я могу попробовать. – aarelovich

ответ

0

Ну, если я хочу рисовать позволяет говорить 10 прямоугольников, то я не буду инстанцирует мой пользовательский View 10 раз. Вместо этого я добавлю логику в свой пользовательский View, чтобы иметь возможность рисовать 10 или более прямоугольников. В любом случае, если вы хотите снова нарисовать то, что было нарисовано в View, вы можете позвонить setDrawingCacheEnabled(true); на свой View, а затем позвонить getDrawingCache(), чтобы получить Bitmap, чтобы нарисовать его в другом месте.

+0

Итак, что вы говорите, так это то, что я использую только один вид, чтобы нарисовать все, что мне может понадобиться? Что касается вашего второго предложения. Если я не хочу снова рисовать то же самое (я хочу, например, изменить цвет и размер), будет ли этот метод работать? – aarelovich

+0

'Так что вы говорите, что я использую только одно представление, чтобы нарисовать что-нибудь, что мне может понадобиться?' Нет. Я говорю, что если вы, возможно, пытаетесь создать такое же представление, как и ваш предложенный здесь вопрос. «Однако я не смог просто взять свое собственное представление (которое рисует прямоугольник в моем случае) и создать два экземпляра из них, на экране, где я хочу их ", тогда вы можете просто добавить функциональность рисования одной и той же вещи дважды в этом представлении. –

+0

И если вещь такая же, например. прямоугольник, но размер и цвет меняются, тогда да, вы можете использовать только одно представление, которое будет иметь метод addRect (цвет, размер), и вид будет также привлекать вновь добавленный прямоугольник. Даже если вы стремитесь написать приложение для рисования, которое позволяет пользователю нарисовать некоторые основные фигуры, то снова да, это можно и нужно делать только в одном представлении. ИМХО. –

0

Его почти то же самое в андроида также,

Все виджеты наследуются от класса View, расширяя этот класс вы можете создать все, что вы хотите, ограничивая только твое воображение, у вас есть доступ к холсту здесь, использовать его наряду с сенсорными элементами управления, открытыми из самого класса, чтобы переопределить все поведенческие действия, которые вы хотите, в соответствии с вашими потребностями.

http://developer.android.com/reference/android/view/View.html http://developer.android.com/reference/android/graphics/Canvas.html

+0

Я могу взглянуть на все, что захочу, на этом мы согласны. Я рисую его, используя метод onDraw и Canvas. ОК. Однако проблема возникает, когда я хочу поместить несколько экземпляров представления в позицию, которая мне нравится на экране. Как мне это сделать? С canvas единственный способ, которым я могу понять, - просто нарисовать все, что я хочу, и иметь вид, занимающий весь экран .... – aarelovich

+0

Читайте о FrameLayout, чем, – Techfist

+0

Я читал, и в нем говорится, что FrameLayout сделан так, что я может добавить 1 вид, в частности. Я хочу добавить несколько просмотров и поместить их туда, где я их хочу. Ни один из ответов до сих пор (за исключением OpenGL ES) не имеет метода setPos или чего-то подобного .... – aarelovich

Смежные вопросы