Задать вопрос
@bonjorecs

Выделение фрагментов/блока текста пальцем и подсчет количества выделенных слов?

Доброго времени суток!
В теме разработки относительно недавно. Загорелось желание добавить в приложение функцию, которая позволит пальцем при нажатии на какое либо из предложений выделить его, тем самым этот фрагмент должен выделиться в виде прямоугольника или других форм выделения.(например изменит цвет на другой) На примере можно посмотреть у Яндекс переводчика по картинке (Там наглядно можно увидеть этот функционал выделения либо слова либо предложения либо целого блока для перевода). Мне лишь необходимо понять как это можно реализовать на простом примере с текстом.

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

пример яндекса
https://youtube.com/shorts/ZfoqJvntQ_c?feature=share

Не знаю даже как подступиться к реализации. Как обрабатывать Text по нажатии? считывать информацию именно того , что выделил пользователь?

Готов принять и изучать любую сказанную вами информацию для реализации. Спасибо!

Пример выделения фрагментов по нажатию62a9ca4aef440718795034.png
  • Вопрос задан
  • 95 просмотров
Подписаться 1 Сложный Комментировать
Пригласить эксперта
Ответы на вопрос 1
@DmitrySolomennikov
Для начала нужно научиться определять положение в тексте (т.е. позиция в символах) от экранных координат.
Это позволит позиционировать один клик в тексте. Затем, в процессе манипуляции пользователя необходимо записывать все координаты, до которых пользователь дотянулся. Получится некоторая сетка.
Далее, все координаты этой сетки переводятся в символьные координаты. Получается символьная сетка.
По символьной сетке ищется минимальная/максимальная позиции затронутых символов, тем самым получая искомый диапазон символов.
Можно поступить иначе, реализовав алгоритм поиска выпуклой оболочки для выделенных символов. Это уже должно определяться тем, как искомый диапазон обрабатывается в дальнейшем в программе. Кроме того, в этом случае необходимо еще учитывать символьные координаты границ предложений внутри абзацев, т.е. понимать, где края текста.

Если предполагается, что областей может быть несколько, тогда необходимо дополнительно разработать метрики "отрыва" одной области от другой. Это может быть смещение по вертикали в 2 символа, например, или пауза в 400-500 мс, но это, опять же, определяется моделью использования разрабатываемой системы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы