5

我正在尝试使用矢量可绘制对象绘制到画布中。在我将画布对象旋转 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

4

1 回答 1

1

这已在 android 框架中修复。 https://code.google.com/p/android/issues/detail?id=192413

对于这种旋转情况,一种可能的解决方法是将 VectorDrawable 绘制到位图中,然后旋转位图。

于 2016-03-25T22:17:29.630 回答