2016-03-13 15 views
5

Tôi đang cố gắng sử dụng drawables vector để vẽ vào vải. Tất cả mọi thứ là tốt và dandy cho đến khi tôi xoay đối tượng vải bằng 90 hoặc 270 độ. Gần hơn tôi nhận được đến 90 hoặc 270 độ, mờ hơn có thể vẽ được hiển thị trong canvas xuất hiện. Cuối cùng ở 90 hoặc 270 độ, vector có thể vẽ trên canvas biến mất hoàn toàn. Có một số loại sửa chữa hoặc giải pháp cho việc này không? Hoặc tôi nên tiếp cận vẽ vào vải với svg với một số thư viện khác? Cảm ơn!VectorDrawableCompat và Canvas xoay, drawable biến mất tại 90/270 độ

Dưới đây là các mã:

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

Đây là dự án: https://github.com/danskiess/VectorTest

Trả lời

1

này đã được cố định trong khung android. https://code.google.com/p/android/issues/detail?id=192413

Một cách giải quyết có thể cho trường hợp xoay vòng này có thể chỉ vẽ VectorDrawable vào Bitmap, sau đó xoay bitmap.

+0

Ah, cố gắng tìm kiếm vấn đề này, nhưng dường như tôi đã bỏ lỡ nó. Cảm ơn vì sự trả lời. Bạn có biết liệu nó có được sửa cho thư viện hỗ trợ không? – Daniel

+0

Có, nó được sửa trong lib hỗ trợ. Nếu có bất kỳ vấn đề nào, vui lòng báo cáo lỗi AOSP chống lại lib hỗ trợ. –