Доброе утро, ребята, у меня есть приложение, предназначенное для работы как на смартфоне, так и на планшете.
Когда он запускается на планшете, я хочу увеличить текст моего веб-просмотра, чтобы позволить пользователям лучше читать текст и заполнить все пустое пространство, если это возможно.
Этот код, который я использую для этого трюка:
//Webview Zoom
if( UIUtils.isTablet(getActivity())) {
if(UIUtils.isICS()) {
webView.getSettings().setTextZoom(130);
} else {
int currentTextSizeIndex = lyricsView.getSettings().getTextSize().ordinal();
if ( currentTextSizeIndex+1 < lyricsView.getSettings().getTextSize().values().length )
webView.getSettings().setTextSize( lyricsView.getSettings().getTextSize().values()[currentTextSizeIndex+1] );
}
}
Поэтому я проверяю, нахожусь ли я на планшете, и проверяю, какую версию ОС использует пользователь.
Фактически из API Level 14 я могу использовать setTextZoom , который позволяет мне устанавливать масштаб текста в процентах (по умолчанию 100). Это решение намного более масштабируемо, потому что я могу, например, дать пользователю возможность увеличивать или уменьшать текст по своему усмотрению с +10 или -10 процентами шага.
До API уровня 14 я должен использовать setTextSize , в котором в качестве параметра используется enum (по умолчанию NORMAL).
TextSize - это Enum для указания размера текста. МАЛЕНЬКИЙ это 50% МАЛЕНЬКИЙ это 75% НОРМАЛЬНЫЙ это 100% БОЛЬШОЙ это 150% БОЛЬШОЙ это 200%
Так что я могу использовать только эти 5 абонентов, и это не так масштабируемо (но это единственный способ предоставить эту функцию 90% телефонов, которые не имеют ICS: D).
Проблема в том, что webView.getSettings().setTextSize(TextSize.LARGER);
действует по-разному, когда я показываю текстовое представление на разных планшетах, и это действительно не нормально.
В данный момент я тестирую на Samsung Galaxy Tab и Kindle Fire.
Вот технические характеристики GSMArena:
Samsung P1000 Galaxy Tab
Дисплей
Тип TFT емкостный сенсорный экран, 16M цветов
Размер 600 x 1024 пикселей, 7,0 дюймов (плотность пикселей ~ 170 ppi)
Amazon Kindle Fire
Дисплей
Тип IPS TFT емкостный сенсорный экран, 16M цветов
Размер 1024 x 600 пикселей, 7,0 дюймов (плотность пикселей ~ 170 ppi)
Как вы можете видеть, они имеют одинаковое разрешение, дюймы и ppi!
Теперь я покажу вам 2 снимка экрана (одного и того же контента веб-просмотра) с этих устройств, чтобы вы понимали, о чем я говорю.
KindleFire:
Galaxy Tab:
На вкладке Galaxy с textSize LARGE текст слишком велик, и его сложно увидеть. Так что для такого типа устройств лучше по умолчанию показывать НОРМАЛЬНЫЙ текст (и позволить пользователю выбирать, если его больше). Но как узнать, какой текстовый размер по умолчанию лучше всего отображать? Потому что NORMAL подходит для Galaxy Tab и слишком мал для Kindle Fire, а LARGE слишком велик для Galaxy Tab, но идеально подходит для Kindle. Я делаю тест только на этих двух устройствах, но я должен поддерживать все планшеты. Я должен найти какие-то параметры, различия в устройствах, чтобы сказать: хорошо, на этом устройстве, потому что разрешение маленькое, я поставлю больше / Нормальный, вместо этого, потому что это больший результат, я могу поставить его больше (вроде).
Вы когда-нибудь сталкивались с этой проблемой? Как я могу решить это?