Установить размер Layered Drawable? - PullRequest
8 голосов
/ 25 февраля 2011

Я делаю значок для своего приложения. Приложение в основном находит друзей.Я создаю наложение, которое очень похоже на значки из Google Локатора.У меня есть изображение, которое меняется из-за пользователя, и у меня есть граница.Я был в состоянии сделать многоуровневое рисование и наложение хорошо, но проблема в том, что изображение растягивается до размера границы.Это проблема, потому что, если вы никогда не видели значков Google Lat, у них есть точка внизу с открытым пространством между ними.

Что мне нужно сделать, так это каким-то образом ограничить размер измененияизображение до границ квадратной части границы.Любая помощь приветствуется.Вот мой фрагмент:

    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);

1 Ответ

20 голосов
/ 25 февраля 2011

Забавно, что вскоре после того, как я опубликовал это, я нашел ответ. Я искал во всех неправильных местах, чтобы изменить размер изображения. Я попробовал растровое изображение, прорисовку, слои внутри слоя. Но то, что я никогда не пробовал, это сам слой. Решение ниже:

  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;

Метод вставки layerDrawable выглядит следующим образом:

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

Спасибо, ребята!

...