Android Consigue las dimensiones de Image en ImageButton

¿Existe alguna manera de obtener las dimensiones de la imagen que se establecen actualmente en ImageButton ? Estoy tratando de lograr esto.

Tengo un ImageButton con una imagen predeterminada de 36 x 36. A continuación, seleccione una imagen de tamaño decir 200 x 200. Quiero llamar algo así como:

 imageButton.setImageBitmap(Bitmap.createScaledBitmap( bitmap, 36, 36, true)); 

Para reducir la imagen a 36 x 36. Razón por la que quiero obtener el tamaño de la imagen original es para atender a hdpi, mdpi y ldpi por lo que puede establecer las dimensiones del mapa de bits a 36 x 36, 24 x 24 y 18 x 18 respectivamente antes ImageButton al ImageButton . ¿Algunas ideas?

Oh hombre, tengo la respuesta después de jugar al azar con el código:

 imageButton.getDrawable().getBounds().height(); imageButton.getDrawable().getBounds().width(); 

Pruebe este código –

 imageButton.getDrawable().getBounds().height(); imageButton.getDrawable().getBounds().width(); 

La respuesta de Maurice no funcionó para mí, ya que con frecuencia obtendría 0 de nuevo, lo que resulta en una Excepción que se arroja siempre que intenta generar el mapa de bits a escala:

IllegalArgumentException: width y height deben ser> 0

He encontrado algunas otras opciones si ayuda a alguien más.

Opción 1

El imageButton es una View que significa que podemos obtener el LayoutParams y aprovechar las propiedades de altura y anchura incorporadas. Encontré esto de esta otra respuesta .

 imageButton.getLayoutParams().width; imageButton.getLayoutParams().height; 

opcion 2

Haga que nuestro imageButton venga de una clase que extienda ImageButton , y después substituya View # onSizeChanged .

Opción 3

Obtenga el rectángulo de dibujo en la vista y utilice los métodos width() y height() para obtener las dimensiones:

 android.graphics.Rect r = new android.graphics.Rect(); imageButton.getDrawingRect(r); int rectW = r.width(); int rectH = r.height(); 

Combinación

Mi código final terminó combinando los tres y seleccionando el máximo. Estoy haciendo esto porque obtendré resultados diferentes, dependiendo de la fase en que se encuentre la aplicación (como cuando la vista no ha sido completamente dibujada).

 int targetW = imageButton.getDrawable().getBounds().width(); int targetH = imageButton.getDrawable().getBounds().height(); Log.d(TAG, "Calculated the Drawable ImageButton's height and width to be: "+targetH+", "+targetW); int layoutW = imageButton.getLayoutParams().width; int layoutH = imageButton.getLayoutParams().height; Log.e(TAG, "Calculated the ImageButton's layout height and width to be: "+targetH+", "+targetW); targetW = Math.max(targetW, layoutW); targetH = Math.max(targetW, layoutH); android.graphics.Rect r = new android.graphics.Rect(); imageButton.getDrawingRect(r); int rectW = r.width(); int rectH = r.height(); Log.d(TAG, "Calculated the ImageButton's getDrawingRect to be: "+rectW+", "+rectH); targetW = Math.max(targetW, rectW); targetH = Math.max(targetH, rectH); Log.d(TAG, "Requesting a scaled Bitmap of height and width: "+targetH+", "+targetW); Bitmap scaledBmp = Bitmap.createScaledBitmap(bitmap, targetW, targetH, true); 
  • ¿Cómo cambiar la transparencia del botón de imagen mediante programación?
  • Android - los estados de la superposición automática táctil / resaltado del estado de la imagen
  • Android resalta un botón de imagen cuando se hace clic
  • Android: cómo configurar la altura / anchura de la imagen src de un ImageButton?
  • Botones redondeados de la imagen del androides de las esquinas
  • ¿Cómo puedo cambiar programáticamente el destino ImageButton src cuando se cumple una condición?
  • Cómo cambiar la imagen del ImageButton cuando se presiona y se libera?
  • Desactivar un ImageButton?
  • Imagebutton cambiar de forma programática?
  • ¿Cómo mostrar el texto en un ImageButton?
  • ImageButton en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.