<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Bloque 1 on Documentación</title>
    <link>https://documentation.javiercarrasco.es/pmdm/B1/</link>
    <description>Recent content in Bloque 1 on Documentación</description>
    <generator>Hugo</generator>
    <language>es-es</language>
    <atom:link href="https://documentation.javiercarrasco.es/pmdm/B1/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Tema 1A. Kotlin para Android — Repaso acelerado</title>
      <link>https://documentation.javiercarrasco.es/pmdm/B1/B1-T1a_Kotlin_Repaso/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://documentation.javiercarrasco.es/pmdm/B1/B1-T1a_Kotlin_Repaso/</guid>
      <description>&lt;h1 id=&#34;tema-1a-kotlin-para-android--repaso-acelerado&#34;&gt;Tema 1A. Kotlin para Android — Repaso acelerado&lt;/h1&gt;&#xA;&lt;div class=&#34;book-tabs&#34;&gt;&#xA;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-0&#34; checked=&#34;checked&#34; /&gt;&lt;label for=&#34;tabs-0-0&#34;&gt;Información del tema&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Bloque:&lt;/strong&gt; B1 — Fundamentos: Kotlin, Compose y entorno Android&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Duración aproximada:&lt;/strong&gt; 4 horas&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-1&#34;  /&gt;&lt;label for=&#34;tabs-0-1&#34;&gt;Resultados de Aprendizaje&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;RA1 — Aplica tecnologías de desarrollo para dispositivos móviles evaluando sus características y capacidades.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-2&#34;  /&gt;&lt;label for=&#34;tabs-0-2&#34;&gt;Criterios de Evaluación&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: center&#34;&gt;Código&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Criterio&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA1-b&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han identificado las tecnologías de desarrollo de aplicaciones para dispositivos móviles.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA1-f&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se ha analizado la estructura de aplicaciones existentes para dispositivos móviles identificando las clases utilizadas.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA1-g&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han realizado modificaciones sobre aplicaciones existentes.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;introducción&#34;&gt;Introducción&lt;a class=&#34;anchor&#34; href=&#34;#introducci%c3%b3n&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Kotlin es el lenguaje oficial de Android desde 2017 y el único recomendado por Google para el desarrollo de aplicaciones modernas con Jetpack Compose. Esta sección asume que ya conoces los fundamentos de programación orientada a objetos, idealmente en Java, y se centra en los aspectos de Kotlin que son distintos, más potentes o especialmente relevantes para el desarrollo Android.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tema 1B. Introducción a Jetpack Compose</title>
      <link>https://documentation.javiercarrasco.es/pmdm/B1/B1-T1b_JetpackCompose/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://documentation.javiercarrasco.es/pmdm/B1/B1-T1b_JetpackCompose/</guid>
      <description>&lt;h1 id=&#34;tema-1b-introducción-a-jetpack-compose&#34;&gt;Tema 1B. Introducción a Jetpack Compose&lt;/h1&gt;&#xA;&lt;div class=&#34;book-tabs&#34;&gt;&#xA;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-0&#34; checked=&#34;checked&#34; /&gt;&lt;label for=&#34;tabs-0-0&#34;&gt;Información del tema&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Bloque:&lt;/strong&gt; B1 — Fundamentos: Kotlin, Compose y entorno Android&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Duración aproximada:&lt;/strong&gt; 6 horas&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-1&#34;  /&gt;&lt;label for=&#34;tabs-0-1&#34;&gt;Resultados de Aprendizaje&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;RA1 — Aplica tecnologías de desarrollo para dispositivos móviles evaluando sus características y capacidades.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-2&#34;  /&gt;&lt;label for=&#34;tabs-0-2&#34;&gt;Criterios de Evaluación&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: center&#34;&gt;Código&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Criterio&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA1-b&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han identificado las tecnologías de desarrollo de aplicaciones para dispositivos móviles.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA1-c&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han instalado, configurado y utilizado entornos de trabajo para el desarrollo de aplicaciones para dispositivos móviles.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA1-f&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se ha analizado la estructura de aplicaciones existentes para dispositivos móviles identificando las clases utilizadas.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA1-g&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han realizado modificaciones sobre aplicaciones existentes.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA1-h&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han utilizado emuladores para comprobar el funcionamiento de las aplicaciones.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-qué-es-jetpack-compose&#34;&gt;1. ¿Qué es Jetpack Compose?&lt;a class=&#34;anchor&#34; href=&#34;#1-qu%c3%a9-es-jetpack-compose&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Jetpack Compose es el &lt;strong&gt;framework moderno de Android para construir interfaces de usuario de forma declarativa&lt;/strong&gt;. Fue publicado de forma estable por Google en 2021 y se ha convertido en la forma oficial y recomendada de desarrollar interfaces en Android, sustituyendo progresivamente al sistema clásico basado en archivos XML.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tema 1C. Interfaz de usuario avanzada en Compose</title>
      <link>https://documentation.javiercarrasco.es/pmdm/B1/B1-T1c_UI_Avanzada/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://documentation.javiercarrasco.es/pmdm/B1/B1-T1c_UI_Avanzada/</guid>
      <description>&lt;h1 id=&#34;tema-1c-interfaz-de-usuario-avanzada-en-compose&#34;&gt;Tema 1C. Interfaz de usuario avanzada en Compose&lt;/h1&gt;&#xA;&lt;div class=&#34;book-tabs&#34;&gt;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-0&#34; checked=&#34;checked&#34; /&gt;&lt;label for=&#34;tabs-0-0&#34;&gt;Información del tema&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Bloque:&lt;/strong&gt; B1 — Fundamentos: Kotlin, Compose y entorno Android&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Duración aproximada:&lt;/strong&gt; 4 horas&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-1&#34;  /&gt;&lt;label for=&#34;tabs-0-1&#34;&gt;Resultados de Aprendizaje&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;RA1 — Aplica tecnologías de desarrollo para dispositivos móviles evaluando sus características y capacidades.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-2&#34;  /&gt;&lt;label for=&#34;tabs-0-2&#34;&gt;Criterios de Evaluación&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: center&#34;&gt;Código&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Criterio&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA1-b&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han identificado las tecnologías de desarrollo de aplicaciones para dispositivos móviles.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA1-d&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han identificado configuraciones que clasifican los dispositivos móviles en base a sus características.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA1-g&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han realizado modificaciones sobre aplicaciones existentes.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA1-h&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han utilizado emuladores para comprobar el funcionamiento de las aplicaciones.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-ecosistema-android-y-limitaciones-del-dispositivo-móvil&#34;&gt;1. Ecosistema Android y limitaciones del dispositivo móvil&lt;a class=&#34;anchor&#34; href=&#34;#1-ecosistema-android-y-limitaciones-del-dispositivo-m%c3%b3vil&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Antes de profundizar en la UI, es importante entender el entorno en el que se ejecutan las aplicaciones Android y las restricciones que impone.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tema 1D. Intents, permisos y entorno Android</title>
      <link>https://documentation.javiercarrasco.es/pmdm/B1/B1-T1d_Intents_Permisos/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://documentation.javiercarrasco.es/pmdm/B1/B1-T1d_Intents_Permisos/</guid>
      <description>&lt;h1 id=&#34;tema-1d-intents-permisos-y-entorno-android&#34;&gt;Tema 1D. Intents, permisos y entorno Android&lt;/h1&gt;&#xA;&lt;div class=&#34;book-tabs&#34;&gt;&#xA;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-0&#34; checked=&#34;checked&#34; /&gt;&lt;label for=&#34;tabs-0-0&#34;&gt;Información del tema&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Bloque:&lt;/strong&gt; B1 — Fundamentos: Kotlin, Compose y entorno Android&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Duración aproximada:&lt;/strong&gt; 4 horas&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-1&#34;  /&gt;&lt;label for=&#34;tabs-0-1&#34;&gt;Resultados de Aprendizaje&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;RA1 — Aplica tecnologías de desarrollo para dispositivos móviles evaluando sus características y capacidades.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-2&#34;  /&gt;&lt;label for=&#34;tabs-0-2&#34;&gt;Criterios de Evaluación&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: center&#34;&gt;Código&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Criterio&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA1-a&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han analizado las limitaciones que plantea la ejecución de aplicaciones en los dispositivos móviles.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA1-c&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han instalado, configurado y utilizado entornos de trabajo para el desarrollo de aplicaciones para dispositivos móviles.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA1-d&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han identificado configuraciones que clasifican los dispositivos móviles en base a sus características.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA1-e&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han descrito perfiles que establecen la relación entre el dispositivo y la aplicación.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA1-f&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se ha analizado la estructura de aplicaciones existentes para dispositivos móviles identificando las clases utilizadas.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA1-g&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han realizado modificaciones sobre aplicaciones existentes.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;RA1-h&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Se han utilizado emuladores para comprobar el funcionamiento de las aplicaciones.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-el-ciclo-de-vida-de-una-activity&#34;&gt;1. El ciclo de vida de una Activity&lt;a class=&#34;anchor&#34; href=&#34;#1-el-ciclo-de-vida-de-una-activity&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Antes de estudiar los Intents, es esencial comprender el ciclo de vida de una &lt;code&gt;Activity&lt;/code&gt;, porque determina cuándo se crean, pausan, reanudan y destruyen las pantallas de una app.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Anexo 1. Kotlin — Referencia Completa</title>
      <link>https://documentation.javiercarrasco.es/pmdm/B1/B1-A1_Kotlin_Referencia_Anexo/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://documentation.javiercarrasco.es/pmdm/B1/B1-A1_Kotlin_Referencia_Anexo/</guid>
      <description>&lt;h1 id=&#34;anexo-1-kotlin-para-android&#34;&gt;Anexo 1. Kotlin para Android&lt;/h1&gt;&#xA;&lt;div class=&#34;book-tabs&#34;&gt;&#xA;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-0&#34; checked=&#34;checked&#34; /&gt;&lt;label for=&#34;tabs-0-0&#34;&gt;Información del anexo&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tipo:&lt;/strong&gt; Anexo de apoyo — material de consulta y profundización&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Bloque:&lt;/strong&gt; B1 — Fundamentos: Kotlin, Compose y entorno Android&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-1&#34;  /&gt;&lt;label for=&#34;tabs-0-1&#34;&gt;Resultados de Aprendizaje&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;RA1 — Aplica tecnologías de desarrollo para dispositivos móviles evaluando sus características y capacidades.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;sobre-este-anexo&#34;&gt;Sobre este anexo&lt;a class=&#34;anchor&#34; href=&#34;#sobre-este-anexo&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Este documento es una referencia completa del lenguaje Kotlin orientada al desarrollo Android. Su objetivo es doble: servir como material de consulta durante el curso cuando necesites recordar la sintaxis o el comportamiento de un elemento del lenguaje, y como recurso de profundización para quien quiera ir más allá del repaso acelerado.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Anexo 2. Remember en Jetpack Compose</title>
      <link>https://documentation.javiercarrasco.es/pmdm/B1/B1-A2_Remembers/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://documentation.javiercarrasco.es/pmdm/B1/B1-A2_Remembers/</guid>
      <description>&lt;h1 id=&#34;anexo-2-funciones-remember-en-jetpack-compose&#34;&gt;Anexo 2: Funciones &lt;code&gt;remember&lt;/code&gt; en Jetpack Compose&lt;/h1&gt;&#xA;&lt;div class=&#34;book-tabs&#34;&gt;&#xA;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-0&#34; checked=&#34;checked&#34; /&gt;&lt;label for=&#34;tabs-0-0&#34;&gt;Información del anexo&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tipo:&lt;/strong&gt; Anexo de apoyo — material de consulta y profundización&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Bloque:&lt;/strong&gt; B1 — Fundamentos: Kotlin, Compose y entorno Android&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;input type=&#34;radio&#34; class=&#34;toggle&#34; name=&#34;tabs-0&#34; id=&#34;tabs-0-1&#34;  /&gt;&lt;label for=&#34;tabs-0-1&#34;&gt;Resultados de Aprendizaje&lt;/label&gt;&lt;div class=&#34;book-tabs-content markdown-inner&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;RA1 — Aplica tecnologías de desarrollo para dispositivos móviles evaluando sus características y capacidades.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-básicos-de-estado&#34;&gt;1. Básicos de estado&lt;a class=&#34;anchor&#34; href=&#34;#1-b%c3%a1sicos-de-estado&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Función&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Descripción&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Ejemplo rápido&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;remember {…}&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Guarda el estado &lt;strong&gt;en recomposición&lt;/strong&gt; mientras el &lt;em&gt;composable&lt;/em&gt; esté en el árbol.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;val count = remember { mutableStateOf(0) }&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rememberSaveable {…}&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Igual que &lt;code&gt;remember&lt;/code&gt;, pero &lt;strong&gt;persiste en recreaciones&lt;/strong&gt; de actividad (rotación, proceso).&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;val count = rememberSaveable { mutableStateOf(0) }&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;2-corutinas-y-lambdas&#34;&gt;2. Corutinas y lambdas&lt;a class=&#34;anchor&#34; href=&#34;#2-corutinas-y-lambdas&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Función&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Descripción&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Ejemplo rápido&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rememberCoroutineScope()&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Devuelve un &lt;code&gt;CoroutineScope&lt;/code&gt; ligado al ciclo de vida del &lt;em&gt;composable&lt;/em&gt;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;val scope = rememberCoroutineScope()&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rememberUpdatedState(value)&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Mantiene siempre la &lt;strong&gt;última versión de un valor&lt;/strong&gt; dentro de efectos (&lt;code&gt;LaunchedEffect&lt;/code&gt;, etc.).&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;val onClick by rememberUpdatedState(newValue = action)&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;3-animaciones&#34;&gt;3. Animaciones&lt;a class=&#34;anchor&#34; href=&#34;#3-animaciones&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Función&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Descripción&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Ejemplo rápido&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rememberInfiniteTransition()&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Animaciones que se repiten indefinidamente.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;val alpha by infinite.animateFloat(... )&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rememberTransition(state)&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Transiciones entre &lt;strong&gt;estados definidos&lt;/strong&gt;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;val transition = updateTransition(targetState, label=&amp;quot;&amp;quot;)&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rememberSplineBasedDecay()&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Animación tipo &lt;strong&gt;fling&lt;/strong&gt; con decaimiento.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;val decay = rememberSplineBasedDecay&amp;lt;Float&amp;gt;()&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;4-scroll-y-listas&#34;&gt;4. Scroll y listas&lt;a class=&#34;anchor&#34; href=&#34;#4-scroll-y-listas&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Función&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Descripción&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Ejemplo rápido&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rememberScrollState()&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Guarda la posición de &lt;em&gt;scroll&lt;/em&gt; en &lt;code&gt;Column&lt;/code&gt; / &lt;code&gt;Row&lt;/code&gt;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;val scroll = rememberScrollState()&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rememberLazyListState()&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Guarda el estado de &lt;em&gt;scroll&lt;/em&gt; en &lt;code&gt;LazyColumn&lt;/code&gt;/&lt;code&gt;LazyRow&lt;/code&gt;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;val listState = rememberLazyListState()&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rememberLazyGridState()&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Estado de &lt;em&gt;scroll&lt;/em&gt; en &lt;code&gt;LazyVerticalGrid&lt;/code&gt; o &lt;code&gt;LazyHorizontalGrid&lt;/code&gt;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;val gridState = rememberLazyGridState()&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rememberPagerState()&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Estado de un &lt;em&gt;pager&lt;/em&gt; (&lt;code&gt;HorizontalPager&lt;/code&gt; / &lt;code&gt;VerticalPager&lt;/code&gt;).&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;val pagerState = rememberPagerState()&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;5-gestos-e-interacción&#34;&gt;5. Gestos e interacción&lt;a class=&#34;anchor&#34; href=&#34;#5-gestos-e-interacci%c3%b3n&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Función&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Descripción&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Ejemplo rápido&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rememberDraggableState(onDelta)&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Controla los desplazamientos en gestos de arrastre.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;val dragState = rememberDraggableState { delta -&amp;gt; … }&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rememberSwipeableState(initialValue)&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Estado de un componente deslizable (ej: &lt;code&gt;BottomSheet&lt;/code&gt;).&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;val sheetState = rememberSwipeableState(0)&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rememberPullRefreshState(refreshing, onRefresh)&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Estado para &lt;strong&gt;pull-to-refresh&lt;/strong&gt;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;val refreshState = rememberPullRefreshState(refreshing, { … })&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rememberNestedScrollInteropConnection()&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Conexión de &lt;em&gt;scroll&lt;/em&gt; con vistas clásicas Android.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;val connection = rememberNestedScrollInteropConnection()&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;6-otros-especializados&#34;&gt;6. Otros especializados&lt;a class=&#34;anchor&#34; href=&#34;#6-otros-especializados&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Función&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Descripción&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Ejemplo rápido&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rememberSystemUiController()&lt;/code&gt; &lt;em&gt;(Accompanist)&lt;/em&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Controla &lt;em&gt;status bar&lt;/em&gt; y &lt;em&gt;nav bar&lt;/em&gt;.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;val controller = rememberSystemUiController()&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rememberInsetsPaddingValues()&lt;/code&gt; &lt;em&gt;(Accompanist, deprecated)&lt;/em&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;em&gt;Padding&lt;/em&gt; según insets del sistema.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;val padding = rememberInsetsPaddingValues()&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rememberHapticFeedback()&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Acceso al motor de vibración/háptica.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;val haptic = LocalHapticFeedback.current&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;rememberClipboardManager()&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Acceso al portapapeles del sistema.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;val clipboard = LocalClipboardManager.current&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;ejemplo-práctico-integrando-varios-remember&#34;&gt;Ejemplo práctico integrando varios &lt;code&gt;remember&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#ejemplo-pr%c3%a1ctico-integrando-varios-remember&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34; title=&#34;Kotlin&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#4c4f69;background-color:#eff1f5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-kotlin&#34; data-lang=&#34;kotlin&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#1e66f5;font-weight:bold&#34;&gt;@Composable&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#8839ef&#34;&gt;fun&lt;/span&gt; &lt;span style=&#34;color:#1e66f5&#34;&gt;DemoRememberScreen&lt;/span&gt;() {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 3&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#8839ef&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#fe640b&#34;&gt;count&lt;/span&gt; = rememberSaveable { mutableStateOf(&lt;span style=&#34;color:#fe640b&#34;&gt;0&lt;/span&gt;) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 4&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#8839ef&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#fe640b&#34;&gt;scrollState&lt;/span&gt; = rememberScrollState()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 5&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#8839ef&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#fe640b&#34;&gt;scope&lt;/span&gt; = rememberCoroutineScope()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 6&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#8839ef&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#fe640b&#34;&gt;transition&lt;/span&gt; = rememberInfiniteTransition()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 7&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 8&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#8839ef&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#fe640b&#34;&gt;alpha&lt;/span&gt; &lt;span style=&#34;color:#8839ef&#34;&gt;by&lt;/span&gt; transition.animateFloat(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt; 9&lt;/span&gt;&lt;span&gt;        initialValue = &lt;span style=&#34;color:#fe640b&#34;&gt;0f&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;10&lt;/span&gt;&lt;span&gt;        targetValue = &lt;span style=&#34;color:#fe640b&#34;&gt;1f&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;11&lt;/span&gt;&lt;span&gt;        animationSpec = infiniteRepeatable(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;12&lt;/span&gt;&lt;span&gt;            animation = tween(&lt;span style=&#34;color:#fe640b&#34;&gt;1000&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;13&lt;/span&gt;&lt;span&gt;            repeatMode = &lt;span style=&#34;color:#df8e1d&#34;&gt;RepeatMode&lt;/span&gt;.Reverse&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;14&lt;/span&gt;&lt;span&gt;        )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;15&lt;/span&gt;&lt;span&gt;    )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;16&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;17&lt;/span&gt;&lt;span&gt;    Column(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;18&lt;/span&gt;&lt;span&gt;        modifier = Modifier&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;19&lt;/span&gt;&lt;span&gt;            .fillMaxSize()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;20&lt;/span&gt;&lt;span&gt;            .verticalScroll(scrollState),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;21&lt;/span&gt;&lt;span&gt;        horizontalAlignment = &lt;span style=&#34;color:#df8e1d&#34;&gt;Alignment&lt;/span&gt;.CenterHorizontally&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;22&lt;/span&gt;&lt;span&gt;    ) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;23&lt;/span&gt;&lt;span&gt;        Text(&lt;span style=&#34;color:#40a02b&#34;&gt;&amp;#34;Contador: &lt;/span&gt;&lt;span style=&#34;color:#40a02b&#34;&gt;${count.value}&lt;/span&gt;&lt;span style=&#34;color:#40a02b&#34;&gt;&amp;#34;&lt;/span&gt;, modifier = &lt;span style=&#34;color:#df8e1d&#34;&gt;Modifier&lt;/span&gt;.alpha(alpha))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;24&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;25&lt;/span&gt;&lt;span&gt;        Button(onClick = {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;26&lt;/span&gt;&lt;span&gt;            scope.launch { count.&lt;span style=&#34;color:#8839ef&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;++&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;27&lt;/span&gt;&lt;span&gt;        }) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;28&lt;/span&gt;&lt;span&gt;            Text(&lt;span style=&#34;color:#40a02b&#34;&gt;&amp;#34;Incrementar&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;29&lt;/span&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;30&lt;/span&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8c8fa1&#34;&gt;31&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;referencias-y-recursos&#34;&gt;Referencias y recursos&lt;a class=&#34;anchor&#34; href=&#34;#referencias-y-recursos&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://kotlinlang.org/docs/home.html&#34;&gt;Documentación oficial de Kotlin&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://developer.android.com/jetpack/compose/documentation&#34;&gt;Documentación oficial de Jetpack Compose&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://developer.android.com/jetpack/compose/state#remember&#34;&gt;Remember en Jetpack Compose&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
  </channel>
</rss>
