Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设置分层可拉伸的尺寸?_Java_Android_Image_Drawable - Fatal编程技术网

Java 设置分层可拉伸的尺寸?

Java 设置分层可拉伸的尺寸?,java,android,image,drawable,Java,Android,Image,Drawable,我正在为我的应用程序制作一个图标。。该应用程序基本上是一个朋友查找程序。我正在创建一个很像谷歌纬度图标的覆盖图。我有一个因用户而改变的图像,我有一个寄宿者。我已经能够很好地进行分层绘制和覆盖,但问题是,图像会延伸到边框的大小。这是一个问题,因为如果你从未见过谷歌Lat图标,它的底部有一个点,中间有一个空白 我需要做的是,以某种方式将变化图像的大小限制在边框正方形部分的边界内。任何帮助都将不胜感激。以下是我的片段: BitmapFactory.Options options = new B

我正在为我的应用程序制作一个图标。。该应用程序基本上是一个朋友查找程序。我正在创建一个很像谷歌纬度图标的覆盖图。我有一个因用户而改变的图像,我有一个寄宿者。我已经能够很好地进行分层绘制和覆盖,但问题是,图像会延伸到边框的大小。这是一个问题,因为如果你从未见过谷歌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);

有趣的是,在我发布这篇文章后,我找到了答案。我在所有错误的地方寻找来调整图像的大小。我尝试了位图、可绘制、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*);
谢谢大家