【问题标题】:Set size of Layered Drawable?设置分层可绘制的大小?
【发布时间】:2011-07-04 09:52:54
【问题描述】:

我正在为我的应用程序制作图标。该应用程序基本上是一个朋友查找器。我正在创建一个看起来很像谷歌纵横图标的叠加层。我有一个由于用户而改变的图像,并且我有寄宿生。我已经能够很好地进行分层可绘制和叠加,但问题是,图像拉伸到边框的大小。这是一个问题,因为如果您从未见过 Google Lat 图标,它的底部有一个点,其间有一个空地。

我需要做的是,以某种方式将不断变化的图像的大小限制在边框正方形部分的范围内。任何帮助将非常感激。这是我的sn-p:

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

【问题讨论】:

    标签: java android image drawable


    【解决方案1】:

    有趣的是,在我发布此消息后不久,我找到了答案。我正在寻找所有错误的地方来调整图像的大小。我尝试了位图、drawable、layerdrawable 内部的图层。但是,我从未尝试过的是 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 inset方法如下:

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

    谢谢大家!

    【讨论】:

      猜你喜欢
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-06
      • 1970-01-01
      • 2020-05-21
      • 1970-01-01
      相关资源
      最近更新 更多