2016-03-13 16 views
5

キャンバスに描画するためにベクトル描画可能なオブジェクトを使用しようとしています。私はキャンバスオブジェクトを90度または270度回転させるまで、すべてが上品で素敵です。私は90度か270度に近づき、キャンバスに描かれているドロアブルがもっとぼやけて見えます。最後に90度または270度で、キャンバスに描画可能なベクトルが完全に消えます。これにはいくつかの修正や回避策がありますか?または、私はいくつかの他の図書館とsvgのキャンバスに描画にアプローチする必要がありますか?ありがとう!ここでVectorDrawableCompatとCanvasが回転し、drawableが90/270度で消えます。

public class CanvasView extends View { 

private static final String TAG = "CanvasView"; 

private VectorDrawableCompat vectorDrawableCompat; 
private int angle; 

public CanvasView(Context context) { 
    super(context); 
    init(); 
} 

public CanvasView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    init(); 
} 

public CanvasView(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
    init(); 
} 

private void init(){ 
    vectorDrawableCompat = VectorDrawableCompat.create(getResources(), 
      R.drawable.ic_android_black_24dp, null); 
} 

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
    vectorDrawableCompat.setBounds((getWidth()/2) - 50, (getHeight()/2) - 50, (getWidth()/2) + 50, (getHeight()/2) + 50); 
} 

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    canvas.save(); 
    canvas.rotate(angle, getWidth()/2, getHeight()/2); 
    vectorDrawableCompat.draw(canvas); 
    canvas.restore(); 
} 

public void setAngle(int angle){ 
    Log.i(TAG, "setAngle: " + angle); 
    this.angle = angle; 
    invalidate(); 
} 
} 

をプロジェクトだ:

は、ここでは、コードです。これは、Androidのフレームワークで修正されていhttps://github.com/danskiess/VectorTest

答えて

1

https://code.google.com/p/android/issues/detail?id=192413

この回転のケースでは、VectorDrawableをビットマップに描画し、次にビットマップを回転させるだけで回避できます。

+0

ああ、この問題を調べようとしましたが、明らかに私はそれを逃しました。応答していただきありがとうございます。それがサポートライブラリのために修正されるかどうか知っていますか? – Daniel

+0

はい、サポートlibに修正されています。問題点があれば、サポートlibに対してAOSPバグを報告してください。 –

関連する問題