2016-03-13 17 views
5

Tuval üzerine çizim yapmak için vektör çizgilerini kullanmaya çalışıyorum. Tuval nesnesini 90 veya 270 derece döndürene kadar her şey yolunda. 90 veya 270 dereceye yaklaştıkça, tuvalde gösterilen çizilebilir daha bulanık görünüyor. Son olarak, 90 veya 270 derecede, tuval üzerine çizilebilen vektör tamamen kaybolur. Bunun için bir çeşit düzeltme veya geçici çözüm var mı? Ya da başka bir kütüphaneyle svg ile tuvali çizmeye yaklaşmalı mıyım? Teşekkürler! İşteVectorDrawableCompat ve Canvas döndürülebilir, çekilebilir, 90/270 derecede kaybolur

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

projesi:

İşte kod Bu robot çerçevesinde düzeltildi https://github.com/danskiess/VectorTest

cevap

1

. olmak sadece bir bitmap içine VectorDrawable çizebilirsiniz bu rotasyon durum için https://code.google.com/p/android/issues/detail?id=192413

olası bir geçici çözüm, daha sonra bit eşlem döndürün.

+0

Ah, bu soruna bakmaya çalıştı ama görünüşe göre bunu özledim. Cevap için teşekkürler. Destek kütüphanesi için de sabit olup olmayacağını biliyor musunuz? – Daniel

+0

Evet, destek dosyasında sabitlenmiştir. Herhangi bir sorun varsa, destek kütüphanesine karşı bir AOSP hatası bildirmekten çekinmeyin. –