这张专辑解释了我想要做什么,以及我在向量没有调整大小时遇到的问题: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上的矢量绘图。
答案 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变量是相对大小,但形状可以缩放到任何大小。我将颜色设置为黑色,这样就可以将颜色设置为任何颜色。