2014-04-24 2 views
3

Я пытаюсь настроить максимально возможное количество архитектур, а также как можно меньше предупреждений.Для Android Call требуется уровень API 13 (текущий минимум 10): android.view.Display # getSize

Point dims = new Point(); 
if (android.os.Build.VERSION.SDK_INT >= 13) { 
     mWindowManager.getDefaultDisplay().getSize(dims); 
} else if (android.os.Build.VERSION.SDK_INT < 13) { 
    dims.x = mWindowManager.getDefaultDisplay().getWidth(); 
    dims.y = mWindowManager.getDefaultDisplay().getHeight(); 
} 

Но это дает мне ошибку и предупреждение:

Call requires API level 13 (current min is 10): android.view.Display#getSize 
The method getWidth() from the type Display is deprecated 

They say to change the manifesto (или here), но почему это не работает выше для компилятора? Разве я не могу избавиться от обоих с диапазоном от 10 до 18?

+0

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

+0

Игнорирование подобных предупреждений приведет к сбою в работе устройств с более низким 'API', чем запрошено, и, вероятно, ваше приложение будет генерировать« Исключение ». Обычно есть обходные пути, чтобы не увеличивать «minSdk», но я не знаю, как этого можно избежать. – nKn

+1

ИЛИ то, что вы можете попробовать, это 'DisplayMetrics display = new DisplayMetrics();' then do 'getActivity(). GetWindowManager(). GetDefaultDisplay(). GetMetrics (display);' Это позволит вам получить ширину и height через 'int width = display.widthPixels;' или 'heightPixels' для высоты – user1084319

ответ

7

У вас уже есть проверка версии SDK на месте, поэтому предупреждение об отказе от компилятора и предупреждение о появлении нового API можно игнорировать.

Вытащите фрагмент кода в отдельный метод и добавьте следующие аннотации к нему:

@TargetApi(13) 
@SuppressWarnings("deprecation") 

Обратите внимание, что if части вашего else if является излишней. Обычного else достаточно.

+0

Вот и все. Я помещаю два в одно и то же время и предупреждаю, и ошибка удалена. –

0

Чтобы получить размер дисплея, рекомендуемый способ заключается в использовании

context.getResources().getDisplayMetrics() 

вместо этого. Затем используйте свойства widthPixels и heightPixels.

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

Смежные вопросы