Sto cercando di creare un contenitore stradale e sto di mira API 14+Perché chiamare setScaleX durante il gesto di zoom con pinch causa uno sfarfallio?
Nel mio onScale (sto usando lo ScaleGestureDetector per rilevare pinch-zoom) che sto facendo qualcosa di simile:
public boolean onScale (ScaleGestureDetector detector) {
float scaleFactor = detector.getScaleFactor();
setScaleX(getScaleX() * scaleFactor);
setScaleY(getScaleY() * scaleFactor);
return true;
};
Funziona ma lo zoom non è regolare. In effetti, lampeggia notevolmente.
Ho anche provato con il livello hardware pensando che il ridimensionamento si sarebbe verificato sulla GPU una volta caricata la trama e quindi sarebbe super veloce. Ma non ha fatto alcuna differenza: lo zoom non è liscio e talvolta lampeggia a volte stranamente.
Cosa sto sbagliando?
Non voglio inviare una risposta, perché non posso testare la soluzione, ma è possibile, quindi prendi un lokk qui: http://stackoverflow.com/questions/5790503/can-we-use- scale-gesture-detector-per-pinch-zoom-in-android. Dopo averlo provato, torna qui e comunicaci se è stato risolto il problema. Dai un'occhiata all'ultima risposta. – g00dy
Sono consapevole di questa soluzione ma presenta difetti critici: ridimensiona solo la tela per il disegno: nessuna delle clip e dei punti di contatto vengono trasformati. ed è per questo che ho usato setScale che cambia la matrice di trasformazione al contenitore e regola i rects delle clip e trasforma le coordinate di tocco in modo appropriato (senza che tu debba fare da solo il Matrix Matrix) –
Puoi condividere un po 'di più del codice? Specificamente le routine di disegno reali. Hai provato qualche profilo per vedere dove il disegno è in difficoltà? Guarderei minimizzando (possibilmente a zero) la quantità di allocazioni oggetto in stretti cicli di disegno. So che questi sono punti generali (forse ovvi), ma è difficile dire di più senza ulteriori informazioni. – snowdragon