2013-02-21 5 views
0

Я пытался понять это, но я действительно не понимаю. Если я хочу создать одно приложение с одним макетом, который должен соответствовать всем устройствам Android (по масштабирование). Как я могу это сделать? .. Например .. Возможно, у меня есть editText, который 300dp, который будет отлично смотреться на моей Samsung Galaxy S2 .. но если я запустил то же приложение в моей связи 10, он будет выглядеть очень маленький, и мне хотелось бы, чтобы editText расширялся как по ширине, так и по высоте, чтобы соответствовать моей нексусе 10 .. есть ли какой-нибудь простой способ достичь этого?как обрабатывать разрешения экрана и размеры экрана, одно приложение

Я заметил, что есть что-то называемое весом .., но если я создал три editTexts, где первый имел вес 10, то 2: n вес 20, а затем 3: rd вес 80, последний один никогда не появлялся ...

В любом случае .. как вы справляетесь с этим материалом по лучшей практике?

+0

Использование конвенции в папке ресурсов, система будет использовать высокое разрешение и т.д., как требуется для изображений, макетов и т.д. – adrian

ответ

0

В целом эта ситуация может быть обработана путем добавления

<supports-screens android:normalScreens="true" 
    android:smallScreens="true" android:largeScreens="true" 
    android:anyDensity="true" android:resizeable="true" /> 

в AndroidManifest.xml

+0

Не могли бы вы объяснить ABIT больше, что это на самом деле делает? .. Будет ли это попытаться масштаба мои взгляды и элементы автоматически? – Inx

+0

Этот тег в файле манифеста показывает только те экраны, которые поддерживает ваше приложение. Это изменит размер вашего приложения на размер экрана. Это отлично подходит для большинства случаев.В вашем случае, если приложение не выглядит хорошо на больших экранах даже после добавления этого тега, вы можете подумать о разных макетах для разных размеров экрана – Sushma

0

Используйте xhdpi ресурсов и попытаться установить все макеты на время выполнения, используя макет PARAMS в соответствии с устройство.

или пусть андроид решить, что лучше для устройства создает следующие папки

  1. макет большого
  2. макет небольшой
  3. макета sw600
  4. макета sw720

и аналогичные папки для организации ваших раскладок лучше

+0

, так что в основном это способ пойти в соответствии с документами Android. Неужели это не значит, что размер .apk по сравнению с только одним макетом-файлом? ... – Inx

+0

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

0

Этот документ будет большим подспорьем

http://developer.android.com/guide/practices/screens_support.html

Если ваш макет хорошо выглядеть как на смартфонах и планшетных ПК, вам необходимо будет иметь отдельные компоновки файлов, один в макете, а другой в макет-XLarge (для 10-дюймовый планшет), для edittext в разных размерах.

Другой подход состоит в том, чтобы сохранить один файл макета, но извлечь все связанные с размером значения для разделения файлов xml. Поместите их в значения и значения - соответственно большие папки.

+0

Попробуем это позже на этой неделе, кажется хорошим подходом ... но если я хочу настроить все устройства Android, то мне нужно для создания одной папки для каждого устройства/размера экрана? .. и когда это точка останова для разных папок значений (когда и как андроид выбирает, какую папку использовать?) – Inx

+0

Обычно я разбиваю все устройства в 4 основных категориях , маленький (телефон менее 3,2 дюйма), большой (маленькая таблетка размером около 7 дюймов) и x-large (большая таблетка 8,9-10 дюймов), нормальная ручка для отдыха. Это хорошо работает для меня до сих пор, только со мной случилось икота последний раз - заметка галактики, которая думает, что это маленький планшет, повезло, что с момента последнего обновления Samsung использовал обычную схему – Ethan

0

Вот как я это делаю,

Создайте функцию, которую можно вызвать, возвращающее устройство ширина в зависимости размер. «32» является произвольным, что дает вам относительный размер шрифта, пропорциональный экрану.

textView.setTextSize(getFontSize(activity)); 


public static int getFontSize (Activity activity) { 

    DisplayMetrics dMetrics = new DisplayMetrics(); 
    activity.getWindowManager().getDefaultDisplay().getMetrics(dMetrics); 

    // lets try to get them back a font size realtive to the pixel width of the screen 
    final float WIDE = activity.getResources().getDisplayMetrics().widthPixels; 
    int valueWide = (int)(WIDE/32.0f/(dMetrics.scaledDensity)); 
    return valueWide; 
} 
Смежные вопросы