Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
_Night_Scream_
55 / 67 / 7
Регистрация: 08.08.2013
Сообщений: 545
#1

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

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

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

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

Canvas в JPEG Android
вылетает canvas Android
Масштабирование Canvas Android
Canvas Android
Canvas и Button Android
Android Intent в Canvas
Android Столкновения на canvas
Использование canvas Android
Android Программное создание GridLayout и добавление в него объектов
Android canvas Android
Android Динамическое изменение положения объектов
Потоки. Canvas Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mikalai
254 / 230 / 93
Регистрация: 11.01.2015
Сообщений: 649
23.08.2015, 23:01     Динамическое добавление объектов на canvas #2
На canvas должна отрисовываться некоторая модель хранящая информацию. соответственно менять нужно модель и отривовывать её заново. В 2-х словах получается слишком абстрактное объяснение. Советую прочитать книгу "Mario Zechner - Beginning Android Games"
_Night_Scream_
55 / 67 / 7
Регистрация: 08.08.2013
Сообщений: 545
24.08.2015, 10:28  [ТС]     Динамическое добавление объектов на canvas #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 дальше сделает своё дело.

Я думаю в том направлении или это бред?
Mikalai
254 / 230 / 93
Регистрация: 11.01.2015
Сообщений: 649
24.08.2015, 12:16     Динамическое добавление объектов на canvas #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Направление нормальное. Только нужно помнить - если у тебя покадровая анимация(необходимо быстро обсчитывать модель и отрисовывать объекты), то лучше в процессе объектов не создавать и не удалять. Выделение памяти и работа GC - дорогие операции. Необходимо создавать пул объектов и переиспользовать их.
Yandex
Объявления
24.08.2015, 12:16     Динамическое добавление объектов на canvas
Ответ Создать тему
Опции темы

Текущее время: 13:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru