studio propiedades codigo based app android webview

android - propiedades - Ancho y altura diferentes de DisplayMetrics y $(ventana).width() en WebView



webview android studio 2017 (4)

Puede usar el getResources().getDisplayMetrics() para obtener displayMetrics.

DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); final int screenWidth = metrics.widthPixels; final int screenHeight = metrics.heightPixels;

Dentro de una aplicación de Android, traté de usar de la siguiente manera para obtener el ancho y alto de la pantalla:

DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); final int screenWidth = metrics.widthPixels; final int screenHeight = metrics.heightPixels;

Esto informa 1080 y 1920 respectivamente para mi teléfono, que coincide con las especificaciones.

Sin embargo, dentro de una vista web, cuando utilicé:

var screenWidth = $(window).width();

Esto informa solo 360.

A partir de esto, lo que entiendo es que ambos utilizan pixel como unidad, entonces ¿por qué los valores son diferentes?


Utilizo este método simple (dentro de una clase utils) para convertir px <-> dp.

public static int convertIntToDp(int inputValue, DisplayMetrics displayMetrics){ return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, inputValue, displayMetrics); }

Espero ayudarte


Descubrí que el dpi de su dispositivo pertenece a xxhdpi

Donde 300 dpi se pueden convertir como 1080 píxeles de ancho.

y 640 ppp se pueden convertir como 1920 píxeles.

también puedes incluir;

private int convertDpToPixel(int dp) { Resources r = getResources(); float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, r.getDisplayMetrics()); return (int) px; }


El ancho del aviso es el mismo en ambos casos, pero las unidades son diferentes.

P.ej

Esto está en Pixels metrics.widthPixels;

Éste está en Dps 360 OR $ (ventana) .width ();

Convierte 360Dps a píxeles

En el dispositivo xxhdpi, 360dps = 1080px

Dp a píxeles y viceversa