Nano Hash - криптовалюты, майнинг, программирование

Как пользователь может рисовать или рисовать линии на фигуре на ощупь

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

Я создаю форму руки без файла layout, как показано в коде ниже.

Я не знаю, как пользователь может рисовать или рисовать на этой фигуре на ощупь.

Может ли кто-нибудь помочь мне достичь этого !!?.

Заранее спасибо.

Вот мой код:

 public class YeknafareActivity_layout extends View {

    Paint black_paintbrushstroke;
    Path Hand;


    public YeknafareActivity_layout(Context context) {
        super(context);

    }


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


        black_paintbrushstroke = new Paint();
        black_paintbrushstroke.setColor(Color.BLACK);
        black_paintbrushstroke.setStyle(Paint.Style.STROKE);
        black_paintbrushstroke.setStrokeWidth(4);


        Hand = new Path();
        Hand.moveTo(225, 844);  // A
        Hand.lineTo(191, 675);

        Hand.moveTo(191, 675);  // B
        Hand.lineTo(114, 412);

        Hand.moveTo(114, 412); // C
        Hand.lineTo(147, 409);

        Hand.moveTo(147, 409); // D
        Hand.lineTo(235, 591);

        Hand.moveTo(235, 591); // E
        Hand.lineTo(179, 279);

        Hand.moveTo(179, 279); // F
        Hand.lineTo(222, 279);

        Hand.moveTo(222, 279); // G
        Hand.lineTo(300, 534);

        Hand.moveTo(300, 534); // H
        Hand.lineTo(308, 186);

        Hand.moveTo(308, 186); // I
        Hand.lineTo(341, 187);

        Hand.moveTo(341, 187); // J
        Hand.lineTo(382, 513);

        Hand.moveTo(382, 513); // K
        Hand.lineTo(427, 212);

        Hand.moveTo(427, 212); // L
        Hand.lineTo(460, 216);

        Hand.moveTo(460, 216); // M
        Hand.lineTo(462, 536);

        Hand.moveTo(462, 536); // O
        Hand.lineTo(476, 613);

        Hand.moveTo(476, 613); // P
        Hand.lineTo(507, 662);

        Hand.moveTo(507, 662); // Q
        Hand.lineTo(593, 501);

        Hand.moveTo(593, 501); // R
        Hand.lineTo(628, 492);

        Hand.moveTo(628, 492); // S
        Hand.lineTo(645, 511);

        Hand.moveTo(645, 511); // T
        Hand.lineTo(470, 960);

        Hand.moveTo(470, 960); // U
        Hand.lineTo(386, 989);

        Hand.moveTo(386, 989); // V
        Hand.lineTo(280, 947);

        Hand.lineTo(225, 844);


        canvas.drawPath(Hand, black_paintbrushstroke);
01.08.2017

Ответы:


1

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

Path path = new Path();

@Override
public boolean onTouchEvent(MotionEvent event) {
    if(event.getAction() == MotionEvent.ACTION_MOVE){
        path.lineTo(event.getX(), event.getY());
        invalidate();
    }
}
01.08.2017
  • Спасибо за помощь, но это не сработало! теперь пользователь все еще не может нарисовать линию. 02.08.2017
  • Есть ли кто-нибудь, кто может решить мою проблему? Я очень ценю это. 02.08.2017

  • 2

    Наконец, я сам нахожу ответ. Вот решение:

    после объявления Path & Paint вы можете использовать приведенный ниже код, чтобы рисовать что угодно на экране:

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        float xpos = event.getX();
        float ypos = event.getY();
    
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                path.moveTo(xpos, ypos);
                return true;
            case MotionEvent.ACTION_MOVE:
                path.lineTo(xpos, ypos);
                break;
            case MotionEvent.ACTION_UP:
                break;
            default:
                return false;
        }
        invalidate();
        return true;
    }
    

    Меня устраивает :)

    13.08.2017
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..