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
);
}
}
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.
