Propiedades de diseño Propiedades del texto Propiedades de imagen Ver propiedades Propiedades de la barra de progreso ancho alto orientación tamaño del texto estilo del texto tipo de entrada opcion ime spinnerMode tamaño recurso gravedad gravedad de diseño linea simple líneas activado clicable marcada color del texto color de pista color de fondo imagen de fondo texto pista peso peso total identificador girar relleno margen altura de divisor modo de elección imagen transparencia maximo progreso translacion X translacion Y escala X escale Y vista personalizada el Intento se usa para iniciar una nueva Actividad El archivo se usa para guardar los datos localmente El calendario se usa para calcular la hora y la fecha el Vibrador se usa vibre el dispositivo El temporizador se usa para retrasar ciertas acciones pista de sonido se usa para reproducir efectos de sonido cortos reproductor multimedia se usa para reproducir grandes archivos de sonido Se usa un cuadro de diálogo para crear una ventana emergente animador de objetos se usa para animar ciertas propiedades de una vista En la actividad crear mas bloques al precionar el boton atras Al iniciarse la actividad completa Al activarse la actividad visible En actividad ya no visible al hacer clic al cambiar al seleccionar el item al cambiar el texto al cambiar el progreso al comenzar a analizar tocar... al parar de analizar tocar... al iniciar la pagina al finalizar la pagina al iniciar la animacion al finalizar la animacion al cancelar la animacion al cliquear el item al cliquear por un largo tiempo en la vista personalizada de enlace Definir Cuándo En la actividad crear al precionar el boton atras Al iniciarse la actividad completa Al activarse la actividad visible On la actividad ya no es visible cliquear cambiar cequeao item seleccionado especificación de raíz en el elemento seleccionado texto de la cola modificada iniciada la pagina especificación de raíz en la página iniciada la página de cola terminada progreso del cambio La especificación de raíz en el progreso cambió la cola en el toque de seguimiento de inicio. al dejar de tocar el seguimiento. al animar objeto al dejar de animar el objeto al cancelar la animacion del objeto item cliqueado especificación de raíz en el elemento de cola clicada hace mucho clic en la vista personalizada de enlace Todo Variable Lista Control Matemáticas Operador vista Componente mas bloques setear a setear a incrementar 1 disminuir 1 setear a agregar a insertar a a llegar a de indice en contiene agregar a insertar a a llegar a de indice en contiene agragar clave valor a insertar clave valor a a llegar al valor clave de configurar clave valor a a contiene en clave elimina a de largo de limpiar repetir por siempre detener si entonces si luego ademas si no < = > y o no + - * / % elegir al azal entre y largo de agregar y indice de sustraer a igual contiene remplazar todos los con reemplazar primero RegEx con reemplazar todos RegEx con un numero recortar a mayusculas a minusculas resolver sin decimales resorver con decimal al formato decimal agregar codigo directamente sumergirse obtener píxeles de ancho de pantalla obtener píxeles de alto de pantalla PI (π) E (e) un al cubo mínimo de y máximo de y raíz cuadrada de valor absoluto de redondo hacer techo piso seno coseno tangente arcoseno arcocoseno arcotangente expresion en log grados al radio radio al grado cuando es cliqueado selecionar estado selecionar estado selecionar visibilidad configurar cuando es cliqueado configurar texto el texto selecionar color de fondo selecionar imagen de fondo selecionar color de texto selecionar imagen ajustar rotacion la rotacion de ajustar la trasparencia la trasparecia de ajustar traslacion X de la traslacion X de ajustar la traslaion Y de la traslacion Y de ajustar escala X de la escala X de ajustar escala Y la escala Y de configurar chequeo el chequeo de bloque de recursos bloque para setear pista bloque para setear lista selecionar datos de la lista personalizada ajustar datos de boton de opciones/string> ajustar seleccion la selecion de bloque para setear la barra de progreso el porgreso de ajustar valor maximo el valor maximo de actualizar datos actualizar datos cargar la siguirte direccion la direccion de bloque para selecionar el modo de cache ajustar modo del cache bloque pera poder volver atras para poder volver atras atras siguiente limpiar cache limpiar historial detener acercar alejar configurar accion configurar datos selecionar pantalla ingresar clave extra valor ajustar bandera clave bloque para intentar setear la bandera Iniciar la actividad Actividad clave agregar extra finalizar actividad/string> la clave configurar clave valor remover la llave agregar ahora agragar valor setear valor Formato Diferencia - vibrar por milisegundos despues de milisegundos despues de milisegundos y por siempre cada milisegundso cancelar titulo mensaje mostrar destruir boton si al cliquear boton cancelar al cliquear boton neutro Clicked crear iniciar pausar tratar de obtener duración actual obtener duración de la canción resetear liberar está jugando establecer bucle está en bucle crear cuenta máxima de flujo identificador del sonido: load identificador de secuencia: reproducir el sonido 1 + tiempos parar la secuencia de poner un objetivo propiedades ingresar valor valores establecidos desde bloque de animacion para el cuerpo 1 to duración establecida ajustar el modod de repeticion ajustar contador de repeticion establecer interpoladorr iniciar cancelar está corriendo Toast copiar al portapapeles Título del conjunto de actividades Un índice es negativo o mayor que el tamaño de la lista Un número no se puede dividir por cero Un índice es negativo o mayor que el tamaño de la cadena Lanzado para indicar que la aplicación ha intentado convertir una cadena a uno de los tipos numéricos Declaración inalcanzable o bloque de detención fuera del bloque de repetición o bloqueo para siempre Ocurrió cuando los parámetros de Intent no son válidos Unir dos condiciones Establezca la variable especificada en la condición Variable booleana La condición para verificar si dos cadenas son iguales La condición para verificar si la cadena contiene un valor Reemplaza todo el valor de la cadena al valor dado False condition Un bucle que nunca terminará \ n * Esto debe usarse con stop block Obtenga el texto que el widget muestra el estado habilitado para el widget Verificar la condición \ n - si la condición es verdadera, los bloques dentro de la primera C se activarán, \ ny si la condición es falsa, los bloques dentro de la segunda C se activará Verificar la condición \ n - si la condición es verdadera, los bloques dentro de ella se activarán Cuando se ejecuta la aplicación, el bloque se activa Establece la variable especificada en el número Variable de número Los dos valores colocados uno junto al otro La longitud de la cadena Agregar un elemento a la lista (el elemento va al final de la lista de elementos) con el contenido especificado en él Borrar la lista La condición para verificar si el contenido de un elemento \ &apos es el valor especificado Elimina el elemento de la lista Obtiene el elemento \ &apos; s valor El valor de la posición del elemento Agrega un elemento a la lista (el elemento va donde se especifica en la lista de elementos) con el contenido especificado en él. Cuántos elementos hay en la lista especificada Agregue un (String, String) Map a la lista de Maps Inserta un par (clave, valor) en un Mapa en un cierto índice de la lista de mapas Modificar un par (clave, valor) dentro de un Mapa en un determinado índice de la Lista de mapas Comprobar si el Mapa en un cierto índice de la Lista de Mapas contiene una clave Obtiene la (clave , valor) del Mapa en un determinado índice de la Lista de mapas El valor de la división El resto de la división La condición para verificar si dos valores son iguales La condición para verificar si un valor es mayor que el otro La condición para verificar si un valor es menor que el otro El valor de la resta The valor de la multiplicación El valor de la suma Marca la condición si es falso, no es cierto Une dos condiciones, pero funcionan por separado Elige un número aleatorio entre los dos límites Un bucle que se repite para la cantidad especificada Establece el color de fondo para el widget Establezca el estado habilitado del widget Establecer la imagen seleccionada como el contenido de ImageView Establecer el texto del widget Establecer el color del texto del widget Mostrar el texto en la notificación popup Detener el bucle envuelto El primer índice de la cadena dada, o -1 Establecer la variable especificada en la cadena Variable de cadena Una cadena que contiene el subsecuencia dada de la cadena Convierte al número Convierte a cadena Condición verdadera Devuelve una cadena sin espacios al principio o al final Establece la acción de Intento que se realizará \ nIntent: un componente para cargar una Actividad ( ver) \ n-ACTION_CALL: realizar una llamada a alguien especificado por los datos (permiso: CALL_PHONE) \ n-ACTION_DIAL: marcar un número según lo especificado por los datos (sin permiso) \ n-ACTION_VIEW: mostrar los datos al usuario \ n * Debe agregar \ &apos; Intent \ &apos; en [Componente] para usar esto Establecer condiciones especiales que controlan cómo se maneja esta intención \ n-SINGLE_TOP: Las vistas generalmente se mantienen como una baraja de cartas, apiladas una encima de la otra. Este bloque hace que la aplicación administre las vistas de manera tal que si la vista a la que está a punto de realizar la transición ya se llamaba antes, llevaría esa vista al frente en lugar de poner una nueva vista en la parte superior. \ N-CLEAR_TOP: borra todos las vistas anteriores en la vista actual. \ n * Debe agregar \ &apos; Intent \ &apos; en [Componente] para usar esto Establezca los datos de este Intent en \ n-ACTION_CALL: debe comenzar con "tel:" \ n (EX: "tel: 021111111) \ n-ACTION_DIAL: debe comenzar con" tel: "\ n ( EX: "tel: 021111111) \ n-ACTION_VIEW: debe seguir el formulario de URL que comienza con" http: "o" https: "\ n (EX:" http://google.com ") \ n * Un error en tiempo de ejecución puede ocurrir si no sigue la recomendación \ n * Debe agregar \ &apos; Intent \ &apos; en [Componente] para usar esto Establezca la Actividad (Vista) a realizar \ n * Debe agregar \ &apos; Intent \ &apos; en [Componente] para usar esto Enlazar los datos a Intención \ n * Enviar a la actividad con la tecla: formato de valor \ n * La intención puede tener varias claves y valores \ n * Debe agregar \ &apos; Intención \ &apos; en [Componente] para usar esto Obtener los datos de Intent \ n * Solo se puede recuperar el valor guardado por el bloque Intent PutExtra \ n * Obtener la cadena vacía ("") cuando la clave no existe \ n * Debe agregar \ &apos; Intent \ &apos; en [Componente] para usar esto Iniciar una nueva Actividad por Intención \ n * Puede ocurrir un error de tiempo de ejecución si los parámetros de Intención no son válidos \ n * Debe agregar \ &apos; Intención \ &apos; en [Componente] para usar esto Finalizar la actividad actual Recuperar un valor del archivo de preferencia \ nEl valor guardado por File SetData puede recuperarse \ n * Debe agregar \ &apos; File (Preferencia compartida) \ &apos; desde [Componente] para usar esto Establezca un valor en el archivo de preferencias \ n * La aplicación puede tener varios archivos y un archivo puede tener varios valores \ n * las claves en el archivo deben ser únicas. Si la misma tecla se utiliza varias veces, solo se puede acceder al último valor guardado \ n * formato - clave: valor \ nEx) clave: new_memo, valor: hello \ n * Debe agregar \ &apos; Archivo (Shared Preference \ &apos; desde [Componente] para usar esto eliminar datos de archivo con la siguiente clave Obtener la fecha y hora actual \ n * Debe agregar \ &apos; Calendario \ &apos; desde [Componente] para usar esto Agregue la cantidad de tiempo dada al campo Calendario \ n * Valor positivo: agrega tiempo \ n * Valor negativo: resta tiempo \ n * Necesita agregar \ &apos; Calendario \ &apos; desde [Componente] para usar esto Establezca el campo Calendario en un valor específico \ n * Debe agregar \ &apos; Calendario \ &apos; desde [Componente] para usar esto Formatear el Calendario como una cadena usando el patrón \ nAño (y) | Mes (M) | Día (d) \ nHora (h) 1 ~ 12 | Hora (H) 0 ~ 23 | Minuto (m) | Segundo (s) \ nEx: aaaa-MM-dd hh: mm: ss (2106-01-01 03:01:02) \ nEx: aaaa-MM-dd HH: mm: ss (2106-01-01 15: 01:02) \ nEx: aaaa-MM-dd (2106-01-01) \ nEx: hh: mm: ss (12:01:02) \ n * Un error de tiempo de ejecución si el formato de cadena dado no es válido \ n * Debe agregar \ &apos; Calendar \ &apos; desde [Componente] para usar esto Obtenga las diferencias entre los calendarios (tiempo) \ nUnidad: milisegundos \ n * Debe agregar \ &apos; Calendario \ &apos; desde [Componente] para usar esto Valor de incremento en 1 Decrement Value by 1 actualizar Spinner \ nRefresh Lista del Item usando Spinner poner datos al Spinner \ nDatos Formato: String Seleccionar un elemento spinner en un índice dado \ nSetting un índice mayor que el número de elementos en el spinner dará como resultado un error de tiempo de ejecución Obtiene el índice del elemento spinner seleccionado \ nIndex comienza desde 0 Establecer datos visuales de la lista \ nEstablecimiento de datos para una lista visible \ nData Formato: String Inflar el diseño CustomView en un elemento Actualizar Lista visible \ nRefresh los datos la lista Establecer el valor de un elemento Lista en un índice dado \ nSólo funciona cuando el modo de elecion para una lista es simple o múltiple \ nEstablecer un índice mayor que el número de elementos en Lista resultará en un error de tiempo de ejecución Obtiene el índice del elemento ListView seleccionado \ nOnly Works cuando ChoiceMode para ListView es único o múltiple Obtiene una matriz de índices para los elementos ListView seleccionados \ nOnly Works cuando ChoiceMode para ListView es o bien único o múltiple Obtiene el número de elementos de ListView seleccionados \ nSólo funciona cuando ChoiceMode para ListView es simple o múltiple Obtiene el estado de una casilla de verificación \ nEs cierto si está marcado, de lo contrario es falso Establezca el estado de una casilla de verificación \ nCompruebe si se establece como verdadero, de lo contrario se desmarca Establezca la rotación en un widget Obtenga la rotación de un widget Establecer el valor alfa de un widget Obtener el valor alfa actual de un widget Establecer la traducción X valor de un widget Obtener el valor X de la traducción actual de un widget Establecer la traducción Y valor de un widget Obtener la traducción actual Y valor de un widget Establecer la escala X valor de un widget Obtener el valor actual escala X valor de un widget Establezca la escala Y del valor de un widget Obtenga la escala actual Y del valor de un widget Establezca la visibilidad de un widget \ nVisibilidad Propiedades \ n- VISIBLE: esta vista es visible \ n- INVISIBLE: esta vista es invisible, pero todavía ocupa espacio para fines de diseño \ n- GONE: esta vista es invisible, y no requiere espacio para propósitos de diseño. Vibrar por la cantidad de tiempo establecida \ n- Unidad de tiempo: milisegundo \ n * Debe agregar \ &apos; Vibrador \ &apos; desde [Componente] para usar esto Ejecutar los bloques después de un período de tiempo determinado \ n- Unidad de tiempo: milisegundos \ n * Solo puede configurar una tarea por temporizador \ n * Debe agregar \ &apos; Temporizador \ &apos; desde [Componente] para usar esto Ejecutar los bloques después de un período de tiempo establecido para cada período de tiempo establecido \ n- Unidad de tiempo: milisegundos \ n * Solo puede configurar una tarea por temporizador \ n * Debe agregar \ &apos; Timer \ &apos; desde [Componente] para usar esto Cancela la tarea del temporizador designado \ n- Unidad de tiempo: milisegundo \ n * Debe agregar \ &apos; Temporizador \ &apos; desde [Componente] para usar esto Reemplaza el primer valor de cadena con el valor dado Reemplaza todo el valor de cadena con el valor dado Cambia todos los caracteres a valor de mayúscula Cambia todos los caracteres de la cadena a minúscula Convierte el número en una cadena que incluye el valor decimal Se utiliza para formatear números en un determinado punto decimal. \ nEx: Formando números a 2 decimales toma la entrada de 0.00 Valor de Pi, 3.14159... Valor de e, 2.71828... Calcula la potencia nth del valor dado Calcula el valor más pequeño entre dos valores Calcula el valor más grande entre dos valores Calcula la raíz cuadrada del valor dado Calcular el valor absoluto del valor dado Redondear el valor dado arriba o abajo Redondear el valor dado arriba Redondear el valor dado abajo Calcule la función seno del valor dado Calcule la función coseno del valor dado Calcule la función tangente del valor dado Calcula la función arcosine del valor dado Calcula la función arccosine del valor dado Calcula la función arctangent del valor dado Calcula la función exponencial del valor dado Calcular el registro natural del valor dado Calcular el registro basado en 10 del valor dado Convertir el valor dado a Radian de Degree Convertir el valor dado a Degree de Radian Calcular el valor del dip de dispositivo (dp) usando la entrada Recupere el tamaño del ancho del dispositivo en píxeles Recupere el tamaño de altura del dispositivo en píxeles Cargar la url al WebView Recuperar la url del WebView actual Activar o desactivar el guardar el caché Comprobar si la página anterior está disponible Comprobar si hay próxima página disponible Volver a la página anterior Avanzar una página Limpiar el caché de los sitios web Limpiar el historial de navegación anterior Force detiene la carga Zoom en el WebView Zoom fuera del WebView Set el título de la actividad actual Establecer el mosaico para el diálogo actual Establecer el mensaje de cuerpo para el diálogo Determinar la acción para OK Presionado Determinar la acción para Cancelar Presionado Determinar el action for Neutral Button Pressed Mostrar el cuadro de diálogo Cerrar programadamente el diálogo Inicializar el MediaPlayer con un sonido Iniciar el MediaPlayer Pausar el MediaPlayer Busca el MediaPlayer en milisegundos determinados Obtenga la duración actual en milisegundos Obtenga la duración del sonido en milisegundos Verifique si MediaPlayer está reproduciendo Habilite o deshabilite el ciclo para el sonido Verifique si el sonido está en bucle Restablecer el MediaPlayer al estado inicial, buscando a 0 milisegundos Liberar el sonido que MediaPlayer está manteniendo Inicializar cuántos sonidos puede contener el grupo Cargue la agrupación con un sonido. Devuelve soundID (número) Reproduce el sonido con el soundID correspondiente. Devuelve el streamID (número) Detiene el sonido con el streamID correspondiente Establece el valor del progreso del SeekBar Recupera el valor actual del SeekBar Establece el valor máximo del SeekBar Recupera el valor máximo actual de SeekBar Establezca el objetivo deseado para la animación Establezca la propiedad de animación deseada Establezca el valor valor deseado para la propiedad Establezca el valor inicial y de resultado para la animación Establezca la duración de la animación Establezca si la animación debe repetirse o no Establezca cuántas veces debe repetirse la animación Establezca el tipo de interpolador para la animación Inicie la animación Cancelar la animación Comprobar si la animación está ejecutándose Agregar el código fuente de Java directamente Añadir texto en tu aplicación Agregar TextView y cambiar el valor del texto Incrementar el tamaño de fuente Hacer el texto en negrita Cambiar el color del texto Usar el bloque ajustar texto para cambiar el valor del texto tuto_textview_title_5 unirse a su nombre y apellido juntos tuto_textview_title_6 Mostrando un mensaje tostada con el TextView \ &apos; s de valor tuto_textview_title_7 Creación de una aplicación de la magia 8-Ball tuto_textview_title_8 lugar y posición de widgets diferente La colocación de los widgets horizontalmente Depositar verticalmente diseños Cambio de tamaño a diferentes tamaños Alinear widgets en el diseño Crear diseños sensibles al tamaño de pantalla Mezclar diseños verticales y horizontales Hacer un diseño desplazable Realizar acciones cuando un botón se hace clic Similitudes y diferencias entre una vista de texto y un botón Deshabilitar un botón Cambiar el valor de View de TextView cuando se hace clic en un botón Tomar entrada de usuario Insinuar al usuario para la entrada Configurar el valor predeterminado del cuadro de entrada Configurar el número máximo de líneas que puede mostrar una entrada Deshabilitar el cuadro de entrada Cambiar el tipo de teclado para diferentes tipos de entrada Mostrar la entrada actual del usuario cuando se hace clic en un Botón Activar eventos cada vez que se cambia el valor de entrada Crear un validador de entrada personalizado Mostrar imágenes fascinantes Agregar una imagen Comprender diferentes tipos de escala Crear una presentación de diapositivas de imágenes usando un ScrollView Comprender las imágenes de 9 parches Activar y desactivar Comprender la casilla de verificación y cambiar Alternar el chequeo programáticamente Mostrar/ocultar una imagen basada en el estado verificado Diseña profesionalmente tu aplicación Comprensión de relleno y propiedad de margen Diseño de gravedad vs gravedad Girar un widget Hacer un widget transparente Crear una carga hilandero Navega a una pantalla diferente o aplicaciones Apertura de la aplicación nativa del teléfono Android Abrir un navegador web mediante programación Navegando a una pantalla diferente Comprender el setFlag bloque Guardar y recuperar datos localmente Guardar y recuperar datos Eliminar datos Crear una página de inicio de sesión / inicio de sesión Recordar una opción para el próximo inicio Averigua a qué hora es Recuperación de la hora actual Agregar valor de tiempo al componente de calendario Encontrar la diferencia entre dos veces Configurar un valor de tiempo específico Crear un reloj digital aplicación Vibrar tu dispositivo Vibrar tu dispositivo Retrasar tus acciones Mostrar un mensaje después de 3 segundos Aumentar un número cada 1 segundo Animar a un guepardo en ejecución (Sprite) Crear un cronómetro Agregar un poco de sabor a tu aplicación Agregar y reproducir un archivo de sonido Reproducir y pausar archivo de sonido Infinitamente enlazando un sonido Obteniendo la duración de la canción Crear un piano de 3 teclas Diseñar un reproductor de música Aprender y optimizar tu lógica Intercambiar dos valores de TextViews Imprimir un triángulo de asteriscos Comprobar si un número es par o impar Invertir los elementos de una lista creando una nueva lista Crear una baraja de tarjeta (1/2 ) Barajar una baraja de cartas (2/2) Calculando cuántas veces se repite una palabra ¡Bienvenido al tutorial! Toque la pantalla para continuar Objetivo Ver objetivo Logic Goal Logic Recap Logic Explained Haga clic en la categoría% s Explicación Continuación Prerrequisito Resumen Resumen continuado Haga clic en el botón "Copiar" Haga clic en el botón "Pegar" para pegar el bloque que copió Haga clic en la categoría% s Haga clic en la pestaña% s Haga clic en propiedades Mantenga presionada la tecla \ "% s \" widget Mantenga presionada la tecla \ "% s \" layout Mantenga presionada la tecla \ "% s \" block Agregue el evento% s haciendo clic en el botón + Agregue el componente% s con el nombre de \ "% s \" Agregue el componente% s con el nombre de \ "% s \" y el nombre de archivo de \ "% s \" Algo salió mal. Haga clic en propiedades nuevamente Algo salió mal. Haga clic nuevamente en el evento Seleccione% s Seleccione la opción% s Elija el% s dentro del menú Elija la \ "% s \" image Agregar una vista de actividad named \ "% s \" Agregue un archivo de sonido y asígnele un nombre \ "% s \" ¡Tu \ "% s \" se ha agregado con éxito! Intenta ejecutar e instalar este ejemplo para probarlo ¡Felicidades! Has completado el tutorial ¡Buen trabajo! Presione el botón Atrás para volver al editor Presione el botón Atrás para ver el cambio Presione el botón Atrás para guardar Suelta el% s en el diseño% s Suelta el \ "% s \ "en el editor Colóquelo debajo de \"% s \ "block Colóquelo en el bloque \ "% s \" Colóquelo dentro del bloque \ "% s \" bloque Colóquelo dentro de la condición del bloque \ "% s \" block Colóquelo dentro del primer parámetro del bloque \ "% s \" Colóquelo dentro del segundo parámetro del \ "% s \" block Seleccione \ "% s \" para el primer parámetro Seleccionar \ "% s \" para el segundo parámetro Establecer \ "% s \" para el primer parámetro Establecer \ "% s \" para el segundo parámetro Dado que el cambio ocurre cuando se inicia la aplicación, necesitará EJECUTE la aplicación ¡Perfecto! Así es como puedes agregar widgets al editor Podemos cambiar el valor del texto editando su propiedad La propiedad "texto" se puede cambiar para alterar el valor del texto Prueba a cambiar el valor del texto a lo que quieras Intenta cambiarlo a cualquier otra cosa que no sea \ "% s \" El valor del texto ha cambiado Cambiar el tamaño de la fuente Haga clic en TextView para mostrar la pestaña Propiedades Intente aumentar o disminuir el tamaño de fuente Pruebe a cambiar el tamaño de fuente a un valor diferente El tamaño de fuente ha sido changed Haz textView en negrita a través de sus Propiedades Haz clic en TextView para mostrar la pestaña Propiedades Elija la opción \ "bold \" para el estilo de texto Pruebe a cambiar el estilo de texto a \ "% s \"! ¡TextView ahora está en negrita! Cambiar el color de TextView Hacer clic en TextView para mostrar la pestaña Propiedades Elegir un nuevo color de texto Elegir un nuevo color de texto que no sea \ "% s \ " El color del TextView ha sido cambiado Cambiar el valor de TextView usando el Editor de lógica Esta es la pestaña Lógica La pestaña lógica está compuesta de eventos. Por ejemplo, hacer clic en un botón sería un evento [onCreate] evento se proporciona de manera predeterminada. Es un evento que siempre se activa una vez cuando se inicia la aplicación Permita que \ &apos; s edite este evento para cambiar el valor de TextView cuando se inicia la aplicación Debes terminar este evento Aquí programas cómo se comporta tu aplicación con bloques Puedes usar el bloque setText para cambiar los valores de texto Cambiar el texto valor a lo que quieras Cambiarlo a cualquier otro que no sea \ "% s \" Usa el bloque de operador para unirte con tu nombre y apellido Edita este evento para cambiar el valor de TextView Debes terminar este evento Haz clic en el Operator tab Escribe tu nombre aquí Don \ &apos; t déjalo vacío Escribe aquí tu apellido Use el bloque [Toast] y [getText] Permita que \ &apos; s edite este evento para mostrar un mensaje cuando comience la aplicación Necesita terminar este evento Since el cambio ocurre cuando se inicia la aplicación, deberá ejecutar la aplicación Crear una aplicación Magic 8-Ball ¿Qué es un Magic 8-Ball? El Magic 8-Ball es un juguete utilizado para adivinar o buscar consejos, desarrollado en la década de 1950 y fabricado por Mattel. A menudo se usa en la ficción, a menudo para el humor relacionado con sus respuestas precisas, imprecisas o estadísticamente improbables Este es el Magic 8-Ball Cuando se presiona el botón, cambiaremos el texto "respuesta" Este es el texto de respuesta, que dará respuestas "Sí" o "No" El evento [ask_button \ &apos; onClick] se dispara cada vez que se hace clic en el botón. Permita que \ &apos; s edite este evento 1. Cuando se hace clic en el botón preguntar \ n2. Genera un número aleatorio entre 0 y 1 \ n3. Si el número es 0, muestre "No"; de lo contrario, si 1, muestre "Sí" Puesto que queremos un valor de 0 o 1, ponga "0" aquí Let \ &apos; s put \ "% s \" aquí En nuestra primera condición, vamos a verificar si el número aleatorio es 0. Ponga \ "% s \" aquí Seleccione el \ "% s \" TextView Vamos a cambiar el valor del texto a \ "% s \" Cada vez que se hace clic en el botón preguntar, generamos un número aleatorio entre 0 y 1. \ nSi el número generado es 0, hacemos que el Magic 8-ball diga "Sí", de lo contrario "No." Coloca widgets horizontalmente Coloca el diseño en el editor tuto_layout_1_1 La disposición recibe automáticamente el ancho de "match_parent", ya que \ &apos; sa horizontal diseño Nos tuto_layout_1_2 \ &apos; re va a añadir dos TextView \ &apos; s para el diseño tuto_layout_1_3 Añadir la Vista de Texto a la disposición tuto_layout_1_4 la caída de la primera TextView dentro del diseño tuto_layout_1_5 Let \ &apos; s agregue más TextView a la disposición tuto_layout_1_6 la caída de la Vista de Texto a la derecha de la primera TextView tuto_layout_1_7 se puede ver que el diseño toma en niños horizontal tuto_layout_1_8 Lugar widgets de forma vertical La caída de la disposición en el editor tuto_layout_2_1 La disposición recibe automáticamente la altura de "match_parent", ya que \ &apos; sa disposición vertical Nos tuto_layout_2_2 \ &apos; re va a añadir dos TextView \ &apos; s a la disposición vertical tuto_layout_2_3 Añadir al TextView a la disposición tuto_layout_2_4 la caída de la primera TextView dentro del diseño tuto_layout_2_5 Let \ &apos; s agregue más TextView a la disposición Añadir tuto_layout_2_6 una TextView más a la disposición "Suelta el TextView debajo del primer TextView Puedes ver que el diseño toma verticalmente a los niños Cambia el tamaño de los diseños a diferentes tamaños Te proporcionamos este diseño. Haz clic en el layout Vamos a cambiar el tamaño de este diseño modificando su propiedad Primero trataremos de cambiar el ancho del diseño Intenta cambiar el ancho a "match_parent" La propiedad "match_parent" cambia el ancho del diseño para que coincida con su padre \ &apos; s width Dado que el diseño raíz es el padre y llena toda la pantalla, la El ancho de diseño de "match_parent" llena toda la pantalla Vamos a probar otra opción Intenta cambiar el ancho a \ "% s \" La propiedad "wrap_content" cambia el ancho del diseño para envolver lo que está dentro Como el diseño no tiene nada, se reduce a su tamaño más pequeño Let \ &apos; ¡Prueba la última opción! Intenta cambiar el dp a cualquier valor mayor que \ "% s \" "dp" asigna un ancho fijo al diseño Alinea los widgets en el diseño Le proporcionamos este diseño horizontal. Haga clic en el diseño El diseño que proporcionamos tiene el ancho y la altura de "wrap_content" Vamos a hacer que este diseño ocupe toda la pantalla Intenta cambiar el ancho a " match_parent " Intenta cambiar la altura a "match_parent" Dado que el ancho y el alto son ambos "match_parent", el diseño llena toda la pantalla Vamos a agregar un TextView al diseño Coloca el TextView en el editor ¡Perfecto! Ahora, vamos a alinear el TextView al centro del diseño Haz clic en el diseño lineal que contiene TextView Vamos a cambiar sus propiedades Gravity maneja el posicionamiento de sus widgets para niños Selecciona "center_horizontal" de las opciones Puedes ver que TextView ahora está alineado horizontalmente en el centro Vamos a intentar agregar un diferente gravedad Seleccione las opciones "center_horizontal" y "center_vertical" de las opciones Puedes ver que TextView ahora está alineado en el centro Crea diseños receptivos que son proporcionales en cualquier tamaño de pantalla del dispositivo Proporcionamos dos diseños con el ancho de "match_parent" Vamos a cambiar sus propiedades para que la altura de la relación de diseño Azul a Verde sea de 1: 3 Primero , vamos a editar la propiedad de disposición azul La propiedad de peso determina la cantidad de "proporción" del diseño primario que debe tomar El peso se compara proporcionalmente con otros niños \ &apos; s peso en el mismo diseño Intente cambiar el peso a \ "% s \" Dado que el peso del diseño azul es 1 y el peso del diseño verde es 0, El diseño azul ocupa la mayor cantidad posible de espacio Ahora, vamos a editar \ &apos; s propiedad También cambiaremos su peso Dado que ambos diseños tienen una peso de 1, ocupan la misma cantidad de espacio con la proporción de 1: 1 Vamos a intentar cambiar el peso verde a \ "% s \" Dado que el diseño azul tiene un peso de 1 y el diseño verde tiene un peso de 3, toman subir el espacio con la proporción de 1: 3 Mezclar diseños orientados de forma diferente Suelta la disposición horizontal en el editor Vamos a hacer que este diseño llene toda la pantalla Prueba a cambiar la altura a "match_parent" Dado que la ancho y alto son ambos "match_parent", el diseño llena toda la pantalla Vamos a agregar diseños orientados de manera diferente al diseño que hemos colocado anteriormente Coloca el diseño en la disposición horizontal colocamos previamente Vamos a agregar dos vistas de texto a la disposición vertical que acabamos de colocar Agregar dos vistas de texto a la disposición vertical Coloca el primer TextView dentro del diseño vertical Deja que \ &apos; s agregue otro TextView Coloca el TextView en cualquier lugar dentro del diseño vertical Los widgets se colocan horizontal y verticalmente dependiendo de la orientación del diseño al que los agregue Soltar el diseño a la derecha de la disposición vertical Vamos a agregar dos TextView \ &apos; s en el diseño horizontal que acabamos de colocar añadir dos TextView \ &apos; s en el diseño horizontal que acaba de colocar tuto_layout_6_15 La caída de la primera TextView a la disposición tuto_layout_6_16 Let \ &apos; s agregue más TextView a la disposición tuto_layout_6_17 la caída de la TextView en cualquier lugar dentro de la disposición horizontal tuto_layout_6_18 la TextView \ &apos; s se colocan horizontalmente dentro de la disposición horizontal Nos tuto_layout_6_19 \ &apos; hemos añadido widgets de éxito en diferentes orientaciones utilizando diseños con orientación diferente Haz un diseño desplazable Suelta el diseño de desplazamiento en el editor Los diseños de desplazamiento pueden tomar solo UN diseño o widget Cualquier cosa dentro del diseño de desplazamiento se vuelve desplazable, incluso widgets Sin embargo, es ideal para agregar un diseño lineal dentro del diseño de desplazamiento Soltar el diseño lineal horizontal dentro del diseño de desplazamiento El desplazamiento y el diseño lineal generalmente comparten la misma orientación. En este caso, ambos son horizontales Vamos a agregar un TextView largo dentro del diseño horizontal para forzar el diseño a desplazarse Coloca el TextView dentro del diseño lineal Let \ &apos; s aumenta este ancho de TextView \ &apos; s por lo que el diseño se vuelve desplazable Intenta cambiar el dp a \ "% s \" Intenta ejecutar e instalar este ejemplo para probarlo Comprender las similitudes y las diferencias entre un TextView y un Botón Suelta el botón en el editor Un botón comparte las mismas propiedades de texto con TextView Por ejemplo, puede cambiar el texto de un botón editando la propiedad "text" Let \ &apos; s volver al editor presionando el botón Atrás A diferencia de TextView, el evento "onClick" de Button \ "se genera automáticamente cada vez que se agrega un widget Button al Editor de vistas Este evento se dispararía cada vez que se haga clic en el Botón Necesitas terminar este evento Deshabilitar el botón Le proporcionamos este botón. Haga clic en él Puede desactivar el botón editando su propiedad "habilitada" Alternar el interruptor para deshabilitar el botón Dejar que \ &apos; s volver al editor Deshabilitar el botón cuando se hace clic Soltar el botón aquí Vamos a editar el botón \ &apos; s evento clickClick Cambiar el valor de TextView cuando el botón se hace clic Soltar el botón debajo de TextView El evento onClick del botón se dispara cada vez que se hace clic en el botón Vamos a editar el evento para que el texto cambie cuando se hace clic en el botón Haz clic en la pestaña Ver para encuentra el bloque setText Cambia el valor del texto a lo que quieras Cambia el valor a cualquier cosa que no sea \ "% s \" Cambia la sugerencia de un cuadro de entrada EditText tiene la sugerencia predeterminada de "Editar texto" "sugerencia" es el valor de texto que sugiere al usuario lo que debe ingresar Vamos a cambiar el valor de sugerencia editando su propiedad La "sugerencia" La propiedad maneja el valor del texto de la indirecta. Intente cambiarlo a cualquier valor sugerido que desee El valor sugerido ha cambiado Cambiar el valor de texto predeterminado de un cuadro de entrada EditText tiene un valor de texto vacío hasta que el usuario escriba algo en Puede establecer inicialmente el valor del texto editando su propiedad Vamos a cambiar el valor del texto predeterminado editando su propiedad La propiedad "text" maneja el valor de texto del EditText Prueba a cambiar el valor del texto a cualquier valor que desees ¡Intenta cambiarlo a cualquier cosa que no sea un valor vacío! El valor de texto predeterminado se ha cambiado Establezca el número máximo de líneas que puede mostrar una entrada De forma predeterminada, EditText solo muestra una línea de texto Let \ \ n cambiar el número de líneas que muestra editando su propiedad La propiedad "líneas" determina cuántas líneas mostrará EditText Pruebe a cambiar el valor a% s El widget EditText ahora puede mostrar las líneas de texto% s Deshabilitar el cuadro de entrada A veces, podemos deshabilitar el widget EditText para que el usuario no pueda ingresar nada Let \ &apos; s deshabilitarlo editando su propiedad Desactívelo haciendo clic en el modificador El EditText está deshabilitado y el usuario no podrá ingresar ningún valor Cambia la propiedad de tipo de entrada a "textPassword" A veces, podemos querer que el EditText tome información sensible como la contraseña y la censure Vamos \ &apos; s cambiar el tipo de entrada editando su propiedad Vamos a cambiar el tipo de entrada a "textPassword" El texto de edición ahora censurará el valor de texto que toma Mostrar el valor de entrada actual cuando se hace clic en el botón Cuando se hace clic en el botón, deseamos mostrar el valor actual de EditText El botón \ &apos; s evento onClick se dispara cada vez que se hace clic en el botón Permitir \ &apos; s editar el evento para que el valor de texto de EditText aparezca cuando se hace clic en el botón Incendiar un evento siempre que se ingrese un nuevo valor Cuando el usuario ingrese cualquier valor en EditText, vamos a mostrarlo nuevamente en la pantalla A diferencia del widget Botón, los eventos de EditText \ &apos no se agregan automáticamente El evento EditText \ "apuntaTextChanged" recibe el evento disparado cada vez que se cambia el valor del texto Permitir \ &apos; s editar el evento para que el valor de texto de EditText aparezca cuando se cambia \ &apos; s El bloque púrpura en el bloque raíz indica el valor de texto modificado Colóquelo en el parámetro del bloque Toast Cree un validador de entrada personalizado con un filtro de palabras Cualquier entrada con la palabra "odio" activará un mensaje de advertencia Vamos a mostrar el mensaje de advertencia aquí Vamos a ocultar inicialmente el mensaje de advertencia cuando se inicia la aplicación Establezca el mensaje de advertencia predeterminado en un mensaje vacío Seleccione el \ "% s \" TextView Dejaremos esto vacío, ya que queremos que sea una cadena vacía El evento "onTextChanged" se ha agregado correctamente Permitir \ &apos; s editar este evento para validar la oración cada vez que se produce el cambio de texto 1. Cada vez que ocurre un cambio, el evento "onTextChanged" se activa \ n2. Verifique si la entrada contiene la palabra "odio" \ n3. Si lo hace, muestre un mensaje de advertencia; de lo contrario, establezca el mensaje de advertencia como una cadena vacía Puesto que estamos filtrando la palabra "odio", pon "odio" aquí Colóquelo dentro de la subsección "if then" Colóquelo dentro de la subsección "else" Ingrese un mensaje de advertencia que desea mostrar, que no sea un valor de cadena vacío Dejaremos esto vacío, ya que no queremos ocultar el mensaje de advertencia si no contiene ninguna palabra filtrada Agregue una imagen de su elección El menú botón en la esquina superior derecha contiene diferentes administradores que manejan diferentes partes de la aplicación Dentro del Administrador de imágenes, puede agregar diferentes tipos de iconos e importar sus propias imágenes desde el rollo de la cámara Let \ Además, intenta agregar nuestra propia imagen haciendo clic en el botón + Importa la imagen y nómbrala \ "% s \" ImageView tiene un ícono de Android gris de forma predeterminada Vamos a cambiarlo a la imagen que acabamos de agregar La imagen ha sido cambiada Comprender diferentes propiedades del tipo de escala Hemos proporcionado esta ImageView con el ancho y la altura de "match_parent" para ti Haz clic en ImageView Diferentes tipos de escala cambian la forma en que se muestra la imagen Prueba a cambiar el tipo de escala a \ "% s \" El tipo de escala para ImageView ha cambiado a \ "% s \ " El tipo de escala" FIT_XY "se estira para ocupar el espacio dado, ignorando la relación de imagen Vamos a probar una propiedad de tipo de escala diferente " FIT_START "tipo de escala se estira para ocupar el espacio indicado, mantiene la relación de imagen y alinea la imagen superior El tipo de escala "FIT_CENTER" se estira para ocupar el espacio indicado, mantiene la relación de imagen y alinea el centro de la imagen El tipo de escala "FIT_END" es similar a "FIT_START" y "FIT_CENTER", excepto que alinea el fondo de la imagen "CENTER" mantiene el tamaño de la imagen mientras lo alinea con el centro "CENTER_CROP" escala la imagen uniformemente de modo que tanto el ancho como la altura de la imagen sean iguales o mayores que el dimensión correspondiente de la disposición "CENTER_INSIDE" escala la imagen de manera uniforme para que tanto la anchura como la altura de la imagen sean iguales o inferiores a la dimensión correspondiente del diseño Intente cambiar el tipo de escala a \ "% s \" Hacer una presentación de diapositivas de imágenes desplazables Vamos a intentar agregar nuestra propia imagen haciendo clic en el botón + Agregue una imagen de su elección con el nombre de \ "% s \" Nombre su imagen importada \ "% s \ " Los diseños de desplazamiento pueden tomar solo UNA disposición o widget Cualquier elemento dentro del diseño de desplazamiento se puede desplazar, incluso los widgets Sin embargo, es ideal para agregar una línea diseño dentro del diseño de desplazamiento Soltar el diseño lineal horizontal dentro del diseño de desplazamiento El desplazamiento y el diseño lineal generalmente comparten la misma orientación. En este caso, ambos son horizontales Vamos a agregar dos imágenes Coloca el ImageView dentro del diseño lineal Vamos a cambiar la imagen a través de sus propiedades Elija \ "% s \" image Let \ &apos; s agregar un ImageView más en el diseño lineal Vamos a cambiar la imagen a través de sus propiedades Elija la imagen \ "% s \" Entienda nueve imágenes de parche Nueve imágenes de parche Nueve imágenes de parche son imágenes de mapa de bits que cambian de tamaño automáticamente para acomodar el contenido de la vista y el tamaño de la pantalla Nine Patch Images Continuación Vamos a aplicar una imagen de nueve parches a diferentes widgets para ver cómo se ven afectados Haz clic en el widget TextView para editar sus propiedades Vamos a cambiar la imagen de fondo a través de sus propiedades Haz clic en el diseño lineal para editar sus propiedades Haz clic en el widget Botón para editar sus propiedades Como puedas ver, aunque utilizamos un archivo de imagen, se ajusta automáticamente al tamaño de todos los widgets/diseños Es por eso que las imágenes de ninepatch son útiles para crear diseños sensibles en diferentes tamaños de pantalla Comprender la casilla de verificación y el interruptor widget Hemos proporcionado dos widgets para usted, una casilla de verificación y un conmutador Estos dos widgets se usan comúnmente \ n para tener usuarios \/apos; s YES/NO input Por ejemplo , por lo general, puede encontrar casillas de verificación en las pantallas de inicio de sesión, con descripciones como \ "% s \" Switch se puede usar con el mismo concepto, solo proporciona una interfaz de usuario diferente y experiencia Both Checkbox and Switch se utilizan para tomar la entrada SÍ/NO del usuario Para las casillas de verificación, más de una de ellas se coloca generalmente para tomar múltiples entradas Vamos a intentar cambiar esto para que se compruebe editando su propiedad Alternar el \ "% s \" switch Similar a Checkbox, puedes alternar en el Switch de la misma manera editando su propiedad Activa la casilla de verificación con un clic de un botón Suelta el botón debajo de CheckBox Cuando se hace clic en el botón, verificaremos/desmarcaremos la casilla de verificación según su estado actual Vamos a editar el botón de evento onClick para que el estado de verificación cambie cuando se hace clic en el botón Antes de continuar, pensemos en cómo deberían ser los bloques colocado 1. Obtenga el estado actual de la casilla \ n2. Si la casilla de verificación está marcada, desactívela \ n3. De lo contrario, compruébelo Vamos a aprender más sobre% s block Los bloques en "if (condition) then" se ejecutan si la condición es verdadera, de lo contrario los bloques en "else" se ejecutará Alternar la visibilidad de una imagen con a con un CheckBox Suelta la casilla de verificación debajo de ImageView Cuando se hace clic en la casilla de verificación, mostraremos/ocultaremos la imagen Primero, vamos a cambiar el texto de la casilla Prueba a cambiar el valor del texto a \ "% s \" Alterna el modificador \ "% s \", ya que la imagen será visible en el primer lanzamiento ¡Agradable! El CheckBox ha sido editado "El evento CheckBox &apos; s onCheckChanged" se activa cada vez que se activa el valor de control Vamos a editar el evento para que la imagen se muestre/oculte según el valor de verificación Antes de continuar, piense en cómo deberían colocarse los bloques 1. Si CheckBox está marcado, muestre la imagen \ n2. De lo contrario, oculte Let \ &apos; s revisa el bloque if/else Los bloques en "if (condition) then" se ejecutan si la condición es verdadera, de lo contrario los bloques en "else" serán ejecutados El bloque morado en el bloque raíz indica el valor CheckBox modificado Comprender la propiedad de relleno y margen Espaciado El espaciado entre widgets es muy importante para el diseño de la aplicación. Usamos margen y relleno para mantener el contenido separado de otros widgets, dando espacio adicional alrededor o dentro de él Relleno El relleno representa el espacio interior de un elemento. De forma predeterminada, Sketchware proporciona 8dp de relleno a cada widget cuando se coloca El diseño azul tiene un relleno de% dp, por lo que hay un espacio entre dos diseños Primero, vamos \ &apos; s haga clic en el diseño azul Pruebe a cambiar el relleno a \ "% s \" El relleno aplicado proporcionó más espacio entre dos diseños El margen representa el espacio exterior de un elemento. De forma predeterminada, Sketchware no proporciona margen al widget cuando se coloca Ahora, deje que \ &apos; s haga clic en el diseño azul para editar el margen Intenta cambiar el margen a \ "% s \" Ahora hay espacio en el exterior del diseño azul Comprensión de Gravedad vs Gravedad de diseño En el tutorial "Diseño" categoría, aprendimos a alinear los widgets usando la propiedad "gravedad" La propiedad "gravedad" establece la gravedad del contenido de la vista que se usa en La propiedad "layout_gravity" establece la gravedad de sí misma en su elemento primario Vamos a intentar \ cambiar el \ "% s \" El diseño se ha alineado al lado derecho de its parent Rotar un widget cambiando la propiedad "rotate" Cada widget viene con una propiedad "rotate". Por defecto, los widgets tienen un valor de rotación de 0 Vamos a intentar cambiar su valor de rotación Intenta cambiar el valor de rotación a \ "% s \" El diseño ha girado \ "% s \" degrees Haz un widget transparente cambiando su valor "alfa" Cada widget viene con una propiedad "alpha", que determina la transparencia El valor alfa va de 0.0 a 1.0. De forma predeterminada, los widgets tienen un valor alfa 1.0 o una visibilidad del 100% tuto_styling_4_2 Let \ &apos; s intentan cambiar su valor alfa tuto_styling_4_3 Intente cambiar el valor alpha a \ "% s \" tuto_styling_4_4 La disposición y el contenido en el interior tiene ahora \% s \ " "transparencia tuto_styling_4_5 Crear una ruleta de carga tuto_styling_5_0 Si usted no ha \ &apos; t completaron los tutoriales para 'componente Timer', por favor complete antes de probar este Aquí, hemos proporcionado una ImageView con una imagen de rotación de carga Empezaremos a girar la ruleta cuando se inicie la aplicación 1. Crear una variable de número de "rotación" que mantenga un registro de el valor de rotación actual \ n2. Usando el bloque "Temporizador cada", aumente el valor de "rotación" en 1 cada 5 milisegundos \ n3. Aplica el nuevo valor de rotación a ImageView Crear una variable de número llamada \ "% s \" La variable de rotación se utilizará para realizar un seguimiento del valor de rotación. Su valor predeterminado es 0 Vamos a ejecutar este bloque después de \ "% s \" milisegundo Vamos a actualizar el valor de rotación cada \ "% s \" milisegundos Seleccione la \ "% s \" Variable de número Seleccione el \ "% s \" ImageView Usando el bloque "Temporizador cada", aumentamos la variable de número "rotación" en 1 cada 5 milisegundos. Luego, aplicamos el nuevo valor de rotación al "spinner" ImageView Navega a una pantalla diferente ¿Qué es una Intención? Una intención es una "intención" para realizar una acción, como abrir una aplicación o pasar a una nueva pantalla Al hacer clic en el botón de navegación, navegaremos a% s que \ &apos ; visto en este tutorial Usaremos el componente Intent para navegar a una pantalla diferente Vamos \ &apos; s navegar a una pantalla diferente cuando se hace clic en el botón de navegación Cuando se hace clic en el botón, use el bloque "setScreen" y "startActivity" para navegar a una pantalla diferente Intención setScreen Podemos usar el bloque "Intent setScreen" para determinar a qué pantalla intentamos navegar Podemos usar el bloque "startActivity" para llevar a cabo el intento de nuestra acción Abra la aplicación nativa del teléfono Android Funciones de intención El intento se puede usar para abrir otras aplicaciones, como un navegador o una aplicación de teléfono Vamos a intentar abrir la aplicación del teléfono nativo cuando se haga clic en este botón Permitir \ &apos; s editar el botón abierto \ ondeClick evento Seleccione la opción \ "% s \" El bloque "setAction" determina qué acción seguirá. En este caso, establecemos la acción de la intención de abrir el "dial" o la aplicación del teléfono Enter \ "% s \" en el segundo parámetro El bloque "setData" puede transportar datos junto con la acción. En este ejemplo, vamos a llevar los datos telefónicos de "1234". Tenga en cuenta que el prefijo de los datos podría cambiar dependiendo de la acción El bloque "startActivity" desencadena la acción de la Intención Programáticamente llama a un número de teléfono Funciones de Intento Intent Component también se puede usar para marcar un número de teléfono mediante programación Vamos a llamar al número deseado cuando se presione el botón de llamada Vamos a editar el botón de llamada \ ondeClick evento Seleccione el \ "% s \" opción La acción \ "% s \" llama al número deseado Enter \ "% s \" en el segundo parámetro El bloque "setData" puede transportar datos junto con la acción. En este ejemplo, vamos a llamar al número de teléfono "1234". Tenga en cuenta que el prefijo de los datos podría cambiar dependiendo de la acción El bloque "startActivity" desencadena la acción de la Intención Programáticamente abre un navegador web Abriremos el navegador cuando se hace clic en este botón Permitir \ &apos; s editar el botón Abrir \ &apos; s evento onClick Seleccione la opción \ "% s \" Enter \ "% s \" en el segundo parámetro El bloque "setData" puede transportar datos junto con la acción. En este ejemplo, \ &apos; re giong para abrir una vista con los datos de "https://google.com" El bloque "startActivity" activa la acción de Intent. En este caso, el componente Intent abrirá un navegador Transferir datos a otra pantalla Cuando se hace clic en este botón, navegaremos a \ "% s \" y transferiremos el valor de EditText arriba Haz clic en el selector de archivos para navegar al Editor lógico de \ "% s \" Vamos a recibir los datos transferidos cuando la Actividad haya sido creada nuevamente dentro del evento "onCreate" Finalizar una actividad Actividad de acabado Al igual que cómo podemos iniciar una actividad, podemos terminar una actividad. Aunque la función no depende del Componente de intención, está muy relacionada Cuando esto haga clic en el botón, cerraremos la actividad actual Vamos a editar el botón cerrar \ &apos; s evento onClick para cerrar la actividad Cuando se hace clic en el botón Cerrar, cerraremos la actividad. Una vez más, tenga en cuenta que este bloque no depende del Componente de intención Entender "bloque setFlag" ¿Qué es Flag? En la programación, el indicador es una variable que generalmente indica algún estado del programa "Por ejemplo, supongamos que tiene un programa que muestra una vista, pero el usuario puede alternar la visibilidad de la vista con un booleano variable llamada \ "visible \", con verdadero que lo indica \ &apos; s visible y falso que lo indica \ &apos; s no. En este caso, la variable "visibilidad" es el indicador que determina la visibilidad Cuándo use el bloque "setFlags"? El bloque "setFlags" solo es útil cuando quiere navegar a otra pantalla dentro de la aplicación. Se explicará con más detalle más adelante en este tutorial Let \ &apos; s encuentra el bloque "setFlags" dentro del evento "onCreate" El bloque "setFlags" solo se da cuando agrega el componente "Intent" Tipos de banderas Dentro de Sketchware, le proporcionamos dos tipos de bandera de intención: \ n1. SINGLE_TOP \ n2. CLEAR_TOP El indicador superior único organiza las vistas de manera tal que si la vista a la que estás a punto de realizar la transición ya se llamaba antes, llevaría esa vista a la parte superior en lugar de poner otra copia en la parte superior. Borrar arriba borra todas las vistas anteriores después de navegar a la pantalla deseada 1. Guarde los datos localmente \ n2. Cargue y muestre los datos guardados en TextView Archivo explicado Utilizando el Componente de archivo, puede guardar datos utilizando la biblioteca de preferencia compartida nativa de Android \ &apos; s "Guardaremos el valor del EditText cuando presionemos este botón Luego, cargaremos el valor de los datos guardados en este TextView Vamos a editar el botón de guardar \ &apos; s evento onClick para guardar los datos cuando sea necesario Let \ &apos ; s poner \ "% s \" como valor de clave Colóquelo dentro del segundo parámetro del bloque "Archivo setData" Seleccione el \ "% s \" EditText setData Block Explained El bloque "setData" guarda los datos localmente en el formato "[clave, valor]". Guardamos y recuperamos el valor con la misma clave Vamos a cargar los datos guardados dentro del botón de carga \ ones evento onClick Load Logic Goal We \ &apos; volverá a cargar el valor guardado y cambiará el texto de TextView con el valor cargado Colóquelo dentro del primer parámetro de TextView Vamos a usar la misma clave que usamos para cargue el valor que guardó, \ "% s \" ile Load El componente File se puede usar en todas las pantallas para guardar y cargar el valor del mismo archivo, siempre que el nombre del archivo sea idéntico Eliminar datos del archivo compoonent Friendly Reminder Este tutorial es muy similar al anterior. Si tiene \ &apos; t, ¡complete el tutorial anterior! Guardaremos el valor del EditText cuando presionemos este botón Entonces, cargaremos el valor de los datos guardados en este TextView Nosotros hemos proporcionado el Componente de Archivos para usted También le hemos proporcionado cierta lógica Al igual que el anterior tutorial, guardamos localmente el valor del EditText con la clave de \ "% s \" Let \ &apos; s verifique el \ "% s \" event Aquí, cargamos los datos con la clave de \ "% s \" y actualice el valor de TextView \\ Nuestro trabajo es completar el evento \ "% s \" Eliminar el valor del componente de archivo con la clave de \ "% s \" Let \ &apos; s eliminar los datos con el valor clave de \ "% s \" Cosas que probar después de la instalación 1. Guarde cualquier dato ingresando cualquier dato en EditText y haciendo clic en "guardar" \ n2. Cargue los datos haciendo clic en el botón "cargar" \ n3. Elimine los datos haciendo clic en el botón "eliminar" e intente cargar los datos nuevamente Crear una página de inicio de sesión / inicio de sesión con la base de datos local Crearemos una página donde podamos suscribirse y login El usuario ingresará su nombre de usuario aquí Y aquí la contraseña Si el usuario intenta iniciar sesión con una cuenta que no existe, les diremos Regístrese primero Y si existe una cuenta, le mostraremos un mensaje que dice "Login Success!" Hemos proporcionado un componente de archivo \ "% s \" con el nombre de archivo de \ "% s \" Vamos a manejar el evento de registro primero 1. Compruebe si el usuario realmente completó el nombre de usuario y la contraseña \ n2.Si uno de ellos está vacío, muestre un mensaje que indique que deben completar ambos formularios \ n3. Si ambos están completados, verifique si existe el nombre de usuario \ n4. Si no existe, guarde su información de inicio de sesión localmente " Dentro de la instrucción if, comprobamos dos condiciones Primero, comprobamos si el nombre de usuario tiene texto midiendo y comparando su longitud Además, comprobamos si el usuario tecleó algo para la contraseña Si uno o ambos no se completan, les decimos que ingresen Seleccione el \ "% s \ "EditText Aquí, estamos? comprobando si ya existe una cuenta con el mismo nombre de usuario. Queremos que cada nombre de usuario sea único, así que no podemos sobrescribir el nombre de usuario existente Dígale al usuario "¡El nombre de usuario ya existe! Primero comprobamos si se ha completado el nombre de usuario y la contraseña. Luego, comprobamos si el nombre de usuario ya está tomado. Si no se toma, guarde la información de inicio de sesión en el formato "[clave, valor]", con la clave siendo el nombre de usuario y el valor que es la contraseña Vamos a manejar el evento de inicio de sesión ahora La lógica es muy similar a la lógica de registro. Verificamos si el usuario ingresó la contraseña y el nombre de usuario, y luego verifica si el nombre de usuario existe en el archivo . Aquí, en cambio, cuando el nombre de usuario expira, intentamos iniciar sesión. Si la contraseña coincide con la contraseña guardada, las iniciamos. Si no se guarda ningún nombre de usuario en el archivo, les decimos que se registren primero Tenga en cuenta que hay un bloque "no" para verificar si el nombre de usuario existe Mostrar el mensaje% s Hay dos casos. Si el nombre de usuario existe, intentamos iniciar sesión; si la contraseña coincide con la que se guardó, logramos iniciar sesión correctamente, de lo contrario, falla. Si el nombre de usuario no existe, alertamos al usuario para que se registre primero Recuerde una opción para el próximo lanzamiento Cuando se abra la aplicación, recordaremos la entrada anterior y la cargaremos Hemos proporcionado un componente de archivo \ "% s \" con el nombre de archivo de \ "% s \" Primero intentamos cargar desde el archivo cuando se inicia la aplicación 1. Compruebe si el valor de verificación existe en el archivo \ n2. Si existe, recupere el valor del valor de comprobación \ n3. Vamos a configurar CheckBox para que se compruebe si el valor es 1, de lo contrario no se marca Mantendremos el valor de verificación bajo el nombre de clave de \ "% s \" Estamos recuperando el valor con la clave de \ "% s \" Compruebe si el valor es igual a \ "% s \" Seleccione el \ "% s \ "CheckBox Primero comprobamos si existe el valor de verificación en el archivo. Cuando la aplicación se abra por primera vez, no tendrá este valor. \ nSi el valor existe, actualizamos el CheckBox según su valor - 0 o 1 Guardando CheckBox State Manejamos la parte de carga. Ahora, dejemos que \ &apos; s manejemos la parte salvadora Guardaremos el nuevo valor de CheckBox cada vez que se actualice Establezca la clave como% s Cuando el valor del CheckBox se actualice, actualizaremos la clave de "check" dentro del Componente de archivo con el valor de 0 o 1 según el valor de verificación Recuperar la hora actual y mostrarla con TextView Permitir \ &apos; s editar el evento "onCreate" para recuperar la hora en que el la aplicación comienza El componente de calendario \ &apos; s "getNow" bloquea recupera la hora actual Formato del calendario El calendario se puede formatear en formatos numéricos. Por ejemplo, \ n \ n1-1-1990 \ n01-01-1990 \ n1 de enero de 1990 \ n \ ntodos los formatos de fecha Escribe el formato \ "% s \" Este formato debería mostrar la fecha en el formato de \ "% s \" Cuando se inicia la aplicación, el bloque "getNow" obtendrá la hora actual. Luego, estableceremos el valor de TextView \ 's en el tiempo formateado Haz clic en el botón Atrás para volver al editor Agregar tiempo al componente Calendario El TextView mostrará el día actual Cuando hagamos clic en el botón, agregaremos un día al día actual Vamos a editar el evento "onCreate" para mostrar el día en TextView cuando se inicia la aplicación Cambia el valor de TextView \ to a la hora actual \ &apos; s valor de día Selecciona el \ "% s \" TextView Vamos a volver a la categoría de Componentes Dado que solo queremos el día, configura el formato como \ "% s \" Cuando se inicia la aplicación, el componente Calendario recuperará el hora actual y cambiar el valor de TextView al día correspondiente Permitir editar el botón Agregar día sobre el evento onClick para agregar el día 1. Agregar un día al componente de calendario \ n2. Actualice el valor de TextView \ to los valores actualizados del Calendario Elija la opción \ "% s \" Puesto que queremos agregar un día, agregue 24 horas Siempre que haga clic en el botón, agregará 24 horas hasta el componente Calendario actual y actualice TextView con el nuevo valor del día Encuentre la diferencia entre dos valores temporales Vamos a mostrar la diferencia de dos veces aquí Un componente de calendario puede contener un único valor de tiempo. Proporcionamos dos componentes de calendario para que pueda encontrar la diferencia entre los dos Vamos a ver el evento "onCreate" Aquí, ya hemos proporcionado la hora para los dos componentes del Calendario Primero obtenemos la hora actual para el primer componente del Calendario , \ "% s \" Entonces, obtenemos la hora actual para el segundo componente del Calendario, \ "% s \" Por el bien del ejemplo, hemos agregado una segundo adicional al componente de calendario \ "% s \" Diferencia horaria Ahora, vamos a encontrar la diferencia entre estos dos componentes del calendario y mostrar el valor en TextView Seleccione el \ "% s \" TextView toString Block Dado que la diferencia es un formato de número, podemos \ &apos; t establecer inmediatamente el texto en el valor de la diferencia. Necesitamos cambiar el formato de "Número" a "Cadena" para que los bloques coincidan toString sin decimal La diferencia entre "sin decimal" y "con decimal" es que " sin decimal "mostrará el Número sin ningún punto decimal Seleccione el componente \"% s \ "Calendario 1. Establezca el componente Calendario" c2 "para que tenga 1 segundo más que el" c1 "Componente del calendario \ n2. Establezca el valor de diferencia de tiempo en el \ "diff \" TextView utilizando el bloque \ "toString \" y \ "Diferencia \" \ n3. La diferencia se mostrará en milisegundos. 1 segundo es equivalente a 1,000 milisegundos Establecer un valor de tiempo específico En lugar de recuperar la hora actual, a veces es posible que tengamos que asignar un valor de tiempo específico al componente Calendario Vamos a \ &apos; s establecer un valor de tiempo específico y mostrarlo en este TextView Permitir \ &apos; s editar el evento "onCreate" para establecer una hora específica y mostrarla Seleccionar la opción \ "% s \" Let \ &apos; s input \ "% s \ "para el año Let \ &apos; s input \"% s \ "para el mes A pesar de que ingresamos 0 para el mes, en realidad mostraría enero, ya que los meses comienzan desde 0 en el lenguaje de programación Java Let \ &apos; s solo muestra el año y el mes ingresando \ "% s \ " 1. Establezca el valor AÑO en 1990 \ n2. Establezca el valor MONTH en 0 (Tenga en cuenta que enero es 0) \ n3. Actualiza TextView con el formato adecuado Crea una aplicación de reloj digital Vamos a usar el Calendario para recuperar el tiempo y mostrarlo en este TextView Hemos proporcionado dos componentes, Temporizador y Calendario, para usted Vamos a ejecutar el reloj tan pronto como comience la aplicación 1. Usando el bloque "Temporizador... cada", recuperaremos el tiempo cada segundo \ n2 Con el tiempo recuperado, formatearemos el texto y lo mostraremos en TextView Vamos \ &apos; s iniciar este bloque después de% s ms Queremos que este bloque para repetir todos los% s ms Seleccione la tuto_calendar_5_6 \ "% s \" Vista de Texto tuto_calendar_5_7 Enter "hh: mm: ss" para el formato, ya que queremos que el reloj " horas: minutos: segundos" tuto_calendar_5_8 1. 'temporizador de cada' bloque recupera el tiempo cada 1 segundo \ n2. Recuperamos la hora actual usando el bloque "Calendario getNow" y actualizar el TextView con el valor recuperado tuto_calendar_5_9 Crear una aplicación de cuenta regresiva de cumpleaños tuto_calendar_6_0 Let \ &apos; s primero llenar los datos del hilandero en el "onCreate" caso tuto_calendar_6_1 en primer lugar, vamos a \ &apos; s crear una lista de cadena denominado \ "% s \" "Permita que se cree una variable de número llamada \"% s \ " Esta variable de número se usará para agregar los años de 1990 a 2010 en \"% s \ " Seleccione el \ "% s \" Variable de número Puesto que queremos que el año comience a partir de 1990, ingrese "1990" aquí Puesto que queremos agregar% s años a partir de 1990, "% s \" here La razón por la cual \ &apos; s 21 es que 1990 se agrega a la lista antes de que aumente "temp_year", a diferencia de los meses Seleccione la \ "% s \" Lista de cadenas Seleccione el \ "% s \" Spinner Seleccione la \ "% s \" Lista Let \ &apos; s poblar los datos por días ahora Primero, vamos a \ &apos; s crear una lista String named \ "% s \" Let \ &apos; s crear una variable de número llamada \ "% s \" Esta variable de número se usará para agregar los días del 1 al 31 al \ "% s \" Agregue% s a la condición de repetición Se utilizarán dos componentes de calendario para calcular la diferencia de dos fechas Vamos a calcular la diferencia y mostrar la diferencia cuando el cálculo se hace clic en el botón 1. Obtenga la hora actual para c2 Calendar component \ n2. Establezca el año, el mes y el día para el componente Calendario c1 a partir de la entrada del usuario recuperado \ n3. Calcule la diferencia en días y visualícela en TextView Vibre su dispositivo por x segundos Cuando haga clic en el botón, vibraremos el dispositivo durante 1 segundo tuto_vibrator_1_1 Let \ &apos; s botón Editar la \ &apos; s evento de clic para hacer vibrar el dispositivo cuando se hace clic tuto_vibrator_1_2 vibrar el dispositivo cuando se hace clic en el botón tuto_vibrator_1_3 El primer parámetro determina cómo tiempo que el dispositivo vibrará en milisegundos tuto_vibrator_1_4 Como queremos que el dispositivo vibre para% s segundos, deje que \ &apos; s agregar \ "% s \" dentro del parámetro muestran una mensaje después de% s segundos Timer componente se utiliza para retrasar ciertas acciones, o repetir una determinada acción con una duración entre Let \ &apos; s disparar el temporizador dentro del evento "onCreate" Cuando se inicia la aplicación, muestra un mensaje después de% s segundos Let \ &apos; s add \ "% s \ "milisegundos dentro del parámetro, ya que queremos que el bloque se ejecute después de% s segundos Ingresa cualquier valor de cadena que quieras mostrar 1. Cuando la aplicación comienza \ n2. El temporizador \ "t \" después de 3000 ms bloque se ejecuta \ n3. ShowMessage dentro del bloque Timer se ejecuta después de 3,000 milisegundos o 3 segundos Crea una Cheetah animadora usando imágenes de Sprite Definición de Sprite Sprite es una hoja de imagen que contiene todos los fotogramas necesarios para una animación para pasar Cheetah Frames En este tutorial, \ &apos; he proporcionado% s fotogramas de un guepardo corriendo para usted tuto_timer_2_4 Let \ &apos; s ahora animar esta imagen con temporizador Componente tuto_timer_2_5 Nosotros \ &apos; re va a empezar a animar la imagen de inmediato cuando se inicia la aplicación tuto_timer_2_6 1. Crear una variable Número que realiza un seguimiento de las cuales marco de la animación está en \ n2. Utilice la \ bloque "Temporizador... cada \" para actualizar la variable de frame cada x milisegundos \ n3. Actualizar la imagen con el nuevo índice de trama tuto_timer_2_7 Crear una variable Número llamado \ "% s \" Gran tuto_timer_2_8! Ha creado una variable de número llamada \ "% s \". El valor por defecto del número de variables a tuto_timer_2_9 falsa Let \ &apos; s ejecutar este bloque justo cuando se inicia la aplicación - de entrada% s tuto_timer_2_10 También, dejar que \ &apos; s ejecutar este cada bloque cada% s milisegundos Agregue% s al segundo parámetro del bloque \ "% s \" Agregar% s al segundo parámetro del bloque \ "% s \" Vamos a entender por qué necesitamos esta condición antes de seguir Cada vez que se ejecuta el bloque del temporizador, la variable de cuadro aumenta en 1, lo que indica que la imagen debe cambiar al siguiente cuadro. \ NDespués de las actualizaciones de la variable de cuadro, debemos verificar en qué marco está activado y actualizar el cuadro respectivo . Dado que hay 8 cuadros, necesitamos 8 "si... entonces" bloques de condición Queremos actualizar el marco a la primera imagen si el valor del marco es% s Haz clic en "si" "bloque para copiarlo Pon aquí 1 para verificar el primer fotograma Cuando el fotograma es% s, queremos que la imagen cambie a \"% s \ " Let \ &apos; s pegar otro bloque "if then" Conéctelo bajo el primer bloque "si luego" Pon aquí 2 para verificar el segundo fotograma Ponga 3 aquí para verificar el tercer fotograma Ponga 4 aquí para comprobar el cuarto fotograma Ponga 5 aquí para verificar la quinta trama Pon aquí 6 para verificar la sexta trama Pon aquí 7 para comprobar la séptima trama 1. Utilizamos el bloque Temporizador para aumentar el " marco "variable por 1 cada 150 ms \ n2. Cuando la variable de cuadro aumenta, 1, 2, 3... 15, utilizamos el bloque restante para obtener solo un resultado entre 1 y 7, sin importar cuán grande sea \ "la variable de cuadro \" \ n3. Usamos el bloque "=" para verificar el valor actual del marco y actualizar el ImageView en consecuencia Crear un cronómetro Hay cinco TextView dentro de este diseño en formato% s Minutos Segundos And Milliseconds Cuando se hace clic en el botón de inicio, comenzaremos el cronómetro Y cuando se presione el botón de detención, haremos una pausa si se ejecuta \ &apos; s borre el cronómetro El componente Temporizador se utiliza para actualizar el TextView cada x milisegundos Los componentes del calendario c1 y c2 se usan para mantener y encontrar diferencias entre dos veces Let \ &apos ; s inicia el cronómetro cuando se hace clic en el botón de inicio 1. Cuando se hace clic en el botón, configura la variable booleana "iniciada" como verdadera y obtén la hora actual para el componente c1 Calendar \ n2. Inicie un temporizador que se repite cada milisegundo y obtenga el tiempo para el componente c2 Calendar \ n3. Encuentra la diferencia entre c2 y c1 time \ n4. Calcule los minutos, segundos y milisegundos de la diferencia y actualice TextViews Crear una variable booleana llamada \ "% s \" \ "% s \" La variable booleana nos avisará si el cronómetro se inicia o no Crear una variable de número llamada \ "% s \" \ "% s \" La variable de número se utilizará para mantener la diferencia de tiempo Seleccione la variable booleana \ "% s \" Seleccione el componente \ "% s \" Calendar Let \ &apos; s ejecutar esto después de \ "% s \" ms Repita este bloque de temporizador cada \ "% s \ "milisegundo Seleccione la \"% s \ "Variable de número Seleccione el \"% s \ "TextView Dado que solo queremos los milisegundos, ponga \"% s \ " aquí " Milisegundos Lógica Explicada El bloque" Diferencia "devuelve el tiempo en milisegundos. Digamos que \ &apos; s dice que el valor de la diferencia es 5153 ms - 5153% 1000 sería 153. El"% " bloque caps el valor máximo de milisegundos a 1,000 Poner \ "% s \" aquí, ya que queremos calcular los segundos solamente Poner \ "% s \" aquí, ya que queremos ponga un segundo casquillo% s Pon aquí \ "% s \", ya que queremos calcular los minutos, y% s milisegundos igual% s minuto Pon aquí \ "% s \", ya que queremos para poner un% de minutos de límite 1. Cuando se hace clic en el botón "inicio", obtenemos el tiempo para el componente de calendario "c1" \ n2. Comenzando el temporizador, recuperamos una nueva hora actual para el componente Calendario \ "c2 \" y encontramos la diferencia \ n3. Luego, analizamos los milisegundos en minutos, segundos y milisegundos Deje que \ &apos; s detener el temporizador cuando se hace clic en el botón de parada 1. Compruebe si se inicia el cronómetro \ n2. Si se inicia, detenemos el cronómetro \ n3. Si se detiene, borramos la hora a 0:00:00 y establecemos el booleano "iniciado" en falso Haz clic en el bloque% s Poner \ "% s \" para restablecer los milisegundos Poner \ "% s \" para restablecer los segundos Poner \ "% s \" para restablecer los minutos 1. Comprobar si se inicia el cronómetro \ n2 Si se inicia, detenemos el cronómetro \ n3. Si se detiene, borramos la hora a 0:00:00 y establecemos el booleano "iniciado" en falso Aumenta una variable de número en% s por segundo Cuando se inicia la aplicación , aumentaremos este dígito en% s por segundo Let \ &apos; s inicia el temporizador cuando se inicia la aplicación 1. Cree una variable de número que hará un seguimiento del valor numérico actual \ n2. Usando el bloque "Timer every", aumentaremos la variable Number y actualizaremos TextView Crear una variable de número llamada \ "% s \" You \ &apos; ve creó con éxito una variable de número. Su valor predeterminado es% s Let \ &apos; s ejecutar el temporizador después de \ "% s \" ms Dado que queremos aumentar el valor numérico cada segundo, ponemos \ "% s \" ms Seleccione la \ "% s \" Variable de número Seleccione el \ "% s \" TextView 1. Una vez que se inicia la aplicación, se ejecuta el bloque "Temporizador cada" cada 1000 ms o 1 segundo \ n2. Usando la variable numérica \ "num \", hacemos un seguimiento del valor creciente del dígito \ n3. Como las variables de número están en formato numérico, usamos el bloque "toString" para convertir el tipo de número en String antes de actualizar TextView Agregar y reproducir un archivo de sonido SoundPool vs MediaPlayer "- SoundPool Component se utiliza para cargar y reproducir archivos de sonido cortos, como un efecto de sonido \ n- MediaPlayer Component se utiliza para reproducir archivos de sonido más largos, como una música de fondo Usaremos este botón para reproducir el sonido con SoundPool Component Usaremos este botón para reproducir el sonido con MediaPlayer Component Adición de sonido Primero, vamos a \ Además, intenta agregar un archivo de sonido. Descarga y prepara un archivo de sonido para cargar Sound Manager Puedes agregar y administrar archivos de sonido con Sound Manager Vamos a intentar reproducir el archivo de sonido con SoundPool Component SoundPool Explained Reproducción de un sonido con el componente SoundPool se divide en 4 etapas: \ n1. Crear un grupo que puede contener un número x de sonidos \ n2. Crear una variable Número y cargar el ID del sonido en la variable \ n3. Crea otra variable de número que reproduce el sonido y contiene la "ID de reproducción" Let \ &apos; s primero crea el grupo en el evento "onCreate" Dado que solo tenemos el archivo de sonido% s, vamos a \ &apos; s agregar \ "% s \" aquí false tuto_sound_media_1_14 Let \ &apos; s crean la variable Número que puede contener el ID del sonido tuto_sound_media_1_15 Crear una variable Número llamado \ "% s \" % s se utilizará para cargar el archivo de sonido % s se usará para reproducir el archivo de sonido Let \ &apos; s ahora carga la ID del sonido en la variable Número que \ &apos; ve acaba de crear Seleccione la \ "% s \" Variable de número Seleccione el archivo de sonido \ "% s \" que ha agregado anteriormente Let \ &apos; s ahora edita el botón onClick on evento para reproducir el sonido cuando se hace clic Haga clic en play_soundspool \ &apos; s evento onClick Puedes determinar cuántas veces se reproducirá el sonido aquí. Por defecto, se reproduce una vez. Deje que \ &apos; s agregue% s aquí La razón por la que SoundPool requiere que se cree una variable Número para almacenar el ID de reproducción es asegurarse de que puede detener el sonido si lo necesita, usando la ID Tenga en cuenta que hay un bloque de detención que puede detener el sonido utilizando el ID de reproducción cuando sea necesario SoundPool es para Sonidos Cortos El sonido que has añadido puede o no ser reproducido, ya que SoundPool solo puede reproducir archivos de sonido cortos Vamos a jugar igual archivo de sonido con el componente MediaPlayer Ahora, deje que \ &apos; intente reproducir el sonido con MediaPlayer Component MediaPlayer Explicated "El procedimiento del Componente MediaPlayer se divide en 2 pasos: \ n1. Crea un MediaPlayer que puede contener 1 sonido \ n2. Reproduce MediaPlayer \ nTenga en cuenta que MediaPlayer no necesita una variable Número para operar, pero requiere más memoria del sistema Permita que \ &apos; s cree el MediaPlayer que puede contener un sonido dentro del evento "onCreate" Seleccione el archivo de sonido \ "% s \" que desea subido previamente Ahora, vamos a reproducir el sonido cuando se hace clic en el botón 1. SoundPool Component se usa para reproducir sonidos cortos; es posible que el sonido no se reproduzca si el archivo de sonido también está largo. \ nTiene que crear DOS variables de número para cargar el sonido y reproducir el sonido \ n2. MediaPlayer Component se utiliza para reproducir sonidos más largos. No necesita una variable de número, pero utiliza más memoria del sistema Reproducción y pausa de sonidos Puedes agregar y administrar archivos de sonido con Sound Manager Aquí, hemos proporcionado una canción llamada \ "% s \" para que la uses Siempre que hagamos clic en el botón "Reproducir", comenzará a reproducir la música Cada vez que hagamos clic en el botón "Pausa", hará una pausa en la música También hemos proporcionado el Componente MediaPlayer \ " % s \ "para usted Permita que \ &apos; s cree el MediaPlayer dentro del evento" onCreate " Seleccione la tuto_sound_media_2_6 \ archivo de sonido "% s \" tuto_sound_media_2_7 Let \ &apos; s reproducir el sonido cuando el "juego" se hace clic en el botón, y dejar que \ &apos; s hacer una pausa en el sonido cuando la "pausa "se hace clic en el botón tuto_sound_media_2_8 Let \ &apos; s de editar el botón play \ &apos; s evento de clic tuto_sound_media_2_9 Let \ &apos; s editar botón de pausa \ &apos; s evento de clic 1. Creamos el MediaPlayer con el archivo de sonido apropiado dentro del evento "onCreate" \ n2. Cuando se hace clic en el botón de reproducción, se juega el archivo de sonido utilizando la \ "MediaPlayer inicio \" bloqueo \ n3. Cuando se hace clic en el botón de pausa, hacemos una pausa el archivo de sonido utilizando el bloque "MediaPlayer pausa" tuto_sound_media_2_12 bucle Infinitamente un archivo de sonido tuto_sound_media_3_0 Puede añadir y gestionar archivos de sonido con el Administrador de sonido tuto_sound_media_3_1 aquí, \ &apos; hemos proporcionado una canción que se llama \ "% s \" para que pueda utilizar tuto_sound_media_3_2 Let \ &apos; s de editar el evento "onCreate" para reproducir el sonido y la puso en bucle A diferencia del componente SoundPool, MediaPlayer Component tiene características más interesantes, como "configurar bucle", "obtener duración de la canción", y más Seleccione el archivo de sonido \ "% s \" antes que usted uploaded 1. Cree un componente MediaPlayer \ n2. Cargue el sonido en MediaPlayer \ n3. Establecer bucle a verdadero \ n4. Inicie MediaPlayer Obteniendo la duración de la canción Puedes agregar y administrar archivos de sonido con Sound Manager Aquí, hemos proporcionado una canción llamada \ "% s \" para que la uses La duración de la canción es de 18 segundos (~ 18,000 milisegundos) Recuperaremos y mostraremos la duración total de la canción aquí Vamos a recuperar la duración de la canción aquí canción cuando se inicia la aplicación Seleccione el archivo de sonido \ "% s \" Seleccione el \ "% s \" TextView Cuando se inicia la aplicación, primero carga el sonido " tobu_mesmerize "en el componente MediaPlayer. \ nA continuación, recuperamos la duración de la canción (en milisegundos) y actualizamos TextView Crea un pian de 3 teclas Explicación del diseño Pasaremos paso a paso y entenderemos cómo está diseñada esta aplicación Muchos diseños diferentes están posicionados dentro de este diseño, que tiene la altura de 200dp Hemos configurado la gravedad de la disposición superior e inferior en "center_horizontal" para que las teclas se alineen con el centro " Las teclas son widgets de" botón "con blanco o negro background Tienen un ancho de 50dp y alto de 100dp Para la tecla central, le damos un margen de 4dp a la izquierda y la derecha para que tenga un poco de espacio entre las llaves Lo mismo se aplica a las teclas negras Archivos de sonido del piano Hemos proporcionado cinco archivos de sonido diferentes \ n \ nc1, c1s (tecla negra), d1, d1s ( tecla negra) y e1 En esta aplicación, solo usamos el componente SoundPool. La razón por la que usamos SoundPool en lugar de MediaPlayer es que los sonidos de piano son relativamente cortos Vamos a analizar el evento "onCreate" Dentro del evento "onCreate", inicializamos el SoundPool y cargamos archivos de sonido apropiados Hay% s variables de número disponibles. Las variables que terminan con \ "% s \" se utilizan para cargar el sonido Las variables que finalizan con \ "% s \" se utilizan para reproducir el sonido Inicializamos el archivo SoundPool con flujo de% s cuenta. Esto nos permite cargar% s archivos de sonido en SoundPool Tenga en cuenta que necesitamos usar el bloque "establecer número a" para cargar y reproducir los archivos de sonido cuando se utiliza el componente SoundPool Aquí, cargamos los archivos de sonido con el bloque "SoundPool load" Tenga en cuenta que diferentes archivos de sonido se cargan en diferentes variables de Número Vamos a completar los parámetros que faltan en el último bloque "Definir número a" Seleccione el \ "% s \" Variable de número Seleccione el archivo de sonido \ "% s \" Reproducción de sonidos "Ahora, vamos a entender cómo se reproducen los archivos de sonido Hay diferentes eventos de Button onClick disponibles, uno para cada tecla Let \ \ npuede reproducir el sonido de la tecla \ "% s \" cuando se hace clic Al igual que para cargar el sonido, el bloque "set to" también se usa para reproducir el sonido Primero, seleccionamos la variable Number apropiada que termina en \ "% s \" Como esto es para el evento onClick para \ "% s \", seleccione \ "% s \" Luego necesitamos el bloque "SoundPool play" para reproducir el archivo de sonido Let \ &apos; s haz que juegue una vez poniendo 0 aquí La lógica para otros eventos clave son idénticos, por lo que \ &apos; ha sido completada por usted 1. Creamos 10 variables de número, 5 con el sufijo "_sound" y 5 con " _play2. Se usaron variables "sonoras" para cargar el sonido en el evento "onCreate", y se usaron variables "_play" para reproducir el sonido en la tecla. evento onClick Diseñar un reproductor de música Hemos proporcionado% s imágenes para ti Tobu - Mesmerize album art Botón de reproducción Botón de pausa Botón de avance rápido Rebobinado button Primero, cambiamos la propiedad de color de fondo del diseño que contiene todos los otros widgets Hay dos diseños lineales (V): este es el primero con la gravedad centrada Aplicamos la carátula del álbum a ImageView Hemos agregado la música y el título del artista usando un TextView Este es el segundo diseño, con la gravedad centrada también Esta disposición horizontal está dentro del segundo diseño, con tres ImageViews En este tutorial, solo nos ocuparemos del botón "play" Let \ &apos; s cargar primero canción en MediaPlayer cuando se inicia la aplicación Cargar la canción \ "% s \" en el componente MediaPlayer Seleccionar la canción \ "% s \" Entonces, vamos a \ &apos ; s reproducir el sonido cuando se hace clic en el botón de reproducción 1. Compruebe si la canción ya está en reproducción \ n2. Si reproduce, pause la canción y cambie el icono para reproducir el icono \ n3. De lo contrario, reproduzca la canción y cambie el icono para detener el icono Cree una variable booleana llamada \ "% s \" ¡Genial! Usamos esta variable para verificar si la canción está sonando o no. Su valor predeterminado es "falso" Seleccione el \ "% s \" ImageView Seleccione la \ "% s \" image Seleccione la variable booleana \ "% s \" 1. Compruebe si la canción ya está en reproducción \ n2. Si reproduce, pause la canción y cambie el icono para reproducir el icono \ n3. De lo contrario, reproduzca la canción y cambie el icono para detener el icono Rotar un widget con Object Animator Component ¿Qué es Object Animator? Object Animator se usa para hacer la creación de animaciones más simple. En lugar de usar temporizadores, ahora podemos usar el componente de animador de objetos para animar los widgets Nosotros \ &apos; vamos a rotar este TextView usando Object Animator El componente ObjectAnimator se ha agregado Let \ &apos; s animar el TextView cuando se inicia la aplicación Logic Goal Usar el componente ObjectAnimator para animar TextView Hacer clic en la categoría de Componentes Logic Goal Logic Goal Intercambiar valores de dos valores de texto Después del intercambio de valor, el texto se mostrará como \ n \ nB \ nA Let \ &apos; s intercambian los dos valores cuando se hace clic en el botón \ "swap \" 1. Cree una variable temporal que contenga el valor de \ "% s \" \ n2. Cambie el valor de \ "% s \" a \ "% s \" \ n3. Establezca el valor de \ "% s \" en \ "% s \" Cree una variable String llamada \ "% s \" Para intercambiar dos valores, necesitamos para crear un marcador de posición temporal que puede contener temporalmente un valor mientras hacemos el intercambio Imprimir un triángulo de asteriscos Vamos a mostrar el trinagle a través de la vista de texto proporcionada Let \ &apos; s generar el trinagle de asteriscos en el evento onCreate Queremos adquirir una tringle de asteriscos que se vea así: \ n * \ n ** \ n *** \ n **** \ n *** ** Crear una variable de número llamada \ "% s \" Esta variable de número nos ayudará a llevar un registro de cuántos asteriscos se imprimirán en cada fila Ajustamos i a 1, ya que queremos imprimir un * en la primera fila Haz clic en la categoría Control Haz clic en la categoría Variable Crea una variable String llamada \ "% s \" Selecciona el \ "% s \" block Usamos dos bloques de repetición \ n1. El primer bloque de repetición se utiliza para determinar cuántas filas de * queremos imprimir al agregar una nueva línea a cada bucle \ n2. El bloque de repetición dentro del bloque de repetición se utiliza para imprimir cada fila \ n 3. El bucle interno se repite \ "i \" veces, que se incrementa en el bucle de repetición externo. Esto nos permite adquirir la impresión de aspecto triangular \ n4. Finalmente, establecemos el TextView en el texto en el que estamos participando \ "stars \" La variable contendrá el valor de lo que queremos imprimir Calcular si el número es par o impar Después de que el usuario ingrese una entrada numérica y haga clic en el botón, brindaremos \ "even \" o \ "odd \" Vamos a hacer el cálculo cuando se hace clic en el botón Los números pares son números que son divisibles por 2. Para comprobar si la entrada es pareja, solo necesitamos verificar si hay quedan restos cuando el número se divide por 2 Cuando hay un resto, vamos a tostar \ "impar \" Cuando no hay resto, haremos tostadas \"incluso\" Decidimos si el número está incluso calculando si la entrada tiene algún residuo después de que se divide por 2 Desafío La aplicación puede fallar si no ingresas ningún número. Intenta crear otra instrucción if que te ayude a comprobar si el EditText tiene alguna entrada Invertir los elementos en la lista El ListView proporcionado mostrará los elementos dentro de la lista Cuando se presiona el botón Invertir, el contenido de la lista se invertirá Vamos a ver el evento onCreate Nosotros ya hemos creado y poblado tres elementos en una lista de String, \ "a, b, c \" Vamos a invertir la lista dentro del botón inverso \ &apos; s onClick evento 1. Cree una nueva lista de cadenas \ n2. Itere la lista existente y copie los elementos de forma inversa \ n3.Actualice la vista de lista con el nuevo contenido Crea una lista de cadenas llamada \ "% s \" Crea una variable de número llamada \ "% s \" Inicialmente eliminamos la lista, de modo que incluso cuando el botón inverso se hace clic varias veces, la \ "r_list \" comienza con el mismo estado en blanco cada vez. Creamos una variable de número denominada índice, que nos ayudará a repetir la lista original a partir del último elemento. Crear una variable de número llamada \ "% s \" Ajustamos el índice a \ "tamaño - 1 \", ya que el índice del primer elemento de una lista comienza con 0, y nosotros Quería comenzar desde el último elemento. Dado que el tamaño de la lista es 3, queremos comenzar desde el índice 2, que es el índice del último ítem. \ N \ n Usando el bloque de repetición, iteraremos desde el último ítem dentro de \ "list1 \ ", y agréguelos a \" r_list \ ". Reducimos la variable de índice en 1 cada iteración para obtener el elemento anterior en \ "list1 \". Luego, restablecemos los datos para el ListView y lo actualizamos, para que el ListView pueda mostrar los nuevos datos de \ "r_list \" Crear una baraja de naipes The siempre que ListView muestre las tarjetas después de que se hayan generado Vamos a generar \ y aparezca el ListView cuando se inicie la aplicación En las cartas, hay cuatro palos y 13 cartas para cada suite. En el mazo que vamos a crear, denotaremos las suites con números: \ n 1. Diamantes - 0 \ n2. Corazones - 1 \ n3. Picas - 2 \ n4. Clubs - 3 \ n \ nPor ejemplo, un As de espadas se denotaría como 20, en formato de número de tarjeta de visita Crear una variable de Número llamada \ "% s \" Establezca el valor a \ "% s \" para el número de juegos Establezca el valor a \ "% s \" para el número de tarjetas Crear una lista de cadenas llamada \ "% s \" El bucle de repetición interno se repite 13 veces cada vez que ocurre un bucle de repetición externo. Añadimos 13 cartas diferentes con cada repetición de juego, y restablece el valor de la carta a 0 para que el otro palo también obtenga las mismas 13 cartas Hemos creado con éxito 52 cartas. El formato en el que se muestran las tarjetas puede ser un poco funky, pero en el mundo de la programación, a veces es necesario usar varios formatos de datos para diferentes situaciones \ n \ n El primer dígito indica qué traje es , y el siguiente número indica el número de la tarjeta. Por ejemplo, 09 sería un Jack of Diamonds, ya que el primer artículo comienza con el índice 0 Baraja una baraja de naipes Prerrequisito Si tiene \ &apos; t, complete el tutorial anterior, ya que se trata de un tutorial acumulativo Usaremos este ListView para mostrar el mazo barajado We \ Ya se ha proporcionado la lógica para el evento onCreate La lógica es la misma que en el tutorial anterior, excepto que hemos creado una nueva función MoreBlock llamada \ "shuffleDeck \" Let \ &apos; s edite la función shuffleDeck para mezclar el deck y llenar ListView 1. Cree una nueva lista llamada \ "s_deck \" \ n2. Elija aleatoriamente 1 tarjeta de la lista \ "deck \" y cópiela en \ "s_deck \" Cree una variable de número llamada \ "% s \" Cree una lista de cadenas llamada \ " % s \ " Establezca el valor en \"% s \ ", ya que hay 52 cartas en el mazo Tenga en cuenta que restamos 1, ya que el primer elemento dentro de la lista comienza con el índice de 0, lo que significa que el índice del último elemento siempre será la longitud - 1 Durante los 52 bucles de repetición, generamos una variable de número aleatorio que toma un índice aleatorio de 0 a la longitud de la lista de mazos: 1. Usando el índice, copiamos la tarjeta de la lista de mazos a la lista de s_deck, y la eliminamos del mazo lista para que la misma tarjeta no se copie sobre Cuente cuántas veces se repite la palabra \ "a \" en una oración Aquí, hemos proporcionado un TextView con el texto de \ "abcaa \", creamos un algoritmo que cuenta cuántas veces \ "a \" ha repetido Nosotros calculamos y mostramos el recuento cuando se inicia la aplicación Go a través de cada carácter usando un bucle for Hemos proporcionado 4 variables para ti \ "% s \" nos ayudará a iterar a través de cada carácter \ "% s \" será una variable temporal que contiene/actualiza cada palabra \ "% s \" mantendrá temporalmente el valor de cada carácter que se repite a través de \ "% s \" mantendrá el recuento de cuántas veces ha aparecido \ "a \" Guarda un personaje en la variable \ "carácter \" Verifica si el personaje es un espacio vacío. \ N1. Si el personaje no es un espacio vacío, únase al personaje a la variable \ "palabra \" haciendo \ "palabra \" join \ "palabra + carácter \" \ n 2. Si el personaje es un espacio vacío , comprueba si la palabra es igual a \ "a \". Si \ &apos; s igual, incremento de conteo. Finalmente, restablezca la variable \ "palabra \" 1. Únete al personaje en word hasta llegar a un espacio vacío \ n 2. Si la palabra es igual a \ "a \", incrementa el conteo \ n 3. Restablece la variable word a una cadena vacía e incrementa el índice \ n 4. Brindar el número de cuenta que sucedió