Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
_Night_Scream_
80 / 77 / 11
Регистрация: 08.08.2013
Сообщений: 631
1

Динамическое добавление объектов на canvas

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

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

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

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

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

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

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

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

3
Mikalai
264 / 240 / 95
Регистрация: 11.01.2015
Сообщений: 671
23.08.2015, 23:01 2
На canvas должна отрисовываться некоторая модель хранящая информацию. соответственно менять нужно модель и отривовывать её заново. В 2-х словах получается слишком абстрактное объяснение. Советую прочитать книгу "Mario Zechner - Beginning Android Games"
1
_Night_Scream_
80 / 77 / 11
Регистрация: 08.08.2013
Сообщений: 631
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
264 / 240 / 95
Регистрация: 11.01.2015
Сообщений: 671
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;...


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

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

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