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