2016-12-20 3 views
0

есть способ определить ширину устройства, чтобы мы могли добавлять представления программно на основе ширины экрана устройства. Например, одинарная или двойная панель.Андроид обнаруживает устройство шириной

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

layout-small/ 
layout-large/ 
layout-sw600dp/ 

Предпочтительный способ для нас: layout.xml определяет корневой пустой контейнер только, и добавить вид на программно на основе размера устройства, которое обнаруживается во время выполнения.

Спасибо.

+0

Вы собираетесь установить себя на мир боли, что путь. Коэффициенты - ваш «недостаточно гибкий» - действительно, вы делаете что-то неправильно. Причина в том, что этот подход почти всегда стоит на Android. Ваш пример - классический пример того, что Android действительно действительно хорош. –

ответ

1

U может использовать этот код, чтобы получить дисплей Ширина автономной работы устройства в & Высота

DisplayMetrics displaymetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
int height = displaymetrics.heightPixels; 
int width = displaymetrics.widthPixels; 

U можно установить как

view.setLayoutParams(new LayoutParams(width, height)); 
+0

U может установить ширину, используя этот параметр – Athul

0

Этот код будет поддерживать все версии андроида Разрешение устройства (ширина, высота) точно во время выполнения

private void calculateDeviceResolution(Activity context) { 
     Display display = context.getWindowManager().getDefaultDisplay(); 

     if (Build.VERSION.SDK_INT >= 17) { 
      //new pleasant way to get real metrics 
      DisplayMetrics realMetrics = new DisplayMetrics(); 
      display.getRealMetrics(realMetrics); 
      realWidth = realMetrics.widthPixels; 
      realHeight = realMetrics.heightPixels; 

     } else if (Build.VERSION.SDK_INT >= 14) { 
      //reflection for this weird in-between time 
      try { 
       Method mGetRawH = Display.class.getMethod("getRawHeight"); 
       Method mGetRawW = Display.class.getMethod("getRawWidth"); 
       realWidth = (Integer) mGetRawW.invoke(display); 
       realHeight = (Integer) mGetRawH.invoke(display); 
      } catch (Exception e) { 
       //this may not be 100% accurate, but it's all we've got 
       realWidth = display.getWidth(); 
       realHeight = display.getHeight(); 
       Constants.errorLog("Display Info", "Couldn't use reflection to get the real display metrics."); 
      } 

     } else { 
      //This should be close, as lower API devices should not have window navigation bars 
      realWidth = display.getWidth(); 
      realHeight = display.getHeight(); 
     } 
    } 

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

view.setLayoutParams(new LayoutParams(realWidth , realHeight)); 
0

В деятельности,

DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 
int height = dm.heightPixels; 
int width = dm.widthPixels; 

В фрагменте

DisplayMetrics dm = new DisplayMetrics(); 
((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(dm); 
int height = dm.heightPixels; 
int width = dm.widthPixels; 
Смежные вопросы