안드로이드 전체화면 풀스크린

안드로이드 전체화면 구현하기

게임 플레이어 Activity 에서는 전체화면을 제공해주기 위해서

액션 바를 없애거나 상태 바를 없애거나 네비게이션 바를 가려줍니다

액션바 없애기

themes.xml 에서 NoActionBar 를 설정합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<resources>
<!-- Base application theme. -->
<style name="Theme.Main" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>

상태 바와 네비게이션 바 없애기

함수로 만들기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
private fun setFullScreen() {
//상단에 Action Bar 사라지게 하기
supportActionBar?.hide()

//Android 11(R) 대응
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.setDecorFitsSystemWindows(false)

val controller = window.insetsController
if (controller != null) {
//상태바와 네비게이션 숨김
controller.hide(WindowInsets.Type.statusBars() or WindowInsets.Type.navigationBars())
//화면 끝을 스와이프 하면 나타나게 설정
controller.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
}
} else {
//R 버전 이하 대응
window.decorView.systemUiVisibility = (
View.SYSTEM_UI_FLAG_IMMERSIVE
or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_FULLSCREEN)
}
}

스플래시 화면 사용 예제 (상태바)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@SuppressLint("CustomSplashScreen")
class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_splash)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.insetsController?.hide(WindowInsets.Type.statusBars())
} else {
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN
)
}
Handler(Looper.getMainLooper()).postDelayed({
val intent = Intent(this, GameListActivity::class.java)
startActivity(intent)
finish()
}, 2000)
}
}