2013-11-02 1 views
0

У меня есть проблема, которую я `не удалось решить в последнее время ..Android: Размер экрана Поддержка 8 и 7-дюймовый экран

У меня есть сделать простое приложение для планшета, который я бегу в моем Samsung Galaxy Note 8.0 .. Я установил макет для размещения некоторого текстового вида в каком-либо месте. Я кодирую его в xml, используя dp для поля и sp для размера текста. Макет ширины и высоты устанавливается на wrapcontent. Но когда я запускаю его в своей подруге Samsung Galaxy Tab 2 7.0, макет не соответствует тому, что я вижу на своем устройстве. То же самое происходит, когда я пытаюсь запустить его в эмуляторе 10inch.

У меня есть использование макета-sw600dp для моей папки макета ..

Почему мой макет экрана, как это? Я хоть с помощью макета-sw600dp макет якобы настроить себя .. Или я не прав по поводу этого?

Я прочитал андроид документации по другому уровню поддержки и размеру экрана до сих пор я нашел с помощью макета sw600dp является хорошим решением ..

Я проверил на дюйм устройства с помощью:

Display display = getWindowManager().getDefaultDisplay(); 
      DisplayMetrics outMetrics = new DisplayMetrics(); 
      display.getMetrics(outMetrics); 

      float density = getResources().getDisplayMetrics().density; 
      float dpHeight = outMetrics.heightPixels/density; 
      float dpWidth = outMetrics.widthPixels/density; 

ответ

0

Каждого устройство имеет различное соотношение пикселей, разные dpi, различные размеры экрана и так далее. Перейдите по этой ссылке, прочитайте ее, вы узнаете, как управлять различными макетами устройств.

Android - Supporting Multiple Screen

+0

Я прочитал несколько раз. Я понимаю, что мне нужно предоставить различную компоновку для разных размеров .. но мне действительно нужно предоставить разную компоновку для 7 и 8-дюймового экрана? В моем xml I используйте layout_margin с 100dp (пример). – iwalyfa

+0

@iwalyfa - все имеет значение, проверьте dpi на устройстве, если они разные, тогда вам нужны разные папки макетов, проверьте соотношение пикселей, все имеет значение, когда дело доходит до макетов Android. –

+0

Я отредактировал свой пост .. Я проверил идентификатор устройства. Мне нужен другой макет в моем случае? Когда я думаю об этом, это означает, что мне нужно предоставить много макетов для разных размеров экрана. – iwalyfa

0

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

public static float getScreenInchSizeByDensityDpi(Context context) { 
    DisplayMetrics dm = context.getResources().getDisplayMetrics(); 
    double x = Math.pow((double)dm.widthPixels/(double)dm.densityDpi, 2); 
    double y = Math.pow((double)dm.heightPixels/(double)dm.densityDpi, 2); 
    double screenInches = Math.sqrt(x + y); 

    return (float) screenInches; 
} 

public static float getScreenInchSizeByXYDpi(Context context) { 
    DisplayMetrics dm = context.getResources().getDisplayMetrics(); 
    double x = Math.pow((double)dm.widthPixels/(double)dm.xdpi, 2); 
    double y = Math.pow((double)dm.heightPixels/(double)dm.ydpi, 2); 
    double screenInches = Math.sqrt(x + y); 

    return (float) screenInches; 
}