Слушатель Android на холсте? - PullRequest
       10

Слушатель Android на холсте?

0 голосов
/ 03 февраля 2012

Я только начал работать с Android, и мне было интересно, как использовать слушателей на холсте.В частности, как часть моего проекта, цель состоит в том, чтобы произошло событие, когда мы перетаскиваем клик из одной точки в другую.Концепция взята из игры под названием brainvita.Не нужно понимать игру, чтобы ответить на мой вопрос.Все, что я хочу знать, - это самый простой способ заставить слушателя перетаскивать клики из одной точки в другую на холсте?

Нужно ли сопоставлять холст с сеткой и иметь несколько слушателей?Какой самый простой способ?

Кроме того, я прилагаю код разработанной игры, только основы, которые помогают отображать сетку!

package com.project.android.brainvita;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;

public class GameView extends View {

Paint paint = new Paint();
Paint paintF = new Paint();
Paint paintG = new Paint();
int width, height;
int MARGIN = 4;
int MARGIN_BIG = 10;
int sx = 2;

public GameView(Context context) {
    super(context);
    paint.setColor(Color.WHITE);
    paintF.setColor(Color.rgb(40, 60, 204));
    paintG.setColor(Color.rgb(240, 30, 20));
}

public void onDraw(Canvas canvas) {
    // Draw external circle
    canvas.drawCircle(width / 2, height / 2, (width - MARGIN) / 2, paintF);

    // Calculate radius of small circles
    int radius = (width - MARGIN_BIG*2) / 14;

    // Draw grid
    for (int j = -3; j <= 3; j++) {
        if (j >= -1 && j <= 1)
            for (int i = -3; i <= 3; i++) {
                canvas.drawCircle(width / 2 + (2 * radius * i), height / 2
                        + (2 * radius * j), radius - sx, paint);
            }
        else
            for (int i = -1; i <= 1; i++) {
                canvas.drawCircle(width / 2 + (2 * radius * i), height / 2
                        + (2 * radius * j), radius - sx, paint);
            }
    }
}

protected void onSizeChanged(int w, int h, int ow, int oh) {
    width = w;
    height = h;
}

}

1 Ответ

1 голос
/ 03 февраля 2012

В разработке для Android для рисования используется холст. Представление используется для взаимодействия с пользователем. Для холста нет прямого механизма получения пользовательского ввода. Это должно быть обработано через представление.

Вы захотите добавить onTouchListener к представлению, в котором размещен ваш холст, и использовать этого слушателя для хранения информации о состоянии касаний от пользователя.

...