Diferencia entre revisiones de «PDM Eventos nos views»
Ir a la navegación
Ir a la búsqueda
| Línea 7: | Línea 7: | ||
*<u>Nota:</u> En moitos controis, o evento principal que ides querer controlar, será o 'Click' sobre o mesmo. Lembrar [https://wiki.cifprodolfoucha.es/index.php?title=PDM_Xesti%C3%B3n_de_Eventos que xa vimos no punto anterior] que o método que rexistra dito evento está definido na clase View e polo tanto ides poder xestionar da mesma forma o evento Click en calquera View que teñades. | *<u>Nota:</u> En moitos controis, o evento principal que ides querer controlar, será o 'Click' sobre o mesmo. Lembrar [https://wiki.cifprodolfoucha.es/index.php?title=PDM_Xesti%C3%B3n_de_Eventos que xa vimos no punto anterior] que o método que rexistra dito evento está definido na clase View e polo tanto ides poder xestionar da mesma forma o evento Click en calquera View que teñades. | ||
| + | |||
| + | |||
<br /> | <br /> | ||
| + | ==Preparando a Activity== | ||
| + | |||
| + | * Imos crear unha única Activity onde estarán todos os Views que imos analizar (o ListView/Spinner/RecyclerView [https://wiki.cifprodolfoucha.es/index.php?title=Programaci%C3%B3n_de_dispositivos_m%C3%B3biles#UNIDADE_4:_Adaptadores serán analizados na Unidade 4]. | ||
| + | |||
| + | [[Imagen:PDM_xesteventos_base_1.jpg | 400px| center]] | ||
| + | |||
| + | |||
| + | * Crea un paquete '''Eventos''' e dentro del imos crear unha nova 'Empty Activity' de nome: '''UD03_01_xesteventos_base''' de tipo Launcher. | ||
| + | : Modifica o arquivo '''AndroidManifiest.xml''' e engade unha label á activity como [http://wiki.cifprodolfoucha.es/index.php?title=PDM_Creando_proxecto_base xa vimos na creación do proxecto base]. | ||
| + | |||
| + | '''Código do Layout:''' | ||
| + | <syntaxhighlight lang="xml" enclose="div" highlight=""> | ||
| + | <?xml version="1.0" encoding="utf-8"?> | ||
| + | <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
| + | xmlns:app="http://schemas.android.com/apk/res-auto" | ||
| + | xmlns:tools="http://schemas.android.com/tools" | ||
| + | android:layout_width="match_parent" | ||
| + | android:layout_height="match_parent" | ||
| + | tools:context="cifprodolfoucha.aprendiendo.Eventos.UD03_01_xesteventos_base"> | ||
| + | |||
| + | <TextView | ||
| + | android:id="@+id/txvTextoTextView" | ||
| + | android:layout_width="wrap_content" | ||
| + | android:layout_height="wrap_content" | ||
| + | android:layout_marginTop="8dp" | ||
| + | android:text="Texto Text View" | ||
| + | android:textSize="30sp" | ||
| + | app:layout_constraintEnd_toEndOf="parent" | ||
| + | app:layout_constraintStart_toStartOf="parent" | ||
| + | app:layout_constraintTop_toTopOf="parent" /> | ||
| + | |||
| + | <EditText | ||
| + | android:id="@+id/etvTextoEditText" | ||
| + | android:layout_width="wrap_content" | ||
| + | android:layout_height="wrap_content" | ||
| + | android:layout_marginStart="8dp" | ||
| + | android:layout_marginTop="8dp" | ||
| + | android:ems="10" | ||
| + | android:hint="Texto Edit Text" | ||
| + | android:inputType="textPersonName" | ||
| + | app:layout_constraintStart_toStartOf="parent" | ||
| + | app:layout_constraintTop_toBottomOf="@+id/txvTextoTextView" /> | ||
| + | |||
| + | <Button | ||
| + | android:id="@+id/btnBoton" | ||
| + | android:layout_width="wrap_content" | ||
| + | android:layout_height="wrap_content" | ||
| + | android:layout_marginStart="8dp" | ||
| + | android:layout_marginBottom="8dp" | ||
| + | android:text="BOTÓN" | ||
| + | app:layout_constraintBottom_toBottomOf="parent" | ||
| + | app:layout_constraintStart_toStartOf="parent" /> | ||
| + | |||
| + | <ImageButton | ||
| + | android:id="@+id/imgbtnImageButton" | ||
| + | android:layout_width="wrap_content" | ||
| + | android:layout_height="wrap_content" | ||
| + | android:layout_marginStart="8dp" | ||
| + | android:layout_marginBottom="8dp" | ||
| + | app:layout_constraintBottom_toBottomOf="parent" | ||
| + | app:layout_constraintStart_toEndOf="@+id/btnBoton" | ||
| + | app:srcCompat="@android:drawable/star_on" /> | ||
| + | |||
| + | <CheckBox | ||
| + | android:id="@+id/chk_Uno" | ||
| + | android:layout_width="wrap_content" | ||
| + | android:layout_height="wrap_content" | ||
| + | android:layout_marginStart="8dp" | ||
| + | android:layout_marginTop="8dp" | ||
| + | android:text="Check Uno" | ||
| + | app:layout_constraintStart_toStartOf="parent" | ||
| + | app:layout_constraintTop_toBottomOf="@+id/etvTextoEditText" /> | ||
| + | |||
| + | <CheckBox | ||
| + | android:id="@+id/chk_Dos" | ||
| + | android:layout_width="wrap_content" | ||
| + | android:layout_height="wrap_content" | ||
| + | android:layout_marginStart="8dp" | ||
| + | android:layout_marginTop="8dp" | ||
| + | android:text="Check Dos" | ||
| + | app:layout_constraintStart_toEndOf="@+id/chk_Uno" | ||
| + | app:layout_constraintTop_toBottomOf="@+id/etvTextoEditText" /> | ||
| + | |||
| + | <CheckBox | ||
| + | android:id="@+id/chk_Tres" | ||
| + | android:layout_width="wrap_content" | ||
| + | android:layout_height="wrap_content" | ||
| + | android:layout_marginStart="8dp" | ||
| + | android:layout_marginTop="8dp" | ||
| + | android:text="Check Tres" | ||
| + | app:layout_constraintStart_toEndOf="@+id/chk_Dos" | ||
| + | app:layout_constraintTop_toBottomOf="@+id/etvTextoEditText" /> | ||
| + | |||
| + | <RadioGroup | ||
| + | android:id="@+id/rgrpGrupoBotons" | ||
| + | android:layout_width="wrap_content" | ||
| + | android:layout_height="wrap_content" | ||
| + | android:layout_marginTop="16dp" | ||
| + | android:checkedButton="@id/rbtnIOpcionA" | ||
| + | android:orientation="horizontal" | ||
| + | app:layout_constraintStart_toStartOf="parent" | ||
| + | app:layout_constraintTop_toBottomOf="@+id/chk_Uno"> | ||
| + | |||
| + | <RadioButton | ||
| + | android:id="@+id/rbtnIOpcionA" | ||
| + | android:layout_width="wrap_content" | ||
| + | android:layout_height="wrap_content" | ||
| + | android:text="Opción A)" /> | ||
| + | |||
| + | <RadioButton | ||
| + | android:id="@+id/rbtnOpcionB" | ||
| + | android:layout_width="match_parent" | ||
| + | android:layout_height="wrap_content" | ||
| + | android:text="Opción B)" /> | ||
| + | </RadioGroup> | ||
| + | |||
| + | <ToggleButton | ||
| + | android:id="@+id/tbtnToogleBoton" | ||
| + | android:layout_width="wrap_content" | ||
| + | android:layout_height="wrap_content" | ||
| + | android:layout_marginStart="8dp" | ||
| + | android:layout_marginTop="8dp" | ||
| + | android:text="ToggleButton" | ||
| + | app:layout_constraintStart_toStartOf="parent" | ||
| + | app:layout_constraintTop_toBottomOf="@+id/rgrpGrupoBotons" /> | ||
| + | |||
| + | <Switch | ||
| + | android:id="@+id/swbSwitchButton" | ||
| + | android:layout_width="wrap_content" | ||
| + | android:layout_height="wrap_content" | ||
| + | android:layout_marginStart="8dp" | ||
| + | android:layout_marginTop="8dp" | ||
| + | android:text="Switch" | ||
| + | app:layout_constraintStart_toStartOf="parent" | ||
| + | app:layout_constraintTop_toBottomOf="@+id/tbtnToogleBoton" /> | ||
| + | |||
| + | <com.google.android.material.floatingactionbutton.FloatingActionButton | ||
| + | android:id="@+id/fabFloatActionButton" | ||
| + | android:layout_width="wrap_content" | ||
| + | android:layout_height="wrap_content" | ||
| + | android:layout_marginEnd="8dp" | ||
| + | android:layout_marginBottom="8dp" | ||
| + | android:clickable="true" | ||
| + | app:layout_constraintBottom_toBottomOf="parent" | ||
| + | app:layout_constraintEnd_toEndOf="parent" | ||
| + | app:srcCompat="@android:drawable/ic_input_add" /> | ||
| + | |||
| + | <ImageView | ||
| + | android:id="@+id/imageView" | ||
| + | android:layout_width="114dp" | ||
| + | android:layout_height="97dp" | ||
| + | android:layout_marginStart="8dp" | ||
| + | android:layout_marginTop="8dp" | ||
| + | android:background="#AC2727" | ||
| + | app:layout_constraintStart_toStartOf="parent" | ||
| + | app:layout_constraintTop_toBottomOf="@+id/swbSwitchButton" | ||
| + | app:srcCompat="@android:drawable/btn_star_big_on" /> | ||
| + | </androidx.constraintlayout.widget.ConstraintLayout> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | |||
| + | |||
| + | <syntaxhighlight lang="java" enclose="div" highlight=""> | ||
| + | </syntaxhighlight> | ||
| + | |||
==TextView== | ==TextView== | ||
Revisión del 19:21 14 nov 2020
Sumario
Introducción
- Neste punto imos ver como xestionar os principais eventos que se poidan producir nos Views que vimos na Unidade 2.
- Lembrar que xa está posta nun punto anterior a explicación de como funcionan as interfaces e como asocialas aos Views empregando o método setOnZZZZZZZ correspondente.
- Nota: En moitos controis, o evento principal que ides querer controlar, será o 'Click' sobre o mesmo. Lembrar que xa vimos no punto anterior que o método que rexistra dito evento está definido na clase View e polo tanto ides poder xestionar da mesma forma o evento Click en calquera View que teñades.
Preparando a Activity
- Imos crear unha única Activity onde estarán todos os Views que imos analizar (o ListView/Spinner/RecyclerView serán analizados na Unidade 4.
- Crea un paquete Eventos e dentro del imos crear unha nova 'Empty Activity' de nome: UD03_01_xesteventos_base de tipo Launcher.
- Modifica o arquivo AndroidManifiest.xml e engade unha label á activity como xa vimos na creación do proxecto base.
Código do Layout:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="cifprodolfoucha.aprendiendo.Eventos.UD03_01_xesteventos_base">
<TextView
android:id="@+id/txvTextoTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Texto Text View"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/etvTextoEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:ems="10"
android:hint="Texto Edit Text"
android:inputType="textPersonName"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txvTextoTextView" />
<Button
android:id="@+id/btnBoton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginBottom="8dp"
android:text="BOTÓN"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ImageButton
android:id="@+id/imgbtnImageButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/btnBoton"
app:srcCompat="@android:drawable/star_on" />
<CheckBox
android:id="@+id/chk_Uno"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Check Uno"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/etvTextoEditText" />
<CheckBox
android:id="@+id/chk_Dos"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Check Dos"
app:layout_constraintStart_toEndOf="@+id/chk_Uno"
app:layout_constraintTop_toBottomOf="@+id/etvTextoEditText" />
<CheckBox
android:id="@+id/chk_Tres"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Check Tres"
app:layout_constraintStart_toEndOf="@+id/chk_Dos"
app:layout_constraintTop_toBottomOf="@+id/etvTextoEditText" />
<RadioGroup
android:id="@+id/rgrpGrupoBotons"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:checkedButton="@id/rbtnIOpcionA"
android:orientation="horizontal"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/chk_Uno">
<RadioButton
android:id="@+id/rbtnIOpcionA"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Opción A)" />
<RadioButton
android:id="@+id/rbtnOpcionB"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Opción B)" />
</RadioGroup>
<ToggleButton
android:id="@+id/tbtnToogleBoton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="ToggleButton"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/rgrpGrupoBotons" />
<Switch
android:id="@+id/swbSwitchButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Switch"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tbtnToogleBoton" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fabFloatActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:clickable="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:srcCompat="@android:drawable/ic_input_add" />
<ImageView
android:id="@+id/imageView"
android:layout_width="114dp"
android:layout_height="97dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="#AC2727"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/swbSwitchButton"
app:srcCompat="@android:drawable/btn_star_big_on" />
</androidx.constraintlayout.widget.ConstraintLayout>
TextView
- Neste control poderíamos querer facer algo cando clickeamos sobre o texto ou ben controlar os eventos que se poidan enviar dende o teclado virtual que aparece cando escribimos o texto.
EditText
Button
- O principal evento que queremos xestionar nun botón é o Click sobre o mesmo.
- Dito evento está asociado á interface OnClickListener.
FloatActionButton
ToggleButton
ImageButton
CheckBox
RadioButton-RadioGroup
ListView-Spinner
- A xestión de eventos destes controis o veremos na UD4-Adaptadores.
Enlace a la página principal de la UD3
Enlace a la página principal del curso
-- Ángel D. Fernández González -- (2020).
