设置Layered Drawable的大小?

我正在为我的应用程序做一个图标..该应用程序基本上是一个朋友发现者。 我正在创build一个与Google Latitude中的图标非常相似的叠加层。 我有一个由于用户而改变的图像,我有边界。 我已经能够做到分层绘制和覆盖,但问题是,图像延伸到边界的大小。 这是一个问题,因为如果你从来没有见过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); 

  • 移动应用程序的图像大小最佳实践
  • Android ImageButton禁用UI的感觉
  • 获取与facebook同步的Android的联系人照片
  • Android - 当activity.setContentView完成渲染时是否触发了任何事件?
  • android如何处理预览大小/比率和实际SufaceView大小之间的差异?
  • 在Android中获取图像ThumbNail
  • 在android中拖放图像
  • 清除毕加索图像caching
  • 有趣的是,我张贴这个不久后,我find了答案。 我正在寻找所有错误的地方来调整图像大小。 我尝试了位图,drawable,layerdrawable中的图层。 但是,我从来没有尝试过的是可抽取本身。 解决scheme如下:

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

    多谢你们!