2011-02-25 67 views
8

我正在爲我的應用做一個圖標..該應用基本上是一個朋友發現者。我正在創建一個與谷歌縱橫圖標非常相似的覆蓋圖。我有一個由於用戶而改變的圖像,我有這個邊框。我已經能夠進行分層繪製和覆蓋,但問題是,圖像延伸到邊界的大小。這是一個問題,因爲如果你從來沒有見過Google Lat圖標,它的底部有一個點,它與它之間有空隙。設置Layered Drawable的大小?

我需要做的是,以某種方式將變化的圖像的大小限制在邊界的正方形部分的範圍內。任何幫助將非常感激。這裏是我的代碼片段:

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

回答

19

有趣的是,在我發佈這篇文章後不久,我找到了答案。我正在尋找所有錯誤的地方來調整圖像大小。我嘗試了位圖,drawable,layerdrawable中的圖層。但是,我從未嘗試過的是可抽取本身。解決的辦法是如下:

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

謝謝你們!