Obtener ancho y alto de pantalla

Cómo puedo obtener el ancho y alto de la pantalla para usar este valor en

@Override protected void onMeasure(int widthSpecId, int heightSpecId) { Log.e(TAG, "onMeasure" + widthSpecId); setMeasuredDimension(SCREEN_WIDTH, SCREEN_HEIGHT - game.findViewById(R.id.flag).getHeight()); } 

Usando este código puedes obtener Display's Width & Height tiempo de ejecución

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

En una vista, necesitas hacer algo como esto:

 ((Activity) getContext()).getWindowManager() .getDefaultDisplay() .getMetrics(displayMetrics); 

Hay una respuesta muy simple y sin contexto de pase

 public static int getScreenWidth() { return Resources.getSystem().getDisplayMetrics().widthPixels; } public static int getScreenHeight() { return Resources.getSystem().getDisplayMetrics().heightPixels; } 

Nota: si desea que la altura incluya la barra de navegación, use el método a continuación

 WindowManager windowManager = (WindowManager) BaseApplication.getApplication().getSystemService(Context.WINDOW_SERVICE); final Display display = windowManager.getDefaultDisplay(); Point outPoint = new Point(); if (Build.VERSION.SDK_INT >= 19) { // include navigation bar display.getRealSize(outPoint); } else { // exclude navigation bar display.getSize(outPoint); } if (outPoint.y > outPoint.x) { mRealSizeHeight = outPoint.y; mRealSizeWidth = outPoint.x; } else { mRealSizeHeight = outPoint.x; mRealSizeWidth = outPoint.y; } 

Solo para actualizar la respuesta por parag y SpK para alinear con la compatibilidad con versiones anteriores del SDK de los métodos obsoletos:

 int Measuredwidth = 0; int Measuredheight = 0; Point size = new Point(); WindowManager w = getWindowManager(); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { w.getDefaultDisplay().getSize(size); Measuredwidth = size.x; Measuredheight = size.y; }else{ Display d = w.getDefaultDisplay(); Measuredwidth = d.getWidth(); Measuredheight = d.getHeight(); } 

Por qué no

DisplayMetrics displaymetrics = getResources (). GetDisplayMetrics ();

luego usa

displayMetrics.widthPixels (heightPixels)

Pruebe el siguiente código: –

1.

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

2.

 Display display = getWindowManager().getDefaultDisplay(); int width = display.getWidth(); // deprecated int height = display.getHeight(); // deprecated 

o

 int width = getWindowManager().getDefaultDisplay().getWidth(); int height = getWindowManager().getDefaultDisplay().getHeight(); 

3.

 DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); metrics.heightPixels; metrics.widthPixels; 
 DisplayMetrics dimension = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dimension); int width = dimension.widthPixels; int height = dimension.heightPixels; 
 public class DisplayInfo { int screen_height=0, screen_width=0; WindowManager wm; DisplayMetrics displaymetrics; DisplayInfo(Context context) { getdisplayheightWidth(context); } void getdisplayheightWidth(Context context) { wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); displaymetrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(displaymetrics); screen_height = displaymetrics.heightPixels; screen_width = displaymetrics.widthPixels; } public int getScreen_height() { return screen_height; } public int getScreen_width() { return screen_width; } } 

Obtenga el valor de ancho y alto de la pantalla.

 Display display = getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); width = size.x; height = size.y; 

Los métodos que se muestran aquí están en desuso / obsoletos, pero esto todavía funciona. Require API 13

Echale un vistazo

 Display disp= getWindowManager().getDefaultDisplay(); Point dimensions = new Point(); disp.getSize(size); int width = size.x; int height = size.y; 
 DisplayMetrics lDisplayMetrics = getResources().getDisplayMetrics(); int widthPixels = lDisplayMetrics.widthPixels; int heightPixels = lDisplayMetrics.heightPixels; 
 Display display = ((WindowManager) this.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); int mWidthScreen = display.getWidth(); int mHeightScreen = display.getHeight(); 

Manera completa de hacerlo, que devuelve la resolución verdadera:

  WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Point size = new Point(); wm.getDefaultDisplay().getRealSize(size); final int width = size.x, height = size.y; 

Y como esto puede cambiar con una orientación diferente, aquí hay una solución (en Kotlin), para hacerlo bien sin importar la orientación:

 /** * returns the natural orientation of the device: Configuration.ORIENTATION_LANDSCAPE or Configuration.ORIENTATION_PORTRAIT .
* The result should be consistent no matter the orientation of the device */ @JvmStatic fun getScreenNaturalOrientation(context: Context): Int { //based on : http://stackoverflow.com/a/9888357/878126 val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager val config = context.resources.configuration val rotation = windowManager.defaultDisplay.rotation return if ((rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180) && config.orientation == Configuration.ORIENTATION_LANDSCAPE || (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270) && config.orientation == Configuration.ORIENTATION_PORTRAIT) Configuration.ORIENTATION_LANDSCAPE else Configuration.ORIENTATION_PORTRAIT } /** * returns the natural screen size (in pixels). The result should be consistent no matter the orientation of the device */ @JvmStatic fun getScreenNaturalSize(context: Context): Point { val screenNaturalOrientation = getScreenNaturalOrientation(context) val wm = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager val point = Point() wm.defaultDisplay.getRealSize(point) val currentOrientation = context.resources.configuration.orientation if (currentOrientation == screenNaturalOrientation) return point else return Point(point.y, point.x) }

Simplemente use la función a continuación que devuelve el ancho y alto del tamaño de la pantalla como una matriz de enteros

 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 su función onCreate o botón, haga clic en agregar el siguiente código para generar los tamaños de pantalla como se muestra a continuación

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

Encontré la respuesta de weigan como la mejor en esta página, así es como puedes usar eso en Xamarin.Android . Xamarin.Android :

 public int GetScreenWidth() { return Resources.System.DisplayMetrics.WidthPixels; } public int GetScreenHeight() { return Resources.System.DisplayMetrics.HeightPixels; } 

La resolución de pantalla es un total no de píxel en la pantalla. El siguiente progtwig extraerá la resolución de pantalla del dispositivo. Imprimirá el ancho y alto de la pantalla. Esos valores están en pixel.

 public static Point getScreenResolution(Context context) { // get window managers WindowManager manager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE); Display display = manager.getDefaultDisplay(); Point point = new Point(); display.getSize(point); // get width and height int width = point.x; int height = point.y; return point; 

}

Este conjunto de utilidades para trabajar con la abstracción de tamaño en Android.

Contiene una clase SizeFromDisplay.java. Puedes usarlo así:

 ISize size = new SizeFromDisplay(getWindowManager().getDefaultDisplay()); size.width(); size.hight(); 

Dos pasos. Primero, extiende la clase de actividad

 class Example extends Activity 

Segundo: Use este código

  DisplayMetrics displayMetrics = new DisplayMetrics(); WindowManager windowmanager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE); windowmanager.getDefaultDisplay().getMetrics(displayMetrics); int deviceWidth = displayMetrics.widthPixels; int deviceHeight = displayMetrics.heightPixels; 

Prueba este código para Kotlin

  val display = windowManager.defaultDisplay val size = Point() display.getSize(size) var DEVICE_WIDTH = size.x var DEVICE_HEIGHT = size.y 
  @Override protected void onPostExecute(Drawable result) { Log.d("width",""+result.getIntrinsicWidth()); urlDrawable.setBounds(0, 0, 0+result.getIntrinsicWidth(), 600); // change the reference of the current drawable to the result // from the HTTP call urlDrawable.drawable = result; // redraw the image by invalidating the container URLImageParser.this.container.invalidate(); // For ICS URLImageParser.this.container.setHeight((400+URLImageParser.this.container.getHeight() + result.getIntrinsicHeight())); // Pre ICS`enter code here` URLImageParser.this.container.setEllipsize(null); }