Cómo obtener el ancho y la altura de la imagen mostrada en android?

Esta pregunta puede parecer trivial y se ha hecho muchas veces, pero no pude encontrar una respuesta que funcione para mí.

Tengo un ImageView y GLSurfaceView que se dibuja en la parte superior de ImageView cuando GLSurfaceView un botón.

Para mi ImageView paso un Bitmap y lo OutOfMemoryError para evitar una excepción OutOfMemoryError . Mi ImageView está alineado con otros elementos de mi interfaz de usuario, por lo que estira la imagen para rellenar el ancho / altura (esto es lo que quiero).

Cuando cambio de ImageView a GLSurfaceView consigo las regiones negras alrededor de mi imagen que solía ser transparente en mi ImageView , porque GLSurfaceView hace un agujero en interfaz de usuario y funciona de forma diferente a los elementos habituales que dibuja el fondo de mi imagen a negro y no necesito Él, porque tengo fondo de encargo.

Vine abajo con una solución para fijar LayoutParams para GLSurfaceView programmatically y uso el ancho y la altura de Bitmap , pero termino para arriba con una imagen más pequeña. Necesito el ancho exacto y la altura de la imagen que se muestra – no el ImageView ya que tiene regiones transparentes.

PS: No soy un experto en OpenGL y si tienes una solución que funcione para OpenGL, compártela.

un)

  _______________ | | | | |---------------| <- | transparent | |---------------| <- Entire | | ImageView | Image | need | | only this |---------------| <- | transparent | |---------------| <- | | --------------- 

segundo)

  _______________ | | | | |---------------| <- | black | |---------------| | | | Image | GLSurfaceView | | |---------------| | black | |---------------| <- | | --------------- 

My ImageView y GLSurfaceView :

 <android.opengl.GLSurfaceView android:id="@+id/glsvImageHolder" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/horScrollImage" android:layout_marginBottom="5dp" android:layout_marginTop="50dp" android:visibility="invisible" /> <ImageView android:id="@+id/ivImageHolder" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/horScrollImage" android:layout_marginBottom="5dp" android:layout_marginTop="50dp" android:visibility="visible" /> 

 float widthPx = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, pxToMm(ivImageHolder.getWidth(), context), getResources().getDisplayMetrics()); float heightPx = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, pxToMm(ivImageHolder.getHeight(), context), getResources().getDisplayMetrics()); ViewGroup.LayoutParams layoutParams= glsvImageHolder.getLayoutParams(); layoutParams.width= (int) widthPx; layoutParams.height= (int) heightPx; glsvImageHolder.setLayoutParams(layoutParams); 

Pixel a MM

 public static float pxToMm(final float px, final Context context) { final DisplayMetrics dm = context.getResources().getDisplayMetrics(); return px / TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, 1, dm); } 

Hacer GLSurfaceView de ancho y altura: wrap_content.

  • El método setLayoutParams () no funciona
  • Android Salir del modo de pantalla completa
  • Establecer margen en RecyclerView mediante programación
  • Combinación WindowManager.LayoutParams que puede pasar eventos a capas bajo TYPE_SYSTEM_ALERT o smilar
  • Android: establece el margen entre los botones con LayoutParams
  • Creación de una vista redimensionable ListAdapter-recycleable
  • Android: LayoutParams para TextView hace que la vista desaparezca, programáticamente
  • Configuración de los parámetros de diseño en android
  • Android: cambiar LayoutParams de vista agregado por WindowManager
  • Restablecer LayoutParams a lo que se define en XML
  • Los métodos getTop (), getLeft (), getX (), getY (), getWidth (), getHeight () de la vista de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.