Cómo obtener el tamaño total de la pantalla en un dispositivo android programaticamente

Si utilizo el código mostrado aquí para obtener el tamaño total de la pantalla es siempre corta en altura al tamaño total de la pantalla como se muestra en las especificaciones documentadas para el dispositivo. Por ejemplo, traté de obtener el tamaño de la pantalla mediante el código para obtener el tamaño de una tableta en la lista como 1280 X 800 y el resultado del código es: 1216 X 800. ¿dónde está la falta de 64 píxeles va a?

Puedo adivinar que podría ser la barra en la parte inferior de la pantalla que contiene los botones de la parte posterior y de la casa. Pero eso no suena bien como las vistas de contenido se supone que es la raíz de todas las vistas. ¿que esta pasando aqui?

La única explicación posible podría ser esta parte de la interfaz de usuario

¿Es esta la excepción al tamaño total de la pantalla?

Código utilizado para obtener el tamaño de la pantalla

// gets the content view windows width and height size DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int widthContentView = displaymetrics.widthPixels; int heightContentView = displaymetrics.heightPixels; Toast.makeText(MainActivity.this, "width of content view: " + widthContentView Toast.LENGTH_SHORT).show(); Toast.makeText(MainActivity.this, "height of content view: " + heightContentView, Toast.LENGTH_SHORT).show(); 

Si llamas a esto fuera de una actividad, necesitarás pasar el contexto (o hacerlo a través de otra llamada). A continuación, utilícelo para obtener las métricas de visualización:

 DisplayMetrics metrics = context.getResources().getDisplayMetrics(); int width = metrics.widthPixels; int height = metrics.heightPixels; 
 try this code... Display display = context.getWindowManager() .getDefaultDisplay(); int width = display.getWidth(); int height=display.getHeight(); it will give screen's width and height,And according to width and height write if- conditions for each device's screen resolution. 
 int screenSize = getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK; switch(screenSize) { case Configuration.SCREENLAYOUT_SIZE_LARGE: Toast.makeText(this, "Large screen",Toast.LENGTH_LONG).show(); break; case Configuration.SCREENLAYOUT_SIZE_NORMAL: Toast.makeText(this, "Normal screen",Toast.LENGTH_LONG).show(); break; case Configuration.SCREENLAYOUT_SIZE_SMALL: Toast.makeText(this, "Small screen",Toast.LENGTH_LONG).show(); break; default: Toast.makeText(this, "Screen size is neither large, normal or small" , Toast.LENGTH_LONG).show(); } 

No estoy seguro de lo que api que utiliza, pero si utiliza api a partir de 17 se puede utilizar esto:

 display.getRealSize(); 
 int density; private DisplayMetrics metrics; private int widthPixels; private float scaleFactor; private float widthDp; metrics = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics); density= getResources().getDisplayMetrics().densityDpi; widthPixels = metrics.widthPixels; scaleFactor = metrics.density; widthDp = widthPixels / scaleFactor; System.out.println("widthDp== "+widthDp ); if(density==DisplayMetrics.DENSITY_HIGH) System.out.println("Density is high"); if(density==DisplayMetrics.DENSITY_XXHIGH) System.out.println("Density is xxhigh"); if(density==DisplayMetrics.DENSITY_XXXHIGH) System.out.println("Density is xxxhigh"); if(density==DisplayMetrics.DENSITY_TV) System.out.println("Density is Tv"); 
  int Measuredwidth = 0; int Measuredheight = 0; Point size = new Point(); WindowManager w = getWindowManager(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { w.getDefaultDisplay().getSize(size); Measuredwidth = size.x; Measuredheight = size.y; } else { Display d = w.getDefaultDisplay(); Measuredwidth = d.getWidth(); Measuredheight = d.getHeight();; } 

Tienes razón, te está mostrando la resolución de la pantalla de tu aplicación y, por tanto, consigues la diferencia. En lugar de getMetrics (), utiliza getRealMetrics (). Puede utilizar el siguiente código para obtener el tamaño de pantalla real del dispositivo.

  WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); DisplayMetrics metrics = new DisplayMetrics(); display.getRealMetrics(metrics); int width = metrics.widthPixels; int height = metrics.heightPixels; return width + "*" + height; 

Obtenga todas las pantallas para ajustar el ancho y la altura que necesite.

  Display display; display=getWindowManager().getDefaultDisplay(); text1.setWidth(display.getWidth()-380); text1.setHeight(display.getHeight()-720); 
  • Android cómo dividir entre dos textview el ancho completo de pantalla exactamente cincuenta por ciento cincuenta?
  • Cómo agregar acceso directo a la pantalla de inicio en android mediante programación
  • Detectar cuando la pantalla está bloqueada
  • Android y el soporte de múltiples diseños de pantallas
  • Android usando márgenes a través de varios tamaños de pantalla
  • Cómo obtener la anchura de pantalla dpi en ANDROID?
  • Disposición androide flexible para múltiples tamaños / densidades de pantalla
  • ¿Cómo puedo tomar una captura de pantalla de una vista web, capturar la página completa?
  • ¿Cómo puedo configurar el ancho de los botones de radio para cambiar con respecto al tamaño de la pantalla? (androide)
  • Esqueleto de aplicación para admitir múltiples pantallas
  • Mover sprite en Andengine
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.