studio programacion herramientas fundamentos con avanzado aplicaciones android android-layout android-emulator android-activity android-widget

programacion - manual de android en pdf



Cómo obtener el ancho y la altura de la pantalla (14)

Del servicio:

Display display= ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); int width = display.getWidth(); int height = display.getHeight();

Traté de usar el siguiente código para obtener el ancho y el alto de la pantalla en el desarrollo de aplicaciones de Android:

Display display = getWindowManager().getDefaultDisplay(); int screenWidth = display.getWidth(); int screenHeight = display.getHeight();

pero obtuve NullPointerException para mi display , ¿por qué? ¿cómo obtener ancho y alto de pantalla?


Dentro de una actividad, puede llamar:

int width = this.getResources().getDisplayMetrics().widthPixels; int height = this.getResources().getDisplayMetrics().heightPixels;

Cuando está en una Vista, primero necesita obtener el Contexto:

int width = getApplicationContext().getResources().getDisplayMetrics().widthPixels; int height = getApplicationContext().getResources().getDisplayMetrics().heightPixels;

Esto funcionará en todas las versiones de Android, disponible desde la API 1, y nunca desaprobado.


Esto es lo que finalmente funcionó para mí:

DisplayMetrics metrics = this.getResources().getDisplayMetrics(); int width = metrics.widthPixels; int height = metrics.heightPixels;


Manera alternativa usando la función

private int[] getScreenSIze(){ DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int h = displaymetrics.heightPixels; int w = displaymetrics.widthPixels; int[] size={w,h}; return size; }

en el botón, haga clic o en su función de creación agregue el siguiente código

int[] screenSize= getScreenSIze(); int width=screenSize[0]; int height=screenSize[1]; screenSizes.setText("Phone Screen sizes /n/n width = "+width+" /n Height = "+height);

whats-online.info/science-and-tutorials/121/…


Pruebe a través de context.getResources().getDisplayMetrics() si tiene un contexto disponible.


Pruebe con el siguiente código para obtener ancho y alto de pantalla

int widthOfscreen =0; int heightOfScreen = 0; DisplayMetrics dm = new DisplayMetrics(); try { ((Activity) context).getWindowManager().getDefaultDisplay() .getMetrics(dm); } catch (Exception ex) { } widthOfscreen = dm.widthPixels; heightOfScreen = dm.heightPixels;


Si llamas a esto fuera de una Actividad, necesitarás pasar el contexto (u obtenerlo a través de otra llamada). Luego, use eso para obtener sus métricas de visualización:

DisplayMetrics metrics = context.getResources().getDisplayMetrics(); int width = metrics.widthPixels; int height = metrics.heightPixels;

ACTUALIZACIÓN: con el nivel de API 17+, puede usar getRealSize :

Point displaySize = new Point(); activity.getWindowManager().getDefaultDisplay().getRealSize(displaySize);

Si desea el tamaño de ventana disponible , puede usar getDecorView para calcular el área disponible restando el tamaño de la vista de decoración del tamaño de visualización real:

Point displaySize = new Point(); activity.getWindowManager().getDefaultDisplay().getRealSize(displaySize); Rect windowSize = new Rect(); ctivity.getWindow().getDecorView().getWindowVisibleDisplayFrame(windowSize); int width = displaySize.x - Math.abs(windowSize.width()); int height = displaySize.y - Math.abs(windowSize.height()); return new Point(width, height);

getRealMetrics también puede funcionar (requiere el nivel de API 17+), pero aún no lo he probado:

DisplayMetrics metrics = new DisplayMetrics(); activity.GetWindowManager().getDefaultDisplay().getRealMetrics(metrics);


a continuación responda el nivel de api de soporte por debajo y por encima de 10

if (Build.VERSION.SDK_INT >= 11) { Point size = new Point(); try { this.getWindowManager().getDefaultDisplay().getRealSize(size); screenWidth = size.x; screenHeight = size.y; } catch (NoSuchMethodError e) { screenHeight = this.getWindowManager().getDefaultDisplay().getHeight(); screenWidth=this.getWindowManager().getDefaultDisplay().getWidth(); } } else { DisplayMetrics metrics = new DisplayMetrics(); this.getWindowManager().getDefaultDisplay().getMetrics(metrics); screenWidth = metrics.widthPixels; screenHeight = metrics.heightPixels; }


/* *DisplayMetrics: A structure describing general information about a display, such as its size, density, and font scaling. * */ DisplayMetrics metrics = getResources().getDisplayMetrics(); int DeviceTotalWidth = metrics.widthPixels; int DeviceTotalHeight = metrics.heightPixels;


int scrWidth = getWindowManager().getDefaultDisplay().getWidth(); int scrHeight = getWindowManager().getDefaultDisplay().getHeight();


Display display = getActivity().getWindowManager().getDefaultDisplay(); int screenWidth = display.getWidth(); int screenHeight = display.getHeight(); Log.d("Tag", "Getting Width >> " + screenWidth); Log.d("Tag", "Getting Height >> " + screenHeight);

Esto funcionó correctamente en mi aplicación


DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int height = metrics.heightPixels; int width = metrics.widthPixels;

Supongo que el código que escribió está en desuso.


WindowManager w = getWindowManager(); Display d = w.getDefaultDisplay(); DisplayMetrics metrics = new DisplayMetrics(); d.getMetrics(metrics); Log.d("WIDTH: ", String.valueOf(d.getWidth())); Log.d("HEIGHT: ", String.valueOf(d.getHeight()));


if (Build.VERSION.SDK_INT >= 11) { Point size = new Point(); try { this.getWindowManager().getDefaultDisplay().getRealSize(size); screenWidth = size.x; screenHeight = size.y; } catch (NoSuchMethodError e) { screenHeight = this.getWindowManager().getDefaultDisplay().getHeight(); screenWidth=this.getWindowManager().getDefaultDisplay().getWidth(); } } else { DisplayMetrics metrics = new DisplayMetrics(); this.getWindowManager().getDefaultDisplay().getMetrics(metrics); screenWidth = metrics.widthPixels; screenHeight = metrics.heightPixels; }