Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
_Night_Scream_
77 / 75 / 9
Регистрация: 08.08.2013
Сообщений: 623
#1

Динамическое добавление объектов на canvas - Программирование Android

23.08.2015, 22:45. Просмотров 394. Ответов 3
Метки нет (Все метки)

Всем привет, даже не знаю как правильно задать вопрос.

По нажатии кнопки хочу добавлять например квадраты с произвольные расположением, потом взять любой из добавленных и изменить его цвет.
Как их хранить чтобы потом можно было к любому обратиться и любой удалить?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2015, 22:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Динамическое добавление объектов на canvas (Программирование Android):

Динамическое изменение положения объектов
Есть текстовое поле под ним изображение, как сделать чтобы при изменении...

Программное создание GridLayout и добавление в него объектов
Дисклеймер: Всем доброго дня! Я - новичок в написании программ под Android....

Динамическое добавление объектов в ComboBox и на Canvas в WPF
делаю так: Hashtable Devices = new Hashtable(); ...

Динамическое добавление объектов на форму
Задача такая: Добавить n элементов типа checkBox. n вводится в edit Нашёл на...

Динамическое добавление новых объектов
Есть кнопка, при нажатии на которую, должна создаваться рядом ещё одна кнопка с...

Динамическое добавление объектов(структур)
У меня есть класс, который определен как тип...в этом классе я храню информацию...

3
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
23.08.2015, 23:01 #2
На canvas должна отрисовываться некоторая модель хранящая информацию. соответственно менять нужно модель и отривовывать её заново. В 2-х словах получается слишком абстрактное объяснение. Советую прочитать книгу "Mario Zechner - Beginning Android Games"
1
_Night_Scream_
77 / 75 / 9
Регистрация: 08.08.2013
Сообщений: 623
24.08.2015, 10:28  [ТС] #3
Mikalai, да, очень абстрактно.

В общем вот что я придумал, поправьте если что не так.

Вот в этом хочу хранить свои классы mbObject (класс - обёртка над canvas.drawText)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SparseArray array = new SparseArray();//коллекция моих объектов
 
//так добавляю в коллекцию классы
mbObject q = new mbObject("zzz",p,canvas);
array.append(inc, q);//тут добавление в коллекцию
 
@Override
protected void onDraw(Canvas canvas) {//моя рисовалка
for(int i = 0; i < array.size(); i++) {//t1 - это мой mbObject
    int key = array.keyAt(i);//получить ключ
    t1 = (mbObject)array.get(key);//получение объекта
    t1.draw(canvas);//вызов метода у моего класса для рисования текста
}
 
}
Что получается, я насоздавал своих классов и закинул их в SparseArray коллекцию.
В методе onDraw вызываю у всех своих классов метод рисования из коллекции по циклу.
Смысл в том, чтобы в своем классе обертке mbObject управлять объектом, в данном случае drawText.

Удаление объектов делаю так.
Java
1
2
3
array.removeAt(key);//удаление по индексу
//или
array.remove();//удаление по ключу
Удаляю ссылку на объект из коллекции, garbage дальше сделает своё дело.

Я думаю в том направлении или это бред?
0
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
24.08.2015, 12:16 #4
Лучший ответ Сообщение было отмечено _Night_Scream_ как решение

Решение

Направление нормальное. Только нужно помнить - если у тебя покадровая анимация(необходимо быстро обсчитывать модель и отрисовывать объекты), то лучше в процессе объектов не создавать и не удалять. Выделение памяти и работа GC - дорогие операции. Необходимо создавать пул объектов и переиспользовать их.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2015, 12:16
Привет! Вот еще темы с решениями:

Динамическое добавление объектов разных типов
Цель следующая, хочу сделать что-то вроде категорий (лейблы) и...

Динамическое добавление массива в свойство объектов
есть код this.addArr=function(){ for (var i=0;i&lt;...

Динамическое создание элемента canvas
Здравствуйте! При нажатии на кнопку требуется, чтобы создавался новый...

Добавление и удаление объектов. Рисование объектов на экране
Доброго времени суток. Есть очень интересующий вопрос, как сделать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru