상태바를 삭제하는 기능은 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 -

 

 

테스트 환경

 

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 -

 

Android에서 sqlite database를 생성하여 사용하다 DB 자체를 다시 만들어야 해서 삭제 하는 방법을 찾아 보았으나 쓸데없는 데이터나 테이블 삭제 방법만 나와서 복사해서 사용하려는 계획을 변경하여 직접 구현을 하게 되었네요.
별로 어려운 일이 아니라 글을 올릴 필요도 없지만 그래도 다음 번에 다시 사용하려면 몇가지 검색을 해야 해서 기록해 둡니다.

sqlite는 파일 구조로 만들어져 있어서 그냥 파일 지우는 방식으로 하면 됩니다.  한가지 알아야 하는 점은 파일 위치가 어디에 있느냐인데 그 경로를 붙여서 파일 삭제를 하면 됩니다.
그렇다면 Database를 추가해야 하는 일이 있다면 파일을 복사하듯 붙여넣으면 된다는 이야기도 되고요.

저는 버튼을 이용해서 삭제를 하였는데 메소드를 만들어서 호출을 해도 됩니다.
DB명 뒤에 .db를 붙여도 되고 생략해도 되는데 나중에 UI Viewer Tool을 사용하게 되면 꼭 db 붙은 파일을 찾아서 그냥 추가해서 사용 합니다.

 

public void btnDrop(View view) {
    String DB_PATH = "/data/data/" + getPackageName();
    String DB_NAME = "TestDB.db";
    String DB_FULLPATH = DB_PATH + "/databases/" + DB_NAME;

    File dbFile = new File(DB_FULLPATH);
    if (dbFile.delete()) {
        System.out.println(" 삭제 성공");
    } else {
        System.out.println(" 삭제 실패");
    }

}

 

이게 끝입니다.  DB 위치는 위에 보이는 것 처럼 /data/data/패키지명 아래에 있습니다. 이거 때문에 글을 남기네요.

 

- copy coding -


123456···17

+ Recent posts