キャンバスに描画するためにベクトル描画可能なオブジェクトを使用しようとしています。私はキャンバスオブジェクトを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
ああ、この問題を調べようとしましたが、明らかに私はそれを逃しました。応答していただきありがとうございます。それがサポートライブラリのために修正されるかどうか知っていますか? – Daniel
はい、サポートlibに修正されています。問題点があれば、サポートlibに対してAOSPバグを報告してください。 –