Destacado
Publicado en Android

WhatsApp Chat Viewer


Con WhatsApp Chat Viewer puedes abrir y leer los chats exportados desde WhatsApp, explorar el hilo de conversación de una copia de seguridad, poder visualizar una conversación de la forma más cómoda, formato similar a WhatsApp.

Sigue leyendo “WhatsApp Chat Viewer”
Publicado en Android

Solventar problemas del Kotlin Plugin 4.2 en Android Studio


Siempre ccuando hay una actulización del Gradle algo se rompe o no acaba de ir fino como esperabamos, si has decidido en actualizar android Studio y tambien actualizar el gradle pero luego al crear build te devuelve el error

Kotlin version that is used for building with Gradle (1.5.0) differs from the one bundled into the IDE plugin (1.5.0-release-764)

Sigue leyendo “Solventar problemas del Kotlin Plugin 4.2 en Android Studio”
Publicado en Android

Crear una Splash Screen usando Kotlin en Android


La pantalla de bienvenida (SplashScreen) es la primera pantalla visible para el usuario cuando se inicia la aplicación.
Es la primera experiencia del usuario con la aplicación, por lo que se considera una de las pantallas más importantes de la aplicación.
Se utiliza para mostrar información sobre el logotipo de la empresa, el nombre de la empresa, etc.
También podemos agregar algunas animaciones a la pantalla de bienvenida.

Creando recursos gráficos

Primero de todo se debe diseñar el splashscreen normalmente es un fondo y el icono de la app centrado en vertical y horizontal
Resolución (7200×1280) le asignamos nombre splascreen_bg.png, se añade el icono y el fondo en transparente, ya se le dará el color desde la app.

Se pone el recurso para la splashcreen en el directorio drawable-xhdpi

Ahora se debe crear la combinación de los recursos de la splashscreen en el directori drawable/splashscreen.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:opacity="opaque">
    <item android:drawable="#FF0000" />
    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/splashscreen_bg" />
    </item>
</layer-list>

Definición del tema

Aquí es donde se define las propiedades del splashscreen:

  • Pantalla completa, con la propiedad android:windowFullscreen se ocultará la barra de estado
  • Barra de navegación translucida con andorid:windowTranslucentNavigation en los dispositivos con la botonera virtual, se mostrará de forma agradable y sin perder la opción de cancelar la carga de la app.
  • Integrar como fondo el recurso gráfico adaptable bg_splashscreen , eso sirve para que el sistema android al cargar la app se muestre la splascreen remplazando la famosa pantalla blanca o negra

En el archivo styles.xml se define el tema AppTheme.SplashScreen

<style name="AppTheme.SplashScreen">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
    <item name="android:windowEnterAnimation">@android:anim/fade_in</item>
    <item name="android:windowBackground">@drawable/splashscreen</item>
</style>

Crear Activity SplashScreen

Se crea una actividad en blanco con nombre SplashScreen.kt y en el AndroidMainfest.xml se debe definir el tema AppTheme.SplashScreen

<activity
    android:name=".SplashScreenActivity"
    android:label="@string/app_name"
    android:launchMode="singleTop"
    android:screenOrientation="portrait"
    android:theme="@style/AppTheme.SplashScreen">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Ahora se define el layout/activity_splash_screen.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SplashScreenActivity">

</androidx.constraintlayout.widget.ConstraintLayout>

Controlando la SplashScreen

Para finalizar se añade el controlador de la pantalla de bienvenida SplashScreenActivity.kt

class SplashScreenActivity : AppCompatActivity() {

    companion object {
        const val TIME_SPLASH_SCREEN = 1200L 
        private val TAG = SplashScreenActivity::class.java.simpleName
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_splash_screen)

        exitSplashScreen()
    }

    private fun exitSplashScreen() {
        val handler = Handler()
        handler.postDelayed({
            launchActivity<MainActivity> { }
            overridePendingTransition(android.R.anim.fade_in, R.anim.zoom_out)
            this.finish()
        }, TIME_SPLASH_SCREEN)
    }
}