2012-04-22 3 views
5

У нас есть приложение для прошивки, которая делает огромное количество текста: http://itunes.apple.com/br/app/biblia-sagrada/id370178518?mt=8Android, чтобы CoreText

Мы используем CoreText для визуализации текста и дать пользователю возможность изменять форматирование, размер шрифта и начертание шрифта.

Мы пытаемся перенести его на Android, но я не уверен, есть ли замена CoreText на Android.

ответ

5

Эквивалент CoreText IOS»в Android является drawText API, часть класса Canvas, Canvas.drawText(), Canvas.drawPosText() и т.д. см javadoc для холста более подробно. Эти графические API используют Skia внизу.

Функциональность, предоставляемая этими графическими API-интерфейсами, не такая же, как в iOS, скажем, что нет эквивалента CTFramesetter, который поможет вам разрисовать текст и разрывать разрывы строк для вас. С API drawText вы можете рисовать только одну строку за раз, вам придется самостоятельно обрабатывать разрывы строк. Это похоже на использование CTTypesetter в iOS. Для оформления текста см. Paint.breakText и Paint.measureText.

Для изменения размера шрифта & font face, вы можете установить связанные атрибуты в объекте Paint, который передается как последний параметр в API drawText.

Отрывок:

Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
paint.setTextSize(14); 
String text = "Hello world!"; 
canvas.drawText(text, 0, 100, paint); 

Примечание: Система координат, используемая в API для Android drawText от left-top угла.

1

TextView может обрабатывать «способность изменять форматирование, шрифт и шрифт», используя растянутые строки. См. Пакет android.text.style для различных эффектов, которые вы можете применить.

С точки зрения «огромного количества текста» оберните TextView в ScrollView.

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

+1

В iOS CoreText сообщает точное количество текста, которое будет отображаться на определенном кадре. Эта функция очень важна, так как приложение может размещать несколько кадров, размещенных на ScrollView, с разбивкой по страницам. Может ли TextView сделать то же самое на Android? – javsmo

+0

@javsmo: Не то, чтобы я знал. Единственный текстовый текст, который я видел на Android, - это электронные книги, в которых будут использоваться HTML и WebView. – CommonsWare

+1

@CommonsWare, не совсем, большинство читателей книг используют холст и API-интерфейсы drawText, я когда-то реализовал программу чтения электронных книг, все было бы намного более управляемым с помощью API-интерфейсов drawText. – neevek

Смежные вопросы