2016-03-13 14 views
5

Sto provando a usare i drawable vettoriali per disegnare su tela. Tutto va bene e dandy fino a quando ruoto l'oggetto di tela di 90 o 270 gradi. Più vicino ottengo 90 o 270 gradi, più sfocato appare il disegnabile mostrato nella tela. Alla fine a 90 o 270 gradi, il vettore disegnabile su tela scompare completamente. C'è una sorta di correzione o soluzione per questo? O dovrei avvicinarmi al disegno su tela con svg con qualche altra libreria? Grazie!VectorDrawableCompat e Canvas ruotano, disegnabili scompaiono a 90/270 gradi

Ecco il codice:

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

Ecco il progetto: https://github.com/danskiess/VectorTest

risposta

1

Questo è stato risolto nel quadro di Android. https://code.google.com/p/android/issues/detail?id=192413

Una soluzione possibile per questo caso rotazione potrebbe essere solo disegnare il VectorDrawable in una bitmap, quindi ruotare il bitmap.

+0

Ah, ho cercato di cercare questo problema, ma a quanto pare l'ho perso. Grazie per la risposta. Sai se sarà corretto anche per la libreria di supporto? – Daniel

+0

Sì, è stato risolto nella lib di supporto. In caso di problemi, non esitate a segnalare un bug AOSP contro il supporto lib. –