Представить html-контент как динамические «страницы»

Я создаю e-Book reader для Android. Содержимое электронной книги часто делится на html-файлы (epub) с одной или несколькими главами в них.

Я планирую создать читателя электронных книг, который делит содержимое этих файлов на разные «страницы». Проблема заключается в том, чтобы знать, сколько текста «подходит» на одной странице и рассчитывать правильное количество страниц, поскольку это зависит от множества различных факторов, таких как: размер шрифта, размер слова, абзацы, изображения, разрывы страниц , Заголовки и т. Д.

Idealy, я бы хотел, чтобы мой текст был оправдан и доступен для выбора, и поскольку это невозможно с обычным TextView или EditText, я должен использовать прокручиваемый WebView.

Итак, чтобы подвести итог, как я могу «измерить», сколько текста подходит для одной «страницы» в моем WebView? Или есть другой лучший подход к решению этого? Я видел, что класс Paint является поддержкой для измерения текста и breakText.

Благодаря!

Solutions Collecting From Web of "Представить html-контент как динамические «страницы»"

Примечание. Этот ответ не использует веб-просмотр в качестве поверхности дисплея.

Вы можете использовать Canvas для рисования каждой страницы. Холст дает вам высоту и ширину, с помощью которых вы можете рисовать каждую линию на холсте с помощью drawText на основе ширины и высоты.

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

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

Может быть, вы можете сделать это так

  • Текст добавляется и отображается внутри WebView

  • В WebView вы можете использовать Javascript для проверки текущего состояния дерева DOM и извлечения измерений, таких как ширина и высота отдельных элементов

  • Javascript сообщает о размере страницы назад к создателю WebView через некоторый обратный вызов

  • Когда Javascript обнаруживает, что порог размера страницы превышен, он посылает сигнал для разрыва страницы

Android HTML5 Kindle делает разрывы страниц с помощью Javascript, поэтому это определенно возможно.

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