6

Duplicar posible:
How to deal with deprecated classes in Android to keep compatibility¿Cómo puedo evitar los métodos en desuso y mantener la compatibilidad con versiones anteriores?

me encontré con la Display.getWidth() método obsoleto y vio que ha sido sustituido por android.view.getSize(). Sin embargo, getSize() solo ha estado disponible desde la API 13 y View parece que no se incluye en la biblioteca de soporte de Android V4.

Por lo tanto, si quiero evitar las llamadas obsoletas, ¿cómo puedo hacer esto sin mantener diferentes proyectos/construcciones para varios niveles de API?

+0

Aquí está su solución http://stackoverflow.com/a/10165103/614807 –

+0

@ChiragRaval que no es una solución a esta pregunta. Esa respuesta solo dice que está "bien" usar métodos obsoletos. –

Respuesta

4

dado un objeto llamado Displaydisplay, esto debería funcionar:

int width=-1; 

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB_MR2) { 
    Point size=new Point(); 
    size=display.getSize(size); 
    width=size.x; 
} 
else { 
    width=display.getWidth(); 
} 

OIA, utilice Build.VERSION.SDK_INT en rama entre el "antes" y "después" para casos donde se introduce una nueva API.

Esto requerirá que su objetivo de compilación (Proyecto> Propiedades> Android en Eclipse) se establezca en Nivel API 13+, para que pueda llamar al getSize().

+1

Por cierto, supongo que el ancho es 'x' en un' Punto' - la documentación es decididamente confusa en este, eh, punto. :-) – CommonsWare

2

Hay una clase de desarrolladores de Android oficial Creating Backward-Compatible UIs:

Esta clase muestra cómo utilizar componentes de interfaz de usuario y las API disponibles en versiones más recientes de Android de una manera compatible con versiones anteriores, asegurando que su aplicación todavía funciona en versiones anteriores de la plataforma.

Defienden el uso de interfaces Java para las bibliotecas que no están respaldadas para obtener una solución más orientada a objetos. Luego los amplía a dos clases concretas: una que proporciona un comportamiento alternativo para las plataformas no compatibles y otra que llama a la API real para las plataformas compatibles.

Luego hay una clase de fábrica que ejemplifica la clase correcta comprobando la plataforma actual contra el rango admitido de la plataforma. Al final, sin embargo, se reduce a un condicional como if (Build.VERSION.SDK_INT >= HONEYCOMB_MR2).

Cuestiones relacionadas