Используя ViewGroup и View на Android рисовать и создавать кнопки, используя холст - PullRequest
0 голосов
/ 08 марта 2012

Я пытаюсь создать свой собственный вид, в настоящее время все, что он делает, это рисует изображение с определенной координатой x и y, а затем многократно рисует похожие изображения в разных местах.

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

Как я могу это реализовать?

Придется ли мне создавать разные представления для каждого изображения /комбинацию кнопок и затем установить событие onClick?


Позвольте мне попытаться быть немного более ясным, я пытаюсь сделать карту, используя шестиугольник (различные типы ландшафта для разных игроков).как заставить их рисовать ( см. здесь - у них будет граница, показывающая, какой местности кому принадлежит)

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

Я думал о создании ViewGroup.называется Terrain, чтобы содержать узлы (шестиугольники), которые принадлежат игроку и имеют группу видов узлов, которые рисуют шестиугольник только там, где он должен быть расположен.

вопрос в том, могу ли я превратить каждый узел или всю viewGroup в кнопку (или сделать onTouch), если нажата определенная шестигранная ячейка?

Ответы [ 2 ]

1 голос
/ 08 марта 2012

Если я правильно понял, вы должны сделать:

  • Один шаблон my_pictures.xml, представляющий собой простую кнопку.
  • Затем вы создаете пользовательский адаптер, который в качестве функции для каждого типа изображения вы хотите создать. Под этим я подразумеваю, что вам придется изменять фоновое значение вашей кнопки в зависимости от того, что вам нужно. Тогда вы делаете notifyDataSetChanged(); обновить контейнер новой кнопкой.
  • Для Слушателя, вы просто должны добавить его либо в свою деятельность, либо в свой адаптер, когда создаете свои изображения кнопки, я не знаю, что лучше.
0 голосов
/ 11 марта 2012

Спасибо за вашу помощь!

Я понял, что мне нужно делать. У меня есть класс NodeView, и в моем классе GameActivity я использую относительную компоновку и задаю параметры компоновки в том месте, где я хотел расположить вещи

    RelativeLayout rl = new RelativeLayout(this);

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(95,95);
    params.leftMargin = 10;
    params.topMargin = 10;


    params = new RelativeLayout.LayoutParams(95,95);
    params.leftMargin = 10+95*x;
    params.topMargin = 81+(71*y);
    rl.addView(new NodeView (this,0,0,1,1), params);

Это помогло мне добавить вещи там, где они мне нужны, и теперь все, что я пытаюсь выяснить, как прокручивать территории по осям x и y (я пробовал ScrollView, но это позволяет только прокручивать по y- ось, я смотрю в это, хотя)

...