Использование XMLBeans на Android

Я начал с решения Чейза, но перед тем, как оно заработало на моем устройстве, пришлось адаптировать две вещи (Galaxy Nexus, Android 4.1):

  1. с использованием копии TextPaint для схема измерений В документации TextView.getPaint () говорится, что она должна использоваться только для чтения, поэтому я сделал копию в обоих местах, где мы используем объект рисования для измерения:

    // 1. in resizeText()
    if (mAddEllipsis && targetTextSize == mMinTextSize && textHeight > height) {
      // Draw using a static layout
      // modified: use a copy of TextPaint for measuring
      TextPaint paint = new TextPaint(textPaint);
    
    // 2. in getTextHeight()
    private int getTextHeight(CharSequence source, TextPaint originalPaint, int width, float textSize) {
      // modified: make a copy of the original TextPaint object for measuring
      // (apparently the object gets modified while measuring, see also the
      // docs for TextView.getPaint() (which states to access it read-only)
      TextPaint paint = new TextPaint(originalPaint);
      // Update the text paint object
      paint.setTextSize(textSize);
      ...
    
  2. добавление модуля для установки размера текста

    // modified: setting text size via this.setTextSize (instead of textPaint.setTextSize(targetTextSize))
    setTextSize(TypedValue.COMPLEX_UNIT_PX, targetTextSize);
    setLineSpacing(mSpacingAdd, mSpacingMult);
    

С этими двумя модификациями решение работает идеально для меня, спасибо Чейз! Я не знаю, связано ли это с Android 4.x, что оригинальное решение не работало. Если вы хотите увидеть его в действии или проверить, действительно ли он работает на вашем устройстве, вы можете взглянуть на мое приложение для карточек ToCo Flashcards , где я использую это решение для масштабирования текста карточки. Текст может иметь произвольную длину, и карточки отображаются в разных действиях, иногда меньше, иногда больше, плюс в режиме пейзаж + портрет, и я не нашел ни одного углового случая, когда решение не работало бы должным образом ...

5
задан Nikhil 5 July 2012 в 04:01
поделиться

1 ответ

Если вы хотите создать классы и проанализировать DOM, XMLBeans, вероятно, будет довольно тяжелым для мобильного устройства под управлением Android. Весь код, сгенерированный XMLBeans, выполняет синхронизированные вызовы в базовое хранилище данных, которое я видел несколько раз как горячую точку при профилировании.

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

5
ответ дан 14 December 2019 в 08:58
поделиться
Другие вопросы по тегам:

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