2017-03-03 73 views
0

这张专辑解释了我想做的事,和我遇到的问题时,载体不调整: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

没有必要为此使用矢量。矢量更慢,更混乱。你可以简单地用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> 

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

+0

谢谢。我猜我可以添加条纹在另一个文件或低于相同的形状,并将它们添加到我的LayerDrawable中的另一个层? – Joel