많은 앱들을 보면 앱을 실행한 뒤 앱의 메인 화면이 화면에 보이기 전에 앱의 로고나 이름 등이 들어간
화면이 1초 정도 보이고 사라진다. 이러한 화면을 '스플래시 화면(Splash Screen') 이라고 한다.
우리가 자주 사용하는 앱인 카카오톡이나 유튜브만 봐도 별거 아닌 기능이지만 앱의 완성도를 조금이나마 높혀준다.
스플래시 화면은 이름 그대로 '화면'이기 때문에 액티비티로 만들 수 있다.
우선 스플래시 화면을 위한 액티비티를 만들어보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public class SplashActivity extends AppCompatActivity {
Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 우리가 보통 사용하는 액티비티와는 다르게 이 부분에 xml 파일의 인플레이션을 하는 setContentView 메소드가 없음
handler.postDelayed(new Runnable() { // 핸들러로 지연시키는 메소드
@Override
public void run() {
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
finish(); // 메인 화면에서 뒤로 가기를 눌렀을 때 앱이 꺼지게함, finish()가 없는 상태에서
// 뒤로 가기를 누르면 다시 스플래시 화면으로 돌아가서 고정됨
}
}, 1000); // 핸들러로 1초 지연시킴
}
}
|
cs |
스플래시 화면을 xml파일이 아닌 '테마(Theme)' 를 이용해서 만들 것이니 xml은 그냥 만들어 놓기만 하면 된다.
그리고 매니페스트 파일로 가서 첫 시작 화면을 다음과 같이 스플래시 화면으로 수정해야된다.
1
2
3
4
5
6
7
8
9
10
|
<activity android:name=".MainActivity" />
<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
|
cs |
그런데 위의 매니페스트 코드에서 좀 낯선 부분이 있을 것이다.
이제 부터 우리가 다룰 '테마(Theme)' 라는 것인데 테마를 이용하면 앱 디자인의 세부사항을 UI 구조 및 동작과
분리할 수 있다는 장점이 있다. 그 '테마'에 대한 정의를 스플래시 액티비티에 해놓았고 이제부터 테마를
직접 만들어보자.
매니페스트에 미리 정의해놓은 테마 이름을 res/values/theme.xml 파일에 들어가서
1
2
3
|
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar" >
<item name="android:windowBackground" >@drawable/splash_background</item>
</style>
|
cs |
위와 같이 스타일로 설정해놓는다. 그리고 NoActionBar를 상속해서 액션바 부분이 안 보이도록 설정하고,
windowBackground 속성에 우리가 만들어야 할 드로어블을 지정해서 배경으로 보이게 할 것이다.
그럼 드로어블 파일도 만들어보자.
1
2
3
4
5
6
7
8
9
|
<?xml version="1.0" encoding="utf-8"?>
<item android:drawable="@drawable/splash_base" />
<item android:top="210dp" >
<bitmap android:src="@drawable/colorlogo" android:gravity="top" />
</item>
</layer-list>
|
cs |
위의 코드에서 보면 item 태그가 두 개가 들어 있는 것을 알 수 있는데,
첫 번째 item 태그는 화면의 전체를 채울 것이고, 두 번째 item 태그는 이미지를 가져와서 특정한 위치에
놓을 것이다. 여기서 또, 화면의 전체를 채울 드로어블 파일을 만들어야한다.
1
2
3
4
5
6
7
8
9
10
11
12
|
<?xml version="1.0" encoding="utf-8"?>
<gradient
android:startColor="#acffef"
android:centerColor="#cbff75"
android:endColor="#66f8f0"
android:angle="180"
android:centerY="1.5" />
<corners android:radius="0dp" />
</shape>
|
cs |
배경색을 위와 같이 설정할 수 있다. 본인이 원하는 대로 수정해보면 된다.
피드백은 환영입니다.
'프로그래밍(programming) > 안드로이드(android)' 카테고리의 다른 글
[210728] 안드로이드 리사이클러뷰(RecyclerView) 아이템 추가하기(addItem()) (0) | 2021.07.28 |
---|---|
[210618] 안드로이드 Parcelable 로 데이터 전달하기 (3) | 2021.06.18 |
[210609] 안드로이드 SharedPreferences로 데이터 저장 및 복원 (0) | 2021.06.09 |
[210601] 안드로이드 리사이클러뷰 역순 출력 (0) | 2021.06.01 |
[210529] 안드로이드 옵션 메뉴(Option Menu) (0) | 2021.05.29 |