반응형
안드로이드 전체화면
lean back
사용자가 동영상을 시청할 때와 같이 화면과 거의 상호작용하지 않을 때 사용할 수 있는 전체 화면 환경 설정
lean back 모드를 사용 설정
setSystemUiVisibility()에 SYSTEM_UI_FLAG_FULLSCREEN, SYSTEM_UI_FLAG_HIDE_NAVIGATION을 설정
setSystemUiVisibility(
SYSTEM_UI_FLAG_FULLSCREEN
|SYSTEM_UI_FLAG_HIDE_NAVIGATION
)
immersive
사용자가 화면과 많이 상호작용하는 앱용
setSystemUiVisibility()에 SYSTEM_UI_FLAG_IMMERSIVE, SYSTEM_UI_FLAG_FULLSCREEN, SYSTEM_UI_FLAG_HIDE_NAVIGATION 을 설정
setSystemUiVisibility(
SYSTEM_UI_FLAG_IMMERSIVE
|SYSTEM_UI_FLAG_FULLSCREEN
|SYSTEM_UI_FLAG_HIDE_NAVIGATION
)
lean back로 설정
전체화면 모드를 lean back 모드로 설정하고 보니 status bar와 navigation bar가 불투명한 것이 마음에 안 들었다.
그래서 getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);를 사용해 가장자리를 스와이프 하거나 밑에서 위로 쓸어 올리면 반투명한 statusbar와 navigationbar가 몇 초 올라오고 다시 내려가도록 만들었다.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)은 전체화면 모드 설정중 sticky immersive와 비슷한거 같다.
전체 화면 설정 코드
public class CctvPlayer extends AppCompatActivity {
boolean isFullScreen = false;
private void configureFullScreenButton() {
fullScreenButton = findViewById(R.id.fullScreen);
View decorView = getWindow().getDecorView();
fullScreenButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (decorView.getSystemUiVisibility() == (View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)) {
fullScreenButton.setImageResource(R.drawable.ic_fullscreen_shrink);
isFullScreen = true;
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
);
} else {
fullScreenButton.setImageResource(R.drawable.ic_fullscreen_expand);
isFullScreen = false;
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR
| View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
);
}
}
});
}
//가로 모드 전환시 자동 전체화면 변경
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
fullScreenButton.setImageResource(R.drawable.ic_fullscreen_shrink);
isFullScreen = true;
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
);
}
}
}
반응형
'Android' 카테고리의 다른 글
안드로이드 WebView 전체 화면 설정 (0) | 2024.05.24 |
---|---|
Android Splash 화면 만들기 (0) | 2023.04.26 |
RecyclerView 만들기 (0) | 2023.04.18 |
RecyclerView (0) | 2023.04.16 |
VideoView로 동영상 재생하기 (0) | 2023.04.12 |