Recursos para IA

Configurar tela cheia

Para garantir a melhor experiência no SmartApp na Point Smart, é recomendável que a interface seja exibida em tela cheia, sem a barra de navegação do sistema. Essa configuração deve ser feita diretamente no código do seu aplicativo Android e incluída no APK distribuído.

Siga os passos abaixo para implementar o modo fullscreen no seu aplicativo.

Configure o AndroidManifest no seu APK

Atribua o tema de tela cheia a cada Activity que deve ser exibida em tela cheia — por exemplo, a atividade principal e as demais telas do fluxo:

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=".OutraActivity"
    android:theme="@style/Theme.Fullscreen" />

Defina seu tema fullscreen

No arquivo de estilos do app (por exemplo res/values/themes.xml), adicione um estilo que oculte a barra de título e habilite o modo tela cheia:

xml

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

Oculte a UI do sistema

A barra de navegação inferior permanece oculta apenas enquanto o usuário navega dentro do seu SmartApp. Ao passar para a tela de cobrança (o aplicativo de pagamentos nativo do Mercado Pago), o sistema voltará a exibir a barra automaticamente.

Para ocultar as barras do sistema durante a navegação no SmartApp, implemente a lógica de UI imersiva em uma classe base (BaseActivity) e faça com que cada Activity do projeto herdem dela. Isso garante um comportamento consistente em todo o fluxo.

No exemplo abaixo, o modo imersivo é reaplicado quando a janela recupera o foco (por exemplo, após voltar de outra tela do 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
        );
    }
}
Versões recentes do Android
As flags SYSTEM_UI_FLAG_* estão obsoletas a partir da API 30, embora ainda sejam comuns em integrações existentes. Em projetos novos ou ao atualizar o compileSdk, é recomendável revisar a migração para WindowInsetsController na documentação do Android.

Em seguida, faça com que suas telas herdem de BaseActivity em vez de AppCompatActivity diretamente.

Com o AndroidManifest, o tema Theme.Fullscreen e a herança a partir da BaseActivity aplicados, a configuração de tela cheia do seu SmartApp estará pronta. Basta compilar o APK e validar o comportamento na terminal Point Smart.