bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


android_canvas

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Següent revisió
Revisió prèvia
android_canvas [2025/11/11 01:05]
enric_mieza_sanchez creat
android_canvas [2025/11/11 01:53] (actual)
enric_mieza_sanchez [Aplicar-hi canvis]
Línia 1: Línia 1:
 ====== Android Canvas : Views Personalitzades ====== ====== Android Canvas : Views Personalitzades ======
 +
 +{{ android:display_canvas.png?200}}
  
 Article de referència: [[Android]] Article de referència: [[Android]]
  
-En aquest article veiem com crear una ''View'' o //widget// personalitzat, dibuixant directament sobre ell amb el l'objecte ''Canvas''.+En aquest article veiem com crear una ''View'' o //widget// personalitzat, dibuixant directament sobre ell amb l'objecte ''Canvas''.
  
 {{tag> #Dam #DamMp08 #DamMp08Uf1 #DamMp08Uf01 #DamMp08Uf2 Android mobile kotlin }} {{tag> #Dam #DamMp08 #DamMp08Uf1 #DamMp08Uf01 #DamMp08Uf2 Android mobile kotlin }}
Línia 57: Línia 59:
 La manera més fàcil és afegir una View genèrica amb la interfície gràfica, amb els tamanys que ens convingui, i després anar al codi XML i canviar el tipus de //widget// per la nova ''class'' que hem creat. La manera més fàcil és afegir una View genèrica amb la interfície gràfica, amb els tamanys que ens convingui, i després anar al codi XML i canviar el tipus de //widget// per la nova ''class'' que hem creat.
  
-Segurament quedaria similar a:+Canviariem l'element ''<View ...>'' per ''<com.myuser.myapp.MyClass ...>'' 
 + 
 +Segurament quedaria similar a aquest exemple (dins d'una //constraint layout//):
  
 <code xml activity_main.xml> <code xml activity_main.xml>
-    <com.myuser.myapp.Display +<com.myuser.myapp.Display 
-        android:id="@+id/display" +    android:id="@+id/display" 
-        android:layout_width="300dp" +    android:layout_width="300dp" 
-        android:layout_height="300dp" +    android:layout_height="300dp" 
-        app:layout_constraintBottom_toBottomOf="parent" +    app:layout_constraintBottom_toBottomOf="parent" 
-        app:layout_constraintEnd_toEndOf="parent" +    app:layout_constraintEnd_toEndOf="parent" 
-        app:layout_constraintStart_toStartOf="parent" +    app:layout_constraintStart_toStartOf="parent" 
-        app:layout_constraintTop_toTopOf="parent" />+    app:layout_constraintTop_toTopOf="parent" />
 </code> </code>
  
 +\\
 +
 +===== Aplicar canvis als dibuixos sobre el widget =====
 +
 +El més còmode per dibuixar-hi de forma dinàmica és posar el codi dins de la nova classe ''Display'' i repintar sempre tota la ''View''.
 +
 +Per forçar que es repinti podem cridar la funció ''View.invalidate()'', la qual acabarà amb la crida a ''onDraw'' que hem implementat:
 +
 +<code kotlin>
 +  val display = findViewById<Display>(R.id.display)
 +  display.invalidate()
 +</code>
  
android_canvas.1762823122.txt.gz · Darrera modificació: 2025/11/11 01:05 per enric_mieza_sanchez