2011-02-25 13 views
8

Estoy haciendo un ícono 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 la frontera. He podido hacer el dibujado en capas y la superposición bien, pero el problema es que la imagen se extiende hasta el tamaño del borde. Esto es un problema porque, si nunca ha visto los iconos de Google Lat, tiene un punto en la parte inferior con espacio abierto entre ellos.Establecer el tamaño del Drawable acodado?

Lo que tengo que hacer es, de alguna manera, restringir el tamaño de la imagen cambiante a los límites de la porción cuadrada del borde. 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); 

Respuesta

19

Es curioso que, poco después de publicar esto, encontré la respuesta. Estaba buscando en todos los lugares incorrectos para cambiar el tamaño de la imagen. Intenté el mapa de bits, el drawable, las capas dentro de la layerdrawable. Pero, lo que nunca intenté fue el layerdrawable en sí mismo. La solución es a continuación:

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!

Cuestiones relacionadas