Выберите и поместите различные фигуры на холст с помощью события OnTouch.

Я новичок в программировании для Android. В моем макете проекта мне нужно создать

  1. Цветовая палитра, которая находится в сетке (я добавил несколько кнопок и установил цвет фона).
  2. Фигуры (треугольник, квадрат и круг, которые также являются кнопками) имеют линейную компоновку.
  3. Рядом с этими двумя находится относительный макет, где пользователи могут рисовать фигуры.

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

Мне удалось создать два события касания в двух разных классах, т. е. одно для выбора фигур, а другое для размещения фигур в макете.

Я понятия не имею, как объединить эти два класса вместе.

Может ли кто-нибудь дать мне представление о том, как мне подойти к этому проекту. Где я должен создавать фигуры (должен ли я создавать отдельные классы для каждой формы/в onDraw())? Если я создаю фигуры в onDraw(), как я могу вызвать onTouch()?

Любая помощь будет здорово. Заранее спасибо.

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


person nirisha chilukuri    schedule 01.04.2015    source источник


Ответы (1)


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

  @Override
        protected void onDraw (Canvas canvas) {
            super.onDraw(canvas);

            canvas.save();
            canvas.drawBitmap(mBitmap, 0, 0, null);
            canvas.translate(xPos, yPos);
            editIcon.draw(canvas);
            canvas.restore();

       //     invalidate();
        }
        @Override
        public boolean onTouchEvent (MotionEvent event) {

            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN : 
                    xPos = event.getX();
                    yPos = event.getY();
                    invalidate(); // add it here
                    break;
            }

            return true;

        }

Проверьте также этот пример,

http://android-er.blogspot.in/2010/05/android-surfaceview.html

person Ganesh AB    schedule 01.04.2015
comment
Здравствуйте, спасибо за ваш ответ. Мы должны реализовать onDraw() в классе View. Как использовать onDraw() в onTouch()? - person nirisha chilukuri; 05.04.2015
comment
@nirishachilkuri, как вы видите в коде, внутри блока onTouch есть метод invalidate(), который вызовет ваш метод onDraw(). Короче говоря, аннулировать означает перерисовать. - person Ganesh AB; 06.04.2015