Новые форумы для: пользователей, администраторов, математиков и филологов.
0
1

Нужно создать милион окружностей в приложении как такое можно сделать? Пусть не милион для начала пусть сто. Делаю на android а значит пишу на java. Что посоветуете? Я так понимаю нужно нарисовать окружность и засунуть её в цикл, но как мне кажется это не будет работать.

задан 22 Фев 13:07

dajver's gravatar image

dajver
34318
94% принятых

изменен 22 Фев 13:18

Shrek's gravatar image

Shrek
3.5k12

ОМГ... что?) Окружность, в смысле просто круг? Нарисуй один черный квадрат и скажи что там 1кк кругов =) Все равно никто разницы на телефоне не заметит.

(22 Фев 13:21) Gorets

Нет, они двигаться должны всетак что заметят раницу

(22 Фев 13:23) dajver
1

Тогда пользуйся канвасом или опенГЛ, создавай объект - КРУГ, создавай их хоть миллион и храни в какой-то коллекции, ну и потом рисуй

(22 Фев 13:39) Gorets

Вопрос стоит как это сделать это кодом. Логически я это и так понимаю.

(22 Фев 13:41) dajver

Это не вопрос, это какое-то задание =) почитай сам про все это, попробуй, покажи что не получилось

(22 Фев 14:12) Gorets

Дело в том, что мой мозг отказывается понимать, как это делается. Но ладно, буду пытаться. Если получится, отпишусь как...

(22 Фев 14:13) dajver
показано 5 из 6 показать еще 1
1

Окружность на плоскости с точки зрения данных это всего лишь 3 цыферки: радиус, x-координата и y-координата (ну плюс может там еще цвет, толщина линии и проч.) Создайте классик:

public class MyCircle
{
   private int radius;
   private int x;
   private int y;

   public MyCircle(int radius)
   {
      this.radius=radius;
      x=y=0;
   }

   //ну там дальше геттеры/сеттеры и проч. муть
}

//создаем массив кругов заданного радиуса
public MyCircle[] createZillionCircles(int num, int radius)
{
    MyCircle[] circles=new MyCircle[num];
    for(int i=0; i < num; i++)
      circles[i]=new MyCircle(radius);
    return circles;
}
ссылка

отвечен 24 Фев 10:04

Barmaley's gravatar image

Barmaley
6.1k111

изменен 24 Фев 10:04

1

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

Если телефон потянет прорисовку большого количества объектов, то делается это стандартно:

  1. создаем битовую карту,
  2. рисуем на ней окружности,
  3. отображаем ее на холсте,
  4. через некоторое время повторяем.
ссылка

отвечен 22 Фев 15:30

%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82's gravatar image

Привет
7376

Вот емаое, я знаю как делается это все, я не знаю как это сделать в коде. Мне нужно как-то создать список элементов и выводить их в цикле, или же мне нужно создать один элемент и размножить его. Вот этот вопрос не ясен, а как оно должно делаться, я понимаю.

(22 Фев 16:50) dajver
1

Определяете класс MyCircle, как вам написал коллега в сообщении, создаете переменную zillionCircles = createZillionCircles(...) затем в методе onDraw пишете следующее

for(MyCircle circle: zillionCircles){
    canvas.drawCircle(circle.x, circle.x, circle.radius, paint);
}
ссылка

отвечен 1 Мар 20:22

rumnakl's gravatar image

rumnakl
1916

спасибо, это я уже знаю :)

(2 Мар 21:05) dajver
Ваш ответ

Если вы не нашли ответ, задайте вопрос.

Здравствуйте

ХэшКод - это совместно редактируемый форум вопросов и ответов для начинающих и опытных программистов.

Присоединяйтесь!

отмечен:

×1,473
×567

задан
22 Фев 13:07

показан
147 раз

обновлен
2 Мар 21:05

Отслеживать вопрос

по почте:

Зарегистрировавшись, вы сможете подписаться на любые обновления

по RSS:

Ответы

Ответы и Комментарии