Как обнаружить штриховку, нарисованную на холсте? - PullRequest
0 голосов
/ 02 февраля 2019

Я рисую фигуру на холсте и хочу при касании определить, какие фигуры были затронуты. без вычисления по (x, y) , просто автоматически, как в html. Спасибо!:)

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

public class CanvasView extends View implements View.OnTouchListener
{
    private List<ShapeDrawable> shapes;
    private ShapeDrawable currentCircle;
    public CanvasViewenter code here(Context context, @Nullable AttributeSet attrs)
    {
        super(context, attrs);
        setFocusable(true);
        setFocusableInTouchMode(true);
        this.setOnTouchListener(this);
        this.shapes = new ArrayList<>();
    }
    @Override
    protected void onDraw(final Canvas canvas)
    {
        super.onDraw(canvas);
    }
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent)
    {
        //here I want to get all the shapes that have been touched
        List<ShapeDrawable> touchedShapes = null;
        return true;
    }
}

1 Ответ

0 голосов
/ 02 февраля 2019

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

Отслеживание того, где нарисованы фигуры (с координатами, к сожалению), и проверка этого по отношению к событию касания может быть единственным вариантом.

Я говорю «может», потому что я не эксперт в этой области, но я много работал с холстом в прошлом.

Тем не менее, есть либы, чтобыупростить это.В одном картографическом приложении, над которым я работал, я использовал это:

https://github.com/onlylemi/MapView

Эта библиотека имеет встроенную поддержку для определения того, где на карте находятся объекты (фигуры).Тем не менее, эта библиотека использует координаты и события касания внизу (как видно из их класса MarkLayer.java), как и большинство из них, которые вы найдете.

...