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

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

Войти
Регистрация
Восстановить пароль
 
_Night_Scream_
75 / 74 / 8
Регистрация: 08.08.2013
Сообщений: 581
#1

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

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

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

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

Динамическое изменение положения объектов - Программирование Android
Есть текстовое поле под ним изображение, как сделать чтобы при изменении количества строк изображение смещалась?

Программное создание GridLayout и добавление в него объектов - Программирование Android
Дисклеймер: Всем доброго дня! Я - новичок в написании программ под Android. Имеется небольшой опыт С++/С#, но речь не об этом. Я...

Canvas - Программирование Android
Хочу разобраться в канвасе. Полазил по интернету, не нашел никакого простейшего материала про движение обьектов созданных в канвасе по...

Столкновения на canvas - Программирование Android
Здравствуйте. Задача определить позиции столкновения для 2 объектов-рисунков .png, которые при этом еще и вращаются...

Карта на Canvas - Программирование Android
Здравствуйте! Решил попробовать написать игру под андроид, до этого писал пару приложений несложных. Суть игры рассказывать не буду,...

Использование canvas - Программирование Android
Интересует насколько глупо использовать слудующий метод рисование и как тогда быть. Есть игра где все происходит в координатной системе....

Android canvas - Программирование Android
Как передать параметры в класс с методом onDraw? Этот самый класс мне нужно вызвать в xml! я так то сделал вложеный класс, и...

canvas.rotate - Программирование Android
Данный код работает не стабильно на разных устройствах. Под разные плотности экрана (ldpi, mdpi, hdpi, xhdpi) в каждую папку был...

Canvas в JPEG - Программирование Android
Всем Привет! пытаюсь сохранить все что нарисовано на канве в джпег-файл. Глубоко не загугливаясь обнаружил следующий материал:...

Растянуть Canvas - Программирование Android
Господа, вопрос, у меня 2 телефона, первый 1280x720, второй 800x600, мое App было сделано для 800x600, в частности речь о Canvas,...

Масштабирование Canvas - Программирование Android
Здравствуйте. Задача растянуть все изображения во весь экран- SurfaceView (не зависимо от разрешения телефона и соотношения его сторон),...

Потоки. Canvas - Программирование Android
Добрый день. Подскажите, как реализовать обработку изменения цвета с помощью потоков? Не могу разобраться как обратиться package...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
23.08.2015, 23:01     Динамическое добавление объектов на canvas #2
На canvas должна отрисовываться некоторая модель хранящая информацию. соответственно менять нужно модель и отривовывать её заново. В 2-х словах получается слишком абстрактное объяснение. Советую прочитать книгу "Mario Zechner - Beginning Android Games"
_Night_Scream_
75 / 74 / 8
Регистрация: 08.08.2013
Сообщений: 581
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
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
24.08.2015, 12:16     Динамическое добавление объектов на canvas #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Направление нормальное. Только нужно помнить - если у тебя покадровая анимация(необходимо быстро обсчитывать модель и отрисовывать объекты), то лучше в процессе объектов не создавать и не удалять. Выделение памяти и работа GC - дорогие операции. Необходимо создавать пул объектов и переиспользовать их.
Yandex
Объявления
24.08.2015, 12:16     Динамическое добавление объектов на canvas
Ответ Создать тему
Опции темы

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