forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Android (http://forum.boolean.name/forumdisplay.php?f=150)
-   -   Method deprecated - и что теперь? (http://forum.boolean.name/showthread.php?t=18912)

barsunduk 04.02.2014 19:03

Method deprecated - и что теперь?
 
такая простая вещь как попытка узнать разрешение экрана не из активити привела к странным для меня результатам.
PHP код:

public static void init() {
        
//...
        
WindowManager wm = (WindowManagercontext.getSystemService(
            
Context.WINDOW_SERVICE);
        
Display d wm.getDefaultDisplay();
        
scr_w d.getWidth();
        
scr_h d.getHeight();
    } 

eclipse говорит, что метод getWidth() отныне deprecated. начиная с API13 (3.2) надо использовать getSize.

итого: в версии API7(2.1) нет метода getSize, а в версии API13 (3.2) нет методов getWidth, getHeight. что делать, если я хочу, чтобы программа работала во всех версиях API, начиная с 2.1 и заканчивая 4.4?

Dark Dragon 04.02.2014 19:25

Ответ: Method deprecated - и что теперь?
 
Возможно есть способ распознания версии API (чтобы ты не имел в виду под этим). Тогда можно вынести отдельно процедуру в которой условный оператор выбирает между этими двумя методами.

Жека 04.02.2014 19:41

Ответ: Method deprecated - и что теперь?
 
Для проверки старых ондроедов я использую код:
Код:

boolean old = (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB);
для получения размеров экрана:
Код:

DisplayMetrics dis = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dis);
width = dis.widthPixels;
height = dis.heightPixels;

никаких деприкейтедов, всё чОтко :)

barsunduk 04.02.2014 19:48

Ответ: Method deprecated - и что теперь?
 
Цитата:

Сообщение от Жека (Сообщение 273692)
...никаких деприкейтедов, всё чОтко :)

спасибо! получил ответы на оба, волновавших меня вопроса.
а "узнать разрешение экрана не из активити" - это уже с жиру бешусь.

Romanzes 04.02.2014 19:55

Ответ: Method deprecated - и что теперь?
 
Для таких случаев я обычно создаю класс ApiResolver, в котором хранятся методы, объединяющие старый и новый способ. Вот пример:
Код:

public class ApiResolver {
        private static final int SDK_VERSION = Build.VERSION.SDK_INT;
       
        public static class Drawable {
                @SuppressWarnings("deprecation")
                @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
                public static void setBackground(View view, android.graphics.drawable.Drawable background) {
                        if (SDK_VERSION >= Build.VERSION_CODES.JELLY_BEAN)
                                view.setBackground(background);
                        else
                                view.setBackgroundDrawable(background);
                }
        }
       
        public static class Display {
                @SuppressWarnings("deprecation")
                @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
                public static Point getSize(android.view.Display display) {
                        Point result = new Point();
                        if (SDK_VERSION >= Build.VERSION_CODES.HONEYCOMB_MR2) {
                                display.getSize(result);
                        } else {
                                result.x = display.getWidth();
                                result.y = display.getHeight();
                        }
                        return result;
                }
        }
}



Часовой пояс GMT +4, время: 14:00.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot