Você pode ler em português (https://github.com/welbert6/MaterialStoryView/edit/master/ReadmePT.md) Capturas de pantalla Introducción MaterialStoryView es una biblioteca de Android para implementar un carrusel de historias, similar a las que se encuentran en redes sociales como Instagram y Facebook. . Esta biblioteca facilita la adición de un componente de visualización de historias a su aplicación de Android, lo que permite una integración rápida y sencilla. ✅ Guarda la historia como se ve en SharedPreferences: garantiza que los usuarios no vean repetidamente la misma historia, lo que mejora la experiencia del usuario. ✅ Botón de acción en la historia: permite interacciones directas, como visitar un enlace o realizar una acción específica, directamente desde la historia. ✅ Navegación entre historias tocando en el lado derecho e izquierdo de la pantalla: Facilita la navegación por las historias, permitiendo a los usuarios avanzar o retroceder con un simple toque. ✅ Admite RTL y LTR: se adapta a usuarios de idiomas que se leen de derecha a izquierda (RTL) y de izquierda a derecha (LTR), lo que garantiza una experiencia de usuario global e inclusiva. ✅ Admite historias con y sin títulos: ofrece flexibilidad para mostrar historias tanto con títulos para contexto como sin títulos para un diseño más limpio. ✅ Personalización 100%: permite una personalización completa de la apariencia de la historia, incluida la duración, el color del indicador, el tamaño del radio de la imagen, el color del texto, etc., para que coincida perfectamente con la identidad visual de su aplicación. Configuración 1. Agregue la dependencia de gradle. Agregue el repositorio JitPack a su build.gradle raíz al final de los repositorios: allprojects { repositories { … maven { url ‘https://jitpack.io’ } } } Agregue la dependencia: dependencies { implementación ‘com.github.welbert6:MaterialStoryView:1.0.0’ } 2. Uso Agregue CarouselStoryView a su diseño XML:
Inicialice y configure CarouselStoryView en su actividad: val carrosselStoryView: CarouselStoryView = findViewById(R.id.carouselStoryView) //Asegúrese de llamar a init With Activity para iniciar lib carrosselStoryView.initWithActivity(this) // Puede agregarStory o addStories si tiene una lista de historias carrosselStoryView.addStory(getCopasaStories()) carrosselStoryView.addStory(getCemigStories()) carrosselStoryView.addStory(getCminStories()) carrosselStoryView.addStories(getModelStorys()) Personalización MaterialStoryView ofrece varias opciones de personalización a través de atributos XML, permitiendo modificaciones de: Texto tamaño y color Colores de los indicadores de historias visitadas y pendientes Radio de la imagen de la historia Ancho del indicador del elemento de la historia Duración de la historia Para obtener más detalles sobre las opciones de personalización, consulte las opciones disponibles en la sección de atributos XML declarables. miniStoryTextSize (Tamaño del texto de la mini historia): establece el tamaño del texto de los subtítulos de la mini historia, lo que permite personalizar la escala del texto para una mejor legibilidad. miniStoryTextColor (Color del texto de la mini historia): especifica el color del texto para los subtítulos de la mini historia, ofreciendo la posibilidad de hacer coincidir el color del texto con el tema de la aplicación. miniStoryTextFont (fuente de texto para mini historias): permite configurar la fuente del texto para mini historias a través de una referencia, lo que permite personalizar la tipografía para alinearla con la identidad visual. miniStoryVisitedIndicatorColor (Color del indicador de minihistoria visitada): define el color del indicador de las historias que ha visto el usuario, lo que ayuda a distinguir entre contenido nuevo y revisado. miniStoryPendingIndicatorColor (Color indicador pendiente de mini historia): Especifica el color del indicador para las historias que aún no han sido vistas, facilitando la identificación de contenido nuevo. miniStoryImageRadius (Radio de imagen de mini historia): determina el radio de las imágenes en mini historias, lo que permite redondear las esquinas de las imágenes para una apariencia más suave. miniStorySpaceBetweenImageAndIndicator (Espacio entre la imagen de la mini historia y el indicador): establece el espacio Créditos/StoriesProgressView: esta biblioteca se utilizó para mostrar el progreso de las historias desarrolladas por Welbert Moreira. No dudes en contribuir con mejoras, correcciones de errores o nuevas funciones. ¡Tu contribución es bienvenida! Licencia Licencia MIT Copyright (c) 2024 Welbert Moreira Por el presente se concede permiso, de forma gratuita, a cualquier persona que obtenga una copia de este software y los archivos de documentación asociados (el «Software») para operar con el Software sin restricciones, incluidas, entre otras, los derechos de usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar y/o vender copias del Software, y de permitir que las personas a quienes se les proporciona el Software lo hagan, sujeto a las siguientes condiciones: El aviso de derechos de autor anterior y este aviso de permiso se incluirá en todas las copias o partes sustanciales del Software. EL SOFTWARE SE PROPORCIONA «TAL CUAL», SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGÚN RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN CONTRACTUAL, AGRAVIO O DE OTRA MANERA, QUE SURJA DE, FUERA DE O EN RELACIÓN CON EL SOFTWARE O EL USO U OTRAS NEGOCIOS EN EL SOFTWARE.
Etiqueta: desarrollo de Android
Biblioteca de Android NetworkStateObserver Una biblioteca que le ayuda a verificar el estado de su red, si está disponible, perdida o no disponible y también verificar la accesibilidad de su red cuando su servidor no funciona o su ISP está conectado pero no tiene suscripción de datos. Demostración: 1. Agregar NetworkStateObserver a su proyecto Incluya jitpack en su archivo raíz settings.gradle. pluginManagement { repositorios { … maven { url ‘https://jitpack.io’ } } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositorios { … maven { url ‘https://jitpack.io’ } } } Y agregue su dependencia al archivo build.gradle a nivel de aplicación: dependencias { implementación ‘com.github.RhymezxCode:NetworkStateObserver:1.1.3’ //Implementación de Livedata ‘androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0’ implementación ‘androidx.lifecycle:lifecycle-livedata-core-ktx:2.7.0’ implementación ‘androidx.lifecycle:lifecycle-runtime-ktx:2.7.0’ implementación ‘android.arch.lifecycle:extensions:1.1.1’ } Sincronización tu proyecto, y ???? auge???? ha agregado NetworkStateObserver con éxito. ❗ 2. Uso Primero inicialice la clase de constructor: val network = NetworkStateObserver.Builder() .activity(activity = this@NetworkStateObserverExample) .build() Si solo desea verificar la conectividad, antes de realizar una tarea o trabajo(): if (CheckConnectivity.isNetworkAvailable(requireContext())){ showToast( this@NetworkStateObserverExample, «Red restaurada») } Utilice el método de datos en vivo para determinar el estado de su red y reemplace el código en lifecycleScope.launchWhenStarted { ….your codifique aquí } para hacer lo que quiera: network.callNetworkConnection().observe(this) { isConnected -> lifecycleScope.launch(Dispatchers.IO) { if (isConnected) { cuando { Reachability.hasServerConnected( contexto = this@NetworkStateObserverExample, serverUrl = «https://www.your-server-url.com» ) -> lifecycleScope.launch{ showToast( «La URL del servidor funciona») } Reachability.hasInternetConnected( contexto = this@NetworkStateObserverExample ) -> lifecycleScope.launch{ showToast( «Red restaurada» ) } else -> lifecycleScope.launch{ showToast( «La red se perdió o hay problemas con el servidor») } } } else { //verificar si hay conexión perdida lifecycleScope.launch{ showToast( «Sin conexión de red») } } } } } Utilice el método de flujo para determinar el estado de su red y también vuelva a intentarlo cuando se produzca una excepción: lifecycleScope.launch { network.callNetworkConnectionFlow() .observe() .collect { when (it) { NetworkObserver.Status.Available -> { lifecycleScope.launch { cuando { Reachability.hasServerConnectedFlow( contexto = this@NetworkStateObserverExample, serverUrl = «https://www.github.com» ).retryWhen { causa, intento -> si (la causa es IOException && intento < 3) {
delay(2000)
return@retryWhen true
} else {
return@retryWhen false
}
}.buffer().first() -> lifecycleScope.launch { showToast( this@NetworkStateObserverExample, «La URL del servidor funciona») } Reachability.hasInternetConnectedFlow( contexto = this@NetworkStateObserverExample ).retryWhen { causa, intento -> si (la causa es IOException && intento < 3) {
delay(2000)
return@retryWhen true
} else {
return@retryWhen false
}
}.buffer().first() -> lifecycleScope.launch { showToast( this@NetworkStateObserverExample, «Red restaurada») } else -> lifecycleScope.launch { showToast( this@NetworkStateObserverExample, «La red se perdió o hay problemas con el servidor») } } } } NetworkObserver.Status.Unavailable -> { showToast( «¡La red no está disponible!» ) } NetworkObserver.Status.Losing -> { showToast( «¡Estás perdiendo tu red!» ) } NetworkObserver.Status.Lost -> { showToast( «¡La red está perdida!» ) } } } } Puede verificar si su conexión a Internet es estable solo si no tiene una URL de servidor: network.callNetworkConnection().observe(this) { isConnected -> lifecycleScope.launch(Dispatchers.IO) { if (isConnected) { cuando { Reachability.hasInternetConnected( contexto = this@NetworkStateObserverExample ) -> lifecycleScope.launchW{ showToast( «Red restaurada») } else -> lifecycleScope.launch{ showToast( «La red se pierde o hay problemas con el servidor») } } } else { //comprueba si hay conexión perdida lifecycleScope.launch{ showToast( «Sin conexión de red») } } } } } 3. También puedes inyectar NetworkStateObserver y usarlo en todas partes de tu aplicación con Hilt ???? : Cree un objeto para NetworkStateModule en su paquete di: @Module @InstallIn(ActivityComponent::class) object NetworkStateModule { @Provides fun provideNetworkStateObserver( actividad: Actividad ): NetworkStateObserver { return NetworkStateObserver.Builder() .actividad(actividad = actividad) .build() } } Declara la variable en tu clase como fragmento o actividad, funciona en ambos: @AndroidEntryPoint clase myFragment : Fragment(){ @Inject lateinit var network: NetworkStateObserver private fun callNetworkConnection() { network.callNetworkConnection() .observe(this) { isConnected -> lifecycleScope.launch(Dispatchers.IO) { if (isConnected) { cuando { Reachability.hasInternetConnected( contexto = this@NetworkStateObserverExample ) -> lifecycleScope.launch{ showToast( «Red restaurada») } else -> lifecycleScope.launch{ showToast( «La red se perdió o hay problemas con el servidor») } } } else { //verificar si hay conexión perdida lifecycleScope.launch{ showToast( «No hay conexión de red» ) } } } } } } anular diversión enResume () { super.onResume() callNetworkConnection() } } Agrega el método en onResume() de tu fragmento o actividad para tener una gran experiencia: override fun onResume() { super.onResume() callNetworkConnection() } ???? Por favor, no dudes en regalarme una estrella ????, también me encantan los destellos ✨ ☺️
Source link
Actualice el estado de la interfaz de usuario de sus aplicaciones de Android e iOS en tiempo de ejecución. Motivación Actualizar el estado de la interfaz de usuario en tiempo de ejecución es una herramienta muy útil para fines de validación y creación rápida de prototipos. También agrega el beneficio de que puede ser utilizado por todo el equipo de pruebas, ya sean desarrolladores, diseñadores, control de calidad, etc. demo.mov ¿Cómo funciona? Android Android Debug Bridge (ABD) se utiliza para enviar una señal de transmisión al aplicación deseada con una carga útil json como extra. adb shell estoy transmitiendo -p [package] -a [action] -mi [extra key] [extra value]
En el lado de la aplicación hay un BroadcastReceiver que escucha estas cargas útiles. Tras una deserialización exitosa, se emitirá un nuevo estado y, en consecuencia, se activará una actualización de la interfaz de usuario. Disponibilidad: todos los simuladores y/o dispositivos físicos (incluso con depuración wifi) conectados. iOS Las herramientas de desarrollo Xcode de Apple proporcionan una herramienta de línea de comandos para interactuar con el simulador de iOS. Esta herramienta le permite simular el proceso de envío de notificaciones automáticas a un dispositivo: xcrun simctl push [UDID] [bundle id] [path to .apns]
En el lado de la aplicación hay un NotificationBroadcaster que monitorea activamente las notificaciones entrantes. Luego, estas notificaciones se transmiten a los observadores internos dentro de la aplicación. Tras una deserialización exitosa, se emitirá un nuevo estado y, en consecuencia, se activará una actualización de la interfaz de usuario. Disponibilidad: todos los simuladores arrancados. Instalación Android Agregue la dependencia de la biblioteca: implementación(«com.github.guilhe:json-broadcast-handler:${LATEST_VERSION}'») Administrador de paquetes Swift Las implementaciones de Swift están disponibles a través del Administrador de paquetes Swift. En Xcode, vaya a Archivo > Agregar paquetes… y proporcione la URL https://github.com/GuilhE/JsonBroadcaster.git; Utilice el hash de confirmación de la última etiqueta JsonBroadcasterHandler-x. CocoaPods Si usa CocoaPods, agregue lo siguiente a su Podfile: pod ‘JsonBroadcasterHandler’, :git => ‘https://github.com/GuilhE/JsonBroadcaster.git’, :tag => ‘JsonBroadcasterHandler-x’ Uso: desarrolladores Android Sus clases UiState deben estar anotadas con kotlinx.serialization.Serializable (dependencia): @Serializable data class UiState(val memberA: String, val memberB: String) Cree una implementación BroadcastUiModelHost para escuchar las actualizaciones de estado, como se muestra a continuación: host val privado = objeto: BroadcastUiModelHost
Source link
Un marco de almacenamiento de objetos modular para proyectos multiplataforma de Kotlin. Uso ObjectStore proporciona una interfaz de almacenamiento de clave/valor simple que, de forma predeterminada, utiliza detalles de tipo para derivar la clave automáticamente. Para crear un ObjectStore necesita dos cosas: ObjectStoreWriter: proporciona el mecanismo de persistencia para almacenar datos para acceso posterior. ObjectStoreSerializer: proporciona el mecanismo de serialización para transformar objetos para su almacenamiento. val store = ObjectStore( storeWriter = SharedPreferencesStoreWriter(«prefs», context), storeSerializer = JsonStoreSerializer() ) // Almacenar un objeto store.put(User(«username», «email», …)) // Obtener un objeto o usuario de valor nulo: ¿Usuario? = tienda.getOrNull
almacén de objetos = «1.0.0-INSTANTÁNEA»
[libraries]
objectstore-core = { module = «org.drewcarlson:objectstore-core», version.ref = «objectstore» } objectstore-fs = { module = «org.drewcarlson:objectstore-fs», version.ref = «objectstore» } objectstore-cbor = { module = «org.drewcarlson:objectstore-cbor», version.ref = «objectstore» } objectstore-json = { module = «org.drewcarlson:objectstore-json», version.ref = «objectstore» } objectstore-protobuf = { module = «org.drewcarlson:objectstore-protobuf», version.ref = «objectstore» } objectstore-secure = { module = «org.drewcarlson:objectstore-secure», version.ref = «objectstore» } Licencia Este proyecto tiene la licencia Apache-2.0, que se encuentra en LICENCIA.
Source link
Una biblioteca de Android para aplicar 62 (se agregarán más) filtros LUT fáciles, rápidos y efectivos a las fotos. Con RenderScript, el objetivo es procesar los espacios de color en la LUT y aplicarlos a la imagen en forma de filtro. ¿Qué es LUT? La traducción directa de LUT («Tabla de búsqueda») del inglés significa «tabla de búsqueda». En informática, significa datos donde se asignan y calculan los valores de entrada (entrada) y los valores de salida (salida). Instalación inicial Gradle Agregue los siguientes códigos a su archivo raíz build.gradle (no al archivo build.gradle de su módulo). allprojects { repositories { maven { url ‘https://jitpack.io’ } } } Y agregue un código de dependencia al archivo build.gradle de su módulo. dependencias { implementación ‘com.github.zekierciyas:FancyFilter:Tag’ } Uso La biblioteca Fancy Filter, que es rápida y fácil de usar, generalmente incluye un patrón de construcción simple. Se basa en proporcionar los parámetros necesarios y obtener la imagen filtrada en tipo mapa de bits. FancyFilter.Builder() .withContext(this) .filter(FancyFilters.NO_1) .bitmap(bitmap) .applyFilter { bitmap -> // Obteniendo el mapa de bits filtrado aquí } Copyright 2022 github/zekierciyas (Zeki Erciyas) Con licencia Apache , Versión 2.0 (la «Licencia»); no puede utilizar este archivo excepto de conformidad con la Licencia. Puede obtener una copia de la Licencia en http://www.apache.org/licenses/LICENSE-2.0 A menos que lo exija la ley aplicable o se acuerde por escrito, el software distribuido bajo la Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas. Consulte la Licencia para conocer el idioma específico que rige los permisos y limitaciones de la Licencia.
Source link
¡Una biblioteca de Android ligera con animaciones emergentes! Fácil de usar Tamaño pequeño Altamente personalizable Primeros pasos Para usar esta biblioteca en su proyecto, agregue la siguiente dependencia a su archivo build.gradle: allprojects { repositories { … maven { url ‘https://jitpack.io’ } } } dependencias { implementación ‘com.github.gold24park:PopcornView:release-1.0.2’ } Uso Agregue PopcornView a su archivo XML de diseño:
O configure las propiedades de las palomitas de maíz e inicie la animación mediante programación: val popcornView = findViewById
Source link
Página 2 de 2