본문 바로가기

Android/Basic

[Android] 스플래시 화면

스플래시 화면

스플래시 화면은 메인 화면이 보이기 전에 보이는 화면이다. (앱 최초 실행시 보이는 로딩화면) 이것도 화면 단위이므로 액티비티로 만들 수 있다.

본 포스팅은 간단한 스플래시 화면을 구현하는 예제이다.


0. 스플래시 화면으로 사용할 액티비티 생성하기

스플래시 화면을 위한 액티비티는 소스 코드를 만든 후 이 액티비티의 스타일을 지정해주면 된다.

액티비티는 소스 코드(자바 클래스 파일)와 XML 레이아웃으로 구성할 수도 있지만 좀 더 가볍게 구성하기 위해 XML 레이아웃을 만들어 인플레이션하는 방식이 아 매니페스트에서 theme 속성으로 스타일을 지정하는 방식을 사용한다.

스플래시 화면을 구현하는 방법은 여러가지가 있으나, cold start (기기 부팅 후 앱이 처음 실행되거나 시스템에서 종료한 후에 앱을 시작하는 것) 시동에 걸리는 시간을 줄여주는 방법으로 테마를 사용하는 방법이 추천되고 있습니다. 일반적으로 setContentView 를 이용하여 layout 을 만드는 것보다 테마를 이용해서 화면을 보여주는게 더 빠르다고 합니다. - 안드로메다 튜터님

public class SplashActivity extends AppCompatActivity {
// 동작을 지연시키려면 핸들러를 이용하면 된다
Handler handler = new Handler();

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

handler.postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
finish();
}
}, 1000); // 1초 뒤 run() 메서드 실행
}



1. 스플래시에 적용할 스타일 정의하기

스플래시 화면에는 SplashTheme이라는 이름의 스타일이 설정된다.

이 스타일은 /res/values 에 들어있는 styles.xml 에 정의하면 된다.

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash_background</item>
</style>

SplashTheme을 보면 NoActionBar를 상속하여 액션바 부분이 보이지 않도록 했으며 windowBackground 속성에 드로워블을 지정하여 배경으로 보이도록 했다.

배경으로 보여줄 드로어블은 drawable 폴더 안에 넣어주고 XML 로 만들면 된다.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@drawable/splash_base" />

<item android:top="210dp">
<bitmap
android:gravity="top"
android:src="@drawable/c_img_collect_food" />
</item>
</layer-list>

<layer-list> 는 item 을 겹쳐서 보여줄 수 있고, bitmap 을 보여줄 수도 있다.

참고 : http://wawoops67.blogspot.com/2013/01/android-layer-list.html

배경으로 사용할 드로어블을 다음과 같이 정의한다.

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#FF3E50B4"
android:centerColor="#FF7288DB"
android:endColor="#FF7288DB"
android:angle="90"
android:centerY="0.5" />
<corners android:radius="0dp" />
</shape>



2. Manifest 파일 설정하기

매니페스트에서 앱이 최초 실행 되었을 때, 화면에 처음 보여주는 액티비티를 설정할 수 있다. (인텐트 필터로 처음 실행할 화면을 거르는 것으로 보인다.)

<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>

처음 실행하고자 하는 액티비티에 인텐트 필터를 넣어주기만 하면 된다.



'Android > Basic' 카테고리의 다른 글

[Android] Socket 통신 예제(New)  (0) 2020.09.28
[Android] CoordinatorLayout 활용  (0) 2018.10.25
[Android] 페이지 슬라이딩  (0) 2018.09.07
[Android] 트윈 애니메이션  (0) 2018.09.07
[Android] 스레드 애니메이션  (0) 2018.09.07