Recursos para IA

Configurar pantalla completa

Para garantizar la mejor experiencia del SmartApp en Point Smart, es recomendable que la interfaz se muestre en pantalla completa: sin la barra de navegación del sistema. Esta configuración debe hacerse directamente en el código de tu aplicación Android e incluirse en el APK distribuido.

Sigue los pasos a continuación para implementar el modo fullscreen en tu aplicación.

Configura el AndroidManifest en tu APK

Asigna el tema de pantalla completa a cada Activity que deba mostrarse en la pantalla completa. Por ejemplo, la actividad principal y el resto de pantallas del flujo:

xml

<activity
    android:name=".MainActivity"
    android:exported="true"
    android:theme="@style/Theme.Fullscreen">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity
    android:name=".OtraActivity"
    android:theme="@style/Theme.Fullscreen" />

Define tu tema fullscreen

En el archivo de estilos de la app (por ejemplo res/values/themes.xml), agrega un estilo que oculte la barra de título y habilite el modo pantalla completa:

xml

<style name="Theme.Fullscreen" parent="Theme.MaterialComponents.DayNight.NoActionBar">
    <!-- Sin ActionBar -->
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <!-- Pantalla completa -->
    <item name="android:windowFullscreen">true</item>
</style>

Oculta la UI del sistema

La barra de navegación inferior permanece oculta solo mientras el usuario navega dentro de tu SmartApp. Al pasar a la pantalla de cobro (la aplicación de pagos nativa de Mercado Pago), el sistema volverá a mostrar la barra automáticamente.

Para ocultar las barras del sistema durante la navegación en el SmartApp, implementa la lógica de UI inmersiva en una clase base (BaseActivity) y haz que cada Activity del proyecto herede de ella. Así se garantiza un comportamiento consistente en todo el flujo.

En el ejemplo siguiente, el modo inmersivo se vuelve a aplicar cuando la ventana recupera el foco (por ejemplo, al volver de otra pantalla del sistema).

import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity

open class BaseActivity : AppCompatActivity() {

    override fun onWindowFocusChanged(hasFocus: Boolean) {
        super.onWindowFocusChanged(hasFocus)
        if (hasFocus) hideSystemUI()
    }

    @Suppress("DEPRECATION")
    private fun hideSystemUI() {
        window.decorView.systemUiVisibility = (
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                or View.SYSTEM_UI_FLAG_FULLSCREEN
                or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        )
    }
}
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;

public class BaseActivity extends AppCompatActivity {

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus) {
            hideSystemUI();
        }
    }

    @SuppressWarnings("deprecation")
    private void hideSystemUI() {
        getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        );
    }
}
Versiones recientes de Android
Las constantes SYSTEM_UI_FLAG_* están obsoletas a partir de la API 30, aunque siguen siendo habituales en integraciones existentes. En proyectos nuevos o al actualizar el compileSdk, es recomendable revisar la migración a WindowInsetsController en la documentación de Android.

A continuación, haz que tus pantallas hereden de BaseActivity en lugar de AppCompatActivity directamente.

Con el AndroidManifest, el tema Theme.Fullscreen y la herencia desde BaseActivity aplicados, la configuración de pantalla completa de tu SmartApp estará lista. Basta compilar el APK y validar el comportamiento en la terminal Point Smart.