Diferencia entre revisiones de «PDM Eventos nos views»

De MediaWiki
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

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

PDM xesteventos base 1.jpg


  • 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






Enlace a la página principal de la UD3

Enlace a la página principal del curso





-- Ángel D. Fernández González -- (2020).