Как обрабатывать разрешения экрана и размеры экрана, одно приложение

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

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

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

4 ответа

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

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

в androidmanifest.xml

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

Создайте функцию, которую вы можете вызвать, которая возвращает размер устройства в зависимости от ширины. "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;
}

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

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

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

и подобные папки, чтобы лучше организовать ваши макеты

Этот документ будет очень полезен

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

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

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

Другие вопросы по тегам