{"id":23536461,"url":"https://github.com/jreategui07/dragonballapp_android","last_synced_at":"2026-04-27T11:31:39.896Z","repository":{"id":268616943,"uuid":"904021881","full_name":"jreategui07/DragonBallApp_Android","owner":"jreategui07","description":"This Android application showcases a list of Dragon Ball characters and their details with both mobile and tablet-friendly layouts. Designed with Fragments, the app ensures an adaptive UI that supports both mobile and tablet screen sizes.","archived":false,"fork":false,"pushed_at":"2024-12-20T00:18:26.000Z","size":1860,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-14T23:08:09.771Z","etag":null,"topics":["android","binding","fragments","intent","kotlin","livedata","mvvm","retrofit2","viewmodel","xml"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jreategui07.png","metadata":{"files":{"readme":"README-es.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-12-16T05:20:57.000Z","updated_at":"2024-12-20T00:18:30.000Z","dependencies_parsed_at":"2024-12-17T22:21:48.394Z","dependency_job_id":"58c00c7c-3302-4f35-8183-3dd5bc3211e0","html_url":"https://github.com/jreategui07/DragonBallApp_Android","commit_stats":null,"previous_names":["jreategui07/dragonballapp_android"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jreategui07/DragonBallApp_Android","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jreategui07%2FDragonBallApp_Android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jreategui07%2FDragonBallApp_Android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jreategui07%2FDragonBallApp_Android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jreategui07%2FDragonBallApp_Android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jreategui07","download_url":"https://codeload.github.com/jreategui07/DragonBallApp_Android/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jreategui07%2FDragonBallApp_Android/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32335295,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","binding","fragments","intent","kotlin","livedata","mvvm","retrofit2","viewmodel","xml"],"created_at":"2024-12-26T02:28:49.411Z","updated_at":"2026-04-27T11:31:39.891Z","avatar_url":"https://github.com/jreategui07.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DragonBallApp\n### Interfaz de usuario adaptable con Fragments, LiveData y ViewModel.\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"./assets/logo/android-logo.png\" width=\"120\" /\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"./assets/logo/kotlin-logo.png\" width=\"410\" /\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Descripción\n\nEsta aplicación de Android muestra una lista de personajes de Dragon Ball junto con sus detalles, con diseños adaptables tanto para móviles como para tabletas. Diseñada con Fragments, la app garantiza una interfaz de usuario adaptable que se ajusta a pantallas de diferentes tamaños. Demuestra la integración de ViewModel y LiveData para la gestión del estado, RecyclerView para listas dinámicas y Glide para la carga de imágenes. La aplicación enfatiza la navegación responsiva y resalta los métodos del ciclo de vida de los Fragments con registros detallados para fines educativos.\n\n## Características\n\n- **Fragments**: Para asegurar un diseño adaptable tanto para móviles como para tabletas.\n- **ViewModel and LiveData**: Para una moderna gestión de estado gestión.\n- **RecyclerView**: Para mostrar un lista dinámico y desplazable.\n- **Glide**: Para la carga imágenes de imagenes desde URLs.\n- **Kotlin with XML**: Para crear los diseños de la interfaz.\n- **Intent**: Para la navegación entre actividades.\n\n\n## Configuraciones necesarias\n\n- No se requiere configuración adicional.\n\n## Eventos del Ciclo de Vida de un Fragment y Ejemplos\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cstrong\u003eEvento\u003c/strong\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cstrong\u003eDescripción\u003c/strong\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cstrong\u003eCasos de Uso Comunes\u003c/strong\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eonAttach()\u003c/td\u003e\n    \u003ctd\u003eEl fragment se asocia con una actividad.\u003c/td\u003e\n    \u003ctd\u003eInicializar recursos relacionados con el contexto o callbacks.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eonCreate()\u003c/td\u003e\n    \u003ctd\u003eEl fragment es creado (similar al onCreate de una actividad).\u003c/td\u003e\n    \u003ctd\u003eInicializar componentes no relacionados con la UI como ViewModel o fuentes de datos.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eonCreateView()\u003c/td\u003e\n    \u003ctd\u003eSe crea el diseño de la UI para el fragment.\u003c/td\u003e\n    \u003ctd\u003eInflar el diseño del fragment e inicializar componentes de la UI.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eonViewCreated()\u003c/td\u003e\n    \u003ctd\u003eLa jerarquía de vistas del fragment está completamente creada.\u003c/td\u003e\n    \u003ctd\u003eVincular datos a los componentes de la UI y configurar observadores o listeners.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eonViewStateRestored()\u003c/td\u003e\n    \u003ctd\u003eSe llama después de que la vista del fragmento ha sido creada y el estado ha sido restaurado.\u003c/td\u003e\n    \u003ctd\u003eRestaura el estado de la interfaz de usuario, como la posición de desplazamiento o los campos de entrada.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eonStart()\u003c/td\u003e\n    \u003ctd\u003eEl fragment se vuelve visible para el usuario.\u003c/td\u003e\n    \u003ctd\u003eIniciar animaciones o refrescar componentes de la UI.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eonResume()\u003c/td\u003e\n    \u003ctd\u003eEl fragment está en primer plano y el usuario puede interactuar con él.\u003c/td\u003e\n    \u003ctd\u003eReanudar actualizaciones de la UI o iniciar operaciones intensivas como la reproducción de medios.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eonPause()\u003c/td\u003e\n    \u003ctd\u003eEl fragment ya no está en primer plano.\u003c/td\u003e\n    \u003ctd\u003ePausar tareas en curso como la reproducción de medios o animaciones.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eonStop()\u003c/td\u003e\n    \u003ctd\u003eEl fragment ya no es visible para el usuario.\u003c/td\u003e\n    \u003ctd\u003eLiberar recursos o guardar estados temporales.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eonDestroyView()\u003c/td\u003e\n    \u003ctd\u003eSe destruye la jerarquía de vistas asociada al fragment.\u003c/td\u003e\n    \u003ctd\u003eLimpiar recursos relacionados con las vistas para evitar fugas de memoria.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eonDestroy()\u003c/td\u003e\n    \u003ctd\u003eEl fragment es completamente destruido.\u003c/td\u003e\n    \u003ctd\u003eLiberar cualquier recurso restante o finalizar operaciones.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eonDetach()\u003c/td\u003e\n    \u003ctd\u003eEl fragment se desasocia de su actividad anfitriona.\u003c/td\u003e\n    \u003ctd\u003eLimpiar referencias a la actividad o al contexto.\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Demostración\n\nA continuación, algunas capturas de pantalla de la aplicación:\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd colspan=\"2\"\u003e\u003cimg src=\"./assets/demo-tablet-fragments-1-2.png\"/\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"./assets/demo-mobile-fragment-1.png\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"./assets/demo-mobile-fragment-2.png\"/\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd colspan=\"2\"\u003e\u003cimg src=\"./assets/fragment-lifecycle-log.png\"/\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## License [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nThe MIT License (MIT)\n\n- **Copyright (c) 2024 Jonathan Reátegui**\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjreategui07%2Fdragonballapp_android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjreategui07%2Fdragonballapp_android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjreategui07%2Fdragonballapp_android/lists"}