2017-03-03 8 views
0

このアルバムは私が何をしたいのかを説明し、私がいる問題は、ベクターは、サイズを変更していない場合:http://imgur.com/a/HM3K2問題は、プログラム的

これは私がスケーリングしようとする撮影したアプローチでありますベクトル、動作していないよう:使用されているVectorOverlayメソッド内

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

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

関連する問題