2013-08-13 2 views
1

Я пытаюсь получить размер экрана на моем эмуляторе (API 7) с этим кодом:Получение размера экрана возврата 0

float scaledDensity = this.getResources().getDisplayMetrics().scaledDensity; 

Теперь я пытаюсь использовать scaledDensity

с этим кодом:

int width = (width/((int) scaledDensity))/7; 

и я получаю это исключение

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tomer.workoutlog2/com.example.workoutlog.SimpleCalendarViewActivity}: java.lang.ArithmeticException: divide by zero 

Полный код:

Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)) 
       .getDefaultDisplay(); 
     int width = 0; 

     if (android.os.Build.VERSION.SDK_INT >= 13) { 
      Point size = new Point(); 
      display.getSize(size); 
      width = size.x; 

     } else 
      width = display.getWidth(); 

     float scaledDensity = this.getResources().getDisplayMetrics().scaledDensity; 

     width = (width/((int) scaledDensity))/7; 

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

ответ

0

для API 7, вы можете использовать следующий код, он не рекомендуется из API 13

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth(); 
int height = display.getHeight(); 
0

scaledDensity() возвращает число с плавающей точкой. Уверен, что вы случайно не выполняете целочисленное деление с поплавком менее 1.0f?

0

Попробуйте этот код:

DisplayMetrics displaymetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
int height = displaymetrics.heightPixels; 
int width = displaymetrics.widthPixels; 
float scaleFactor = displaymetrics.density; 
+0

мне это нужно масштабировать. – dasdasd

+0

Вы можете иметь scaleFactor по этому коду: 'float scaleFactor = displaymetrics.density;' –

0

Попробуйте это ...

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