[Java] Android에서 스플래시 화면을 구현하는 4단계
이번에는 Android 앱을 만들 때 스플래시 화면을 구현하는 절차를 정리해 둡니다.
스플래시 화면을 구현할 때 가능한 방법으로
등이 있습니다만, 이번은 전자의 Theme 교체형으로 구현합니다.
1 소개
(1) 완성형
아래 gif와 같이 앱을 탭 → 스플래시 화면 표시 → 몇 초 후에 원래 테마를 적용하여 MainActivity를 표시하는 것을 목표로 합니다.
(2) 스플래시 화면 표시의 대략적인 이미지
(3) 전제 조건
2 실장 순서
(1) 스플래시 화면용 테마(splash.xml)를 작성한다
보려는 이미지 준비
이번에는 아래 이미지를 사용했습니다.
160px × 160px에서 준비한 png입니다. (표시되는 사이즈라면 다른 사이즈에서도 OK입니다.)
파일 이름은 splash_logo.png로 설정되었습니다.
스플래시 화면의 배경색을 설정합니다.
이번에는 이미지를 화면 중심에 표시하기 때문에 이미지 외부의 배경색을 설정합니다.
이미지 자체의 배경을 ■#6A91ED로 설정하고 있었으므로, 같은 색을 color.xml에 정의해 둡니다.
color.xml…
<color name ="background_color">#6A91ED</color>
…
splash.xml 만들기
drawable 폴더에서 마우스 오른쪽 버튼을 클릭 → New → Drawable Resource File을 선택하여 splash.xml을 만듭니다.
이름은 splash, Root element는 layer-lits로 지정되었습니다.
splash.xml에는 다음과 같이 설명합니다.
splash.xml<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:opacity="opaque"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 背景色の設定-->
<item
android:drawable="@color/background_color"/>
<!-- 表示する画像の設定-->
<item>
<bitmap
android:gravity="center"
android:src="@drawable/splash_logo"/>
</item>
</layer-list>
여기까지 splash.xml의 완성입니다.
(2) splash.xml을 적용한 style을 기술한다
이번에는 res/values 안에 themes.xml이 있으므로 그 안에 기재합니다.
옛날에는 res/values 안에 styles.xml을 만들었던 것 같습니다 ... 글쎄, style조차 쓸 수 있다면 문제 없습니다.
themes.xml에는 다음과 같이 추가합니다.
덧붙여 parent에는 원래의 Theme를 설정하고 있습니다만, 경우에 따라서는 NoActionBar를 설정하는 편이 깨끗이 할지도 모릅니다.
Themes.xml …
<style name="SplashTheme" parent="Theme.InfoDevice">
<item name="android:windowBackground">@drawable/splash</item>
</style>
…
(3) MainActivity의 기동시 Theme를 변경한다
AndroidManifest.xml에 스플래시 화면용 테마를 적용합니다.
이때 확실히 원래 테마를 기억하십시오.
(이 예제에서는 원래 Theme_InfoDevice라는 Theme을 적용했습니다.)
변경 전
AndroidManifest.xml <activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
변경 후
AndroidManifest.xml <activity
android:name=".MainActivity"
android:theme="@style/SplashTheme" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
android:name 이하
android:theme="@style/SplashTheme"
추기하고 있습니다. (원래 기재가 있으면, @style/...다음을 스플래시 화면용의 Theme에 재기록합니다.)
(4) MainActivity를 몇 초 기다린 후의 테마로 되돌린다
MainActivity 시작 후 스플래시 화면의 테마가 적용되었으므로 몇 초 동안 기다린 다음 원래 테마로 돌아갑니다.
MainActivity에 기재하는 내용은 아래와 같습니다.
MainActivity.java@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
setTheme(R.style.Theme_InfoDevice); //元々適用されていたテーマ
setContentView(R.layout.activity_main);
…
}
이것으로 완성됩니다.
Reference
이 문제에 관하여([Java] Android에서 스플래시 화면을 구현하는 4단계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/momorito/items/cbb72c66403cf7f61b7f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
…
<color name ="background_color">#6A91ED</color>
…
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:opacity="opaque"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 背景色の設定-->
<item
android:drawable="@color/background_color"/>
<!-- 表示する画像の設定-->
<item>
<bitmap
android:gravity="center"
android:src="@drawable/splash_logo"/>
</item>
</layer-list>
…
<style name="SplashTheme" parent="Theme.InfoDevice">
<item name="android:windowBackground">@drawable/splash</item>
</style>
…
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:theme="@style/SplashTheme" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
android:theme="@style/SplashTheme"
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
setTheme(R.style.Theme_InfoDevice); //元々適用されていたテーマ
setContentView(R.layout.activity_main);
…
}
Reference
이 문제에 관하여([Java] Android에서 스플래시 화면을 구현하는 4단계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/momorito/items/cbb72c66403cf7f61b7f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)