¿Es el tamaño de Layered Drawable?

Estoy haciendo un icono para mi aplicación .. La aplicación es básicamente un buscador de amigos. Estoy creando una superposición que se parece mucho a los iconos de Google Latitude. Tengo una imagen que cambia debido al usuario y tengo el pensionista. He sido capaz de hacer la capa de dibujo y superposición bien, pero el problema es que la imagen se extiende hasta el tamaño de la frontera. Esto es un problema porque, si nunca has visto los iconos de Google Lat, tiene un punto en la parte inferior con espacio abierto entre ella.

Lo que tengo que hacer es, de alguna manera restringir el tamaño de la imagen cambiante a los límites de la parte cuadrada de la frontera. Cualquier ayuda sería muy apreciada. Aquí está mi fragmento:

BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 25; Bitmap bit = BitmapFactory.decodeFile(photo, options); draw = new BitmapDrawable(bit); Resources r = getResources(); Drawable[] layers = new Drawable[2]; layers[0] = draw; layers[1] = r.getDrawable(R.drawable.border); LayerDrawable layerDrawable = new LayerDrawable(layers); draw = layerDrawable; }else{ draw = this.getResources().getDrawable(R.drawable.androidmarker); } HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(draw, this); GeoPoint point = new GeoPoint(lat,lon); OverlayItem overlayitem = new OverlayItem(point, username, avail + " : " + status + " : Position updated at : " + update_at); items.add(overlayitem); itemizedoverlay.addOverlay(overlayitem); mapOverlays.add(itemizedoverlay); 

Divertido ese shorty después de que fijé esto, encontré la respuesta. Yo estaba buscando en todos los lugares equivocados para cambiar el tamaño de la imagen. He intentado el mapa de bits, el dibujable, las capas dentro de la layerdrawable. Pero, lo que nunca probé fue el layerdrawable en sí. La solución está abajo:

  Resources r = getResources(); Drawable[] layers = new Drawable[2]; layers[0] = draw; layers[1] = r.getDrawable(R.drawable.border); LayerDrawable layerDrawable = new LayerDrawable(layers); layerDrawable.setLayerInset(0, 0, 0, 0, 12); draw = layerDrawable; 

El método de inserción layerDrawable es el siguiente:

 layerDrawable.setLayerInset(*index of layer*, *left inset*, *top*, *right*, *bottom*); 

¡Gracias chicos!

  • Error de procesamiento de OpenGL ES
  • Android - Dibujo de una imagen de los activos, algo raro está sucediendo
  • Botón de pantalla completa de Video dentro de WebView no funciona
  • ¿Por qué puedo escribir en "mnt / sdcard" y no en "mnt / extsd"?
  • Android: el relleno dejó un mapa de bits con color blanco
  • Cómo utilizar Java 8 Stream API bajo Android 6.0
  • Los servicios de juegos de Google Play logran desbloqueo: desbloquear tienda en juego o desbloquear (?) Cada vez.
  • Cambiar el color de la barra de navegación, Android
  • Uso de la biblioteca Java en el proyecto iOS
  • Cómo utilizar ctags para autocompletar en vim
  • Cómo pasar o asignar un valor obtenido en un runOnUiThread
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.