以编程方式调整矢量可绘制大小的问题

时间:2017-03-03 06:01:33

标签: android vector resize drawable android-vectordrawable

这张专辑解释了我想要做什么,以及我在向量没有调整大小时遇到​​的问题:http://imgur.com/a/HM3K2

这是我尝试扩展矢量的方法,但它似乎不起作用:

 private Bitmap drawCirclePreview(int color, Shape square) {


            //An object from my 'VectorOverlay' class which resolves the resource...
            VectorOverlay circleOverlay = new VectorOverlay(color);

            //...and returns a drawable
            Drawable drawable = circleOverlay.drawCircleOverlay(this);

            Bitmap bitmap;

            //Make bitmap with same dimensions as the square (redundant, I know)
            bitmap = Bitmap.createBitmap(square.getWidth(), square.getHeight(), Bitmap.Config.ARGB_8888);

            Canvas canvas = new Canvas(bitmap);
            drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
            drawable.draw(canvas);

            return bitmap;
}

正在使用的VectorOverlay方法内:

    public Drawable drawCircleOverlay(Context context){

    Drawable drawable = ContextCompat.getDrawable(context, R.drawable.circle_overlay);

    drawable = DrawableCompat.wrap(drawable);
    DrawableCompat.setTint(drawable, color);
    return drawable;

然后我为新的LayerDrawable创建图层:

    private void drawSquarePreview(){
            Drawable[] layers = new Drawable[2];

            //[...] omitting code for when the square object is created and drawn
            layers[0] = new BitmapDrawable(squareBmp);
            layers[1] = new BitmapDrawable(drawCirclePreview(Color.parseColor("#4af9d8"), square));

            LayerDrawable layerDrawable = new LayerDrawable(layers);

            ivPreview.setImageDrawable(layerDrawable);
    }

然而,结果仍然如图片所示。我很难过。我很久以来一直在寻找答案,但我仍无法找到解决方案。任何帮助将不胜感激。

附加信息:我使用支持库来处理旧API上的矢量绘图。

1 个答案:

答案 0 :(得分:-1)

没有必要使用矢量。向量更慢,更混乱。您只需在XML中创建一个圆形(Drawable)即可。 像这样;

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"> 
    <solid android:color="#FF000000"/> 
    <size android:width="40dp"
         android:height="40dp"/> 
</shape>

请记住,size变量是相对大小,但形状可以缩放到任何大小。我将颜色设置为黑色,这样就可以将颜色设置为任何颜色。