2013-02-25 12 views
11

chcę użyć activity.getWindowManager function(). GetDefaultDisplay(). Getwidth(), ale pojawia się ostrzeżenie, które mówi, ta funkcja jest przestarzałaAndroid: Co powinienem zrobić zamiast używać przestarzałej funkcji (getwidth())?

Co należy zrobić? Czy mimo to powinienem używać tej funkcji? lub jest kilka innych funkcji, które robią to samo?

+0

przestarzałe oznacza, że ​​jest stary i jest nadal obsługiwana, ale został zastąpiony przez nową, lepszą funkcję i prawdopodobnie zostanie zastąpiony w przyszłych wydaniach biblioteki. możesz go użyć, jeśli chcesz, ale najlepiej jest skorzystać z funkcji, którą zastąpiono. –

+7

czy w ogóle przeprowadziłeś jakieś wyszukiwanie przed zadaniem pytania? – njzk2

+1

http://stackoverflow.com/questions/8111774/deprecated-meaning – zch

Odpowiedz

26

Nieaktualne oznacza, że ​​nie powinny być używane, ale nadal tam ze względu na kompilację.

Należy użyć zamiast:

Point size = new Point(); 
activity.getWindowManager().getDefaultDisplay().getSize(size); 
int width = size.x; 
int height = size.y; 
1

Przestarzałe funkcje to funkcja, z której wprowadzono nowe, lepsze alternatywy, aw przyszłości mogą nie być obsługiwane w nowych interfejsach API. Ale nie krępuj się ich używać, ponieważ ich upłynięcie zabiera dużo czasu.

+0

To nie jest dokładnie najlepsza praktyka używać przestarzałych funkcji, więc nie zachęcałbym OP do ich używania. – QkuCeHBH

+0

To tylko według dokumentów. Mam dziesiątki aplikacji działających na wielu nieaktualnych metodach. Z mojego doświadczenia wynika, że ​​to zaniechanie jest tylko ostrzeżeniem o wygaśnięciu, aby twórcy mogli być zachęcani do nowych rozwiązań. Dla odniesienia przyjrzyj się zmianom, które nastąpiły w Androidzie w puli wątków exe. Ty migre zgadzasz się ze mną po tym. –

+0

Daj nam znać, jeśli (kiedy) "gówno pęka": D – Clocker

2

Z odniesieniem Display API:

int getWidth() 
This method was deprecated in API level 13. Use getSize(Point) instead. 

Czyli będziesz instancji Point, przekazać go do getSize() i odzyskać x od niego.

elementem
3

Program adnotacją @Deprecated jest, że programiści są zniechęceni do korzystania, na ogół dlatego, że jest niebezpieczne, albo dlatego lepsza alternatywa istnieje. Kompilatory ostrzegają, gdy nieużywany element programu zostanie użyty lub nadpisany w niezaakceptowanym kodzie.

Zobacz this i this i this i this i this i tak dalej ............

1

Ustaw kursor na nazwie metody i naciśnij F2, aby uzyskać informacje o najnowszym interfejsie API. (Zakładając, że używasz Eclipse)

0

Spróbuj:

WindowManager windowmanager = (WindowManager) this.getContext() 
           .getSystemService(Context.WINDOW_SERVICE); 

z:

Display display = windowmanager.getDefaultDisplay(); 

Point size = new Point(); 
try { 
    display.getRealSize(size); 
} catch (NoSuchMethodError err) { 
    display.getSize(size); 
} 
int width = size.x; 
int height = size.y; 

lub z:

DisplayMetrics displayMetrics = new DisplayMetrics(); 
windowmanager.getDefaultDisplay().getMetrics(displayMetrics); 
int deviceWidth = displayMetrics.widthPixels; 
int deviceHeight = displayMetrics.heightPixels; 
Powiązane problemy