设置Layered Drawable的大小?

时间:2011-02-25 15:56:12

标签: java android image drawable

我为我的应用程序制作了一个图标..该应用程序基本上是一个朋友查找器。我创建的叠加层看起来很像谷歌纵横的图标。我有一个由于用户而改变的图像,而且我有一个寄宿生。我已经能够分层绘制和叠加精细,但问题是,图像延伸到边框的大小。这是一个问题,因为如果你从未见过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 个答案:

答案 0 :(得分:20)

在我发布这个之后有趣的那么短,我找到了答案。我正在寻找所有错误的地方来调整图像大小。我尝试了位图,可绘制,图层内部的图层。但是,我从未尝试过的是图层抽象本身。解决方案如下:

  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 inset方法如下:

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

谢谢你们!