ベクター ドローアブルを使用してキャンバスに描画しようとしています。キャンバス オブジェクトを 90 度または 270 度回転させるまでは、すべてうまくいきます。90 度または 270 度に近づくほど、キャンバスに表示されるドローアブルがぼやけて表示されます。最終的に 90 度または 270 度になると、キャンバス上の描画可能なベクターは完全に消えます。これに対する何らかの修正または回避策はありますか? または、他のライブラリを使用してsvgを使用してキャンバスに描画する必要がありますか? ありがとう!
コードは次のとおりです。
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();
}
}
プロジェクトは次のとおりです: https://github.com/danskiess/VectorTest