Sto eseguendo il porting di un'app scritta in un ambiente grafico che consente il disegno al di fuori dei limiti del rettangolo di ritaglio. Un modo per farlo in Android?Posso disegnare al di fuori dei limiti di una tela Android
risposta
È possibile disegnare dove desiderato, ma nulla verrà salvato al di fuori del rettangolo di ritaglio.
Per disegnare all'esterno dei limiti, è necessario espandere il clipRect dell'area di disegno.
Controlla i metodi clipRect in overload sulla classe Canvas.
Nota: è necessario specificare l'operazione Regione perché l'operazione predefinita è INTERSECT. Quindi, qualcosa di simile:
Rect newRect = canvas.getClipBounds();
newRect.inset(-5, -5) //make the rect larger
canvas.clipRect (newRect, Region.Op.REPLACE);
//happily draw outside the bound now
Non funziona affatto. Ho appena ridimensionato la tela con i parametri (-2000, -2000), quindi la traduco ma l'immagine che disegno è ancora ritagliata. – tomrozb
ha funzionato per me. +1 – dac2009
ma se lo fai su ogni 'onDraw (canvas canvas)' allora non stai facendo al computer un sacco di lavoro extra? –
tenta di impostare
android:clipChildren="false"
alla vista primaria
Non so della domanda ma voglio ringraziarti per aver risolto, il mio problema, che stavo affrontando. Grazie. Questo è quello che stavo cercando. – tannerjohn
Si prega di dare un'occhiata a http://stackoverflow.com/questions/32735119/draw-outside-the-bounds-of-an-android-canvas –
@MortezaRastgoo la domanda collegata (e le risposte) non tradurre direttamente a questo problema affatto. –
La @numan risposta ha dato è quasi ok, il problema è l'allocazione di memoria con questo approccio, così abbiamo dovrebbe fare questo, invece:
// in constructor/elsewhere
Rect newRect = new Rect();
// in onDraw
canvas.getClipBounds(newRect);
newRect.inset(0, -20); //make the rect larger
canvas.clipRect(newRect, Region.Op.REPLACE);
che risolve il problema :-)
Come inizializzare 'newRect'? –
Ok, immagino il punto qui che newRect viene allocato una volta per init di oggetto, invece di assegnarlo ogni volta che viene chiamato onDraw. –
L'ho provato, ma non ha funzionato. –
Se si vuole disegnare il testo fuori dai limiti in TextView, si dovrebbe fare questo, invece:
<TextView
...
android:shadowColor="#01000000"
android:shadowDx="100" // out of right bound
android:shadowDy="0"
android:shadowRadius="1"
.../>
Non funziona utilizzare clipRect() come @ di Numan risposta perché TextView clip di un proprio rect in OnDraw():
if (mShadowRadius != 0) {
clipLeft += Math.min(0, mShadowDx - mShadowRadius);
clipRight += Math.max(0, mShadowDx + mShadowRadius);
clipTop += Math.min(0, mShadowDy - mShadowRadius);
clipBottom += Math.max(0, mShadowDy + mShadowRadius);
}
canvas.clipRect(clipLeft, clipTop, clipRight, clipBottom);
Ultimo ma non meno importante, non dimenticare di impostare android:clipChildren="false"
e android:clipToPadding="false"
nel vostro genitore ViewGroup
- 1. Su iOS, drawRect non può disegnare al di fuori dei limiti della vista?
- 2. Come disegnare al di fuori di un elemento canvas HTML?
- 3. disegnare/dipingere forma al di fuori
- 4. Creazione di un gruppo Nascondi Attori al di fuori dei suoi limiti
- 5. Limiti di installazione APK al di fuori di Google Store
- 6. Come impedire a JList di effettuare la selezione al di fuori dei limiti di cella?
- 7. android come disegnare una bitmap su tela semi trasparente
- 8. UIScrollview subviews al di fuori dei limiti di ritaglio che non ricevono tocchi
- 9. Posso disegnare con antialiasing su tela?
- 10. Avvolgere testo lungo su una tela Android
- 11. Come disegnare cerchio su tela in Android?
- 12. Android: disegno di una tela su ImageView
- 13. ggplot2 Bug: scale_x_date Visualizzazione/non eliminazione di dati al di fuori dei limiti specificati
- 14. Come posso disegnare un cerchio su una tela?
- 15. Mostrare il controllo all'interno del controllo utente al di fuori dei limiti della sua madre
- 16. Cerchio di disegnare Android intorno al testo
- 17. Le cause alternative per Index erano al di fuori dei limiti dell'array nel dizionario .Net
- 18. disegnare oggetto/immagine su tela
- 19. Come disegnare poligoni su una tela HTML5?
- 20. CSS: posiziona un elemento annidato leggermente al di fuori dei limiti dell'elemento genitore
- 21. Disegnare un (progressiva) schizzi di vernice su una tela
- 22. Come disegnare segmenti di una ciambella con tela HTML5?
- 23. Android: scorre in modo efficiente il contenuto di una tela?
- 24. come disegnare un'immagine su una tela con trasparenza/alpha
- 25. Come disegnare un testo su tela?
- 26. Comprensione dei concetti di superficie e tela
- 27. Android View.onDraw() ha sempre una tela pulita
- 28. Disegnare su una tela con ritardo - "make onDraw() slow down"
- 29. Capovolgere una tela Android
- 30. Posso utilizzare tag Grails al di fuori di GSP?
non abbiamo idea di cosa si sta parlando con un esempio e un po ' codice – Falmarri