상태바를 삭제하는 기능은 SDK 버전에 따라 다른 코드를 사용해야 하기 때문에 소개하기가 매우 어렵습니다. 여기서는 코드를 소개하기 보다는 status bar를 삭제하는 종류를 소개하는데 중점을 두었습니다.

 

제가 테스트한 환경은 아래와 같습니다.

 

Android Studio version 4.2.1
 
compileSdkVersion 30

defaultConfig {
   
applicationId
"copycoding.tistory.statusbar"
   
minSdkVersion 19
   
targetSdkVersion 30
   
versionCode 1
   
versionName "1.0"

 

일단 textview를 하나 만들어서 실행을 해 봅니다.

 

<TextView
   
android:id="@+id/button"
   
android:layout_width="match_parent"
   
android:layout_height="321dp"
   
android:text="Hellow"
   
android:background="#CCCCCCCC"
   
android:textAlignment="center"
/>

 

 

1. Status bar 삭제

 

상태바의 영역을 완전히 삭제하는 방법 입니다.

 

1.1 xml 이용

상태바 영역을 xml을 이용하여 삭제하는 방법입니다.

 

<!-- Customize your theme here. -->
<item name="android:windowFullscreen">true</item>

 

상태바가 사라지고 Title bar 와 콘텐츠 영역이 위로 올라갑니다.

 

 

1.2 java 이용

 

이번에는 java 코드를 이용하여 상태바 영역을 삭제하는 코드 입니다.

 

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.
FLAG_FULLSCREEN);

 

또는 다음과 같은 방법을 이용할 수 있습니다.

 

View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);

 

 

2. Status bar 삭제/아이콘 유지

 

이번에는 상태바에 있는 아이콘들은 그대로 놓아두고 상태바 영역을 삭제하는 방법입니다.

 

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    Window w = getWindow();
    w.setFlags(WindowManager.LayoutParams.
FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}

 

 

3. Status bar 사용

 

이번 예제는 상태바 영역을 삭제하지 않고 콘텐츠 영역을 확장하는 방법입니다.

표현이 정확하지 않겠지만 위에 있는 내용과 어떤 차이가 있는지 직접 보면 이해가 되실겁니다.

 

<item name="android:windowTranslucentStatus">true</item>

 

 

 

4. Source code 위치

 

xml : res > value > themes.xml
     파일에서 <!-- Customize your theme here. --> 
     이 코드 하단에 추가 합니다.

java : MainActivity.java > onCreate()
    파일에서 setContentView(R.layout.activity_main);
    이 코드 하단에 추가 합니다.

 

- copy coding -

 

요즘 다시 오미크론 때문에 꿈틀대던 해외여행의 열기가 식어버렸네요.  꽃피는 봄이오면 가까운데라도 갈 수 있을까 했는데 방콕이나 방굴라데시로 여행을 떠나야 하나 봅니다.

그래도 해외로 가는 사람들이 없는건 아니죠.

 

 

오늘은 아는 사람이 미국에 간다고 해서 인천공항에 가게 되었습니다.  대부분의 국가에서 코로나 19 음성 확인서를 요구 하는데 미국은 24시간 이내에 검사를 해야 한다고 하는데 다행히 공항에서 검사를 하고 확인서를 1시간 후에 발급 받을 수 있습니다.

 

음성확인서 발급은

- 미리 인터넷 또는 전화로 예약 신청을 하던가

- 현장에서 신청을 할 수 있습니다.

 

인터넷 예약은 https://safe2gopass.com/login  에서 예약을 하면 됩니다.

 

 

 

 

검사 센터는 terminal 1 2terminal 21곳이 있습니다.  출국하려는 Gate에 가까운 곳에 인터넷(모바일) 또는 전화로 예약을 진행하면 됩니다.

 

 

비어있는 시간대를 확인 하고 예약을 하고

 

 

 

비용은 일반 병원에서 실시하는 비용과 비슷한것 같습니다.

 

 

자세한 사항은 https://www.airport.kr/ap_cnt/ko/svc/covid19/medica1/medica1.do

홈페이지에서 확인을 하고

 

예약이 완료되면 문자를 확인하고 공항으로 이동 합니다.

 

 

 

검사센터는 실외에 있습니다.  오늘은 눈도 오고 많이 춥네요.

 

 

예약한 시간에 도착하여 줄을 서면 됩니다.  예약 시간이 아닌 사람이 앞에 있어도 소용 없고요.  간호사가 “1시에 예약하신분, 1PM” 하면서 시간대를 확인하고 출입을 시킵니다.

 

 

검사 후 결과도 동일한 장소에서 줄을 서서 기다립니다.  미국을 가려면 음성확인서가 필요하고검사후 1시간이 되면 결과가 나옵니다. 메일, 문자로 전송해 줍니다. 115분쯤에 검사 했는데 215분쯤에 메일로 보내주네요. 그러면 검사 예약 옆에 있는 [결과지 수령] 팻말에 서 있으면 차례로 결과지를 수령할 수 있습니다.

 

당일 인터넷 예약은 할 수 없지만 검사센터 예약자 바로 옆에 [장예약]을 위한 팻말이 있으니 그곳에 서서 기다려야 합니다. 

 

 

 

만약에 공항에 좀 늦게 도착해서 음성확인서를 수령하기 전에 티켓 체크인을 해야 한다면 메일로 보내온 음성확인서를 티켓 체크인시 핸드폰으로 보여주면 발권을 할 수 있습니다.  대신 출국 심사를 하기 전에는 종이로된 확인서를 받아와야겠죠.

음성확인서는 영문 또는 국문으로 받을 수 있습니다.  미국 출국이니 영문으로 메일을 받았다고 하는 군요.  나도 메일 받고 떠나고 싶다.

 

- copy coding -

 

 

테스트 환경

 

Android Studio version : 4.2.1

compileSdkVersion 30

defaultConfig {
   
applicationId
"copycoding.tistory.statusbar2"
   
minSdkVersion 16
   
targetSdkVersion 30
   
versionCode 1
   
versionName "1.0"

 

 

간단한 테스트용으로 앱을 만드는게 아니라면 title bar는 화면의 상당히 많은 부분을 차지하게 되어 화면 구성을 방해하게 됩니다.

Title bar를 숨기는 방법은 xmljava에서 간단하게 처리가 가능 합니다.

화면을 하나 생성을 하고 textview를 하나 추가해 줍니다.

 

<TextView
   
android:id="@+id/button"
   
android:layout_width="match_parent"
   
android:layout_height="321dp"
   
android:text="Hellow"
   
android:background="#CCCCCCCC"
/>

 

 

 

1. Java 코드로 삭제

 

java에서 삭제하기 위해 Acitvity.java를 열고 onCreate()에 코드를 추가 합니다.

여기서 추가하는 코드의 위치가 중요합니다. layout 이전에 추가를 합니다.

 

@Override
protected void onCreate(Bundle savedInstanceState) {
   
super.onCreate(savedInstanceState);

    requestWindowFeature(Window.
FEATURE_NO_TITLE);
   
getSupportActionBar().hide();

   
setContentView(R.layout.activity_main);

 

 

Title bar가 보이지 않게 되었습니다.

 

 

2. xml로 삭제

 

xml로 타이틀 바를 삭제 하려면 res > themes > themes.xml 파일을 오픈합니다.

아래와 같이 한줄을 추가해 줍니다.

 

<!-- Customize your theme here. -->
<item name="windowNoTitle">true</item>

 

이렇게 한줄만 추가해주면 타이틀 바가 삭제 됩니다.  결과는 동일하게 나옵니다.

 

 

 

3. 전체 코드

 

 

수정된 코드 소스만 올려 봅니다.

 

 

3.1 MainActivity.java

 

public class MainActivity extends AppCompatActivity {

   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);

       
requestWindowFeature(Window.
FEATURE_NO_TITLE);
        getSupportActionBar().hide();
       
       
setContentView(R.layout.activity_main);
    }
}

 

 

3.2 themes.xml

 

<resources xmlns:tools="http://schemas.android.com/tools">
    
<!-- Base application theme. -->
   
<style name="Theme.Statusbar2" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
       
<!-- 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" tools:targetApi="l">?attr/colorPrimaryVariant</item>

       
<!-- Customize your theme here. -->
       
<item name="windowNoTitle">true</item>
    </
style>
</
resources>

 

- copy coding -

 

안드로이드 앱 이름은 최초 생성한 project 명을 이용하여 핸드폰에 설치가 됩니다.

드폰에 설치되면 아래와 같이 설치된걸 볼 수 있습니다.

 

 

이름을 변경 하려면 면저 AndroidManifest.xml 파일을 열고 android:label을 확인 합니다.

 

 

처음 볼때는 위와 같은 프로젝트 이름이 나오는데 한번 클릭 하면 실제 저장된 위치를 찾을 수 있습니다.

 

 

res > values > strings.xml 파일에 실제 이름이 저장되어 있습니다.

 

현재 등록된 이름을 삭제하고 변경하려는 이름을 기입 해 줍니다.

저는 두줄로 나오도록 하기 위해 개행문자를 추가해 주었습니다.

 

<resources>
    <
string name="app_name">테스트용\n이름바꾸기</string>
</
resources>

 

이제 다시 설치를 해보면 원래 등록되어 있던 앱의 이름이 아래처럼 변경이 되는걸 확인 할 수 있습니다.

 

 

- copy coding -


1···18192021222324···118

+ Recent posts