카카오톡, 네이버, 구글 등 여러 앱들은 대부분 스플래시 화면이라고 하는 것을 가지고 있다.
앱 실행시 잠깐 로고가 뜨는 화면을 말하는데, 오늘은 그것을 만들어보려고 한다.
내가 진행할 강의는 인터넷에 있는 다른 안드로이드 스플래시 화면 만들기 강의랑은 다른점이 있는데, 바로 Thread-Handler를 사용하지 않는다는 것이다.
Handler를 사용해서 만드는 방법은 지정한 시간 후에 화면이 넘어가게하는 방법인데, 아래 단점과 같은 이유로 별로다…
여러분의 앱 로고가 아무리 멋지다 하더라도 로딩이 다 끝났는데 스플래시 화면을 봐 줄 사람은 없다. ㅠㅠ
Handler 사용시
장점지정한 시간동안 스플래시 화면을 보여줄 수 있다.
단점지정한 시간동안 사용자를 억지로 기다리게 한다.
내가 만들 스플래시 화면은 순수하게 앱 로딩이 끝나면 전환되는 스플래시 화면! 이다.
drawable 폴더에 background_splash.xml 만들기
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 배경 -->
<item
android:drawable="@color/cardview_light_background"/>
<!-- 로고 -->
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_launcher"/>
</item>
</layer-list>
스플래시 이미지가 될 화면이다. 코드로 적혀있어서 무슨 화면이 될지 모르실 분들을 위해서 사진을 준비했다.
앱의 로고를 가운데 넣고,#EEE정도되는 color를 배경에 깐 모습이다.
디자인은 여기에서 여러가지 건드리면된다.
xml이 준비되었다면 다음 단계로 넘어가면된다.
values/styles.xml 수정하기
<resources>
...
<!-- 아래 스타일을 추가해 준다 -->
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item>
</style>
</resources>
values 폴더 안에 있는styles.xml에서 새로운 스타일을 하나 추가 해 준다.
이름은 SplashTheme 이라고 임의로 명명하겠다.
SplashActivity.java 생성
public class SplashActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// MainActivity.class 자리에 다음에 넘어갈 액티비티를 넣어주기
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("state", "launch");
startActivity(intent);
finish();
}
}
SplashActivity.java파일을 만들어서 위와 같이 입력해준다.
지금은MainActivity.class로 넘어간다고 했지만, 여러분의 앱의 메인 액티비티 이름을 넣으면된다.
AndroidManifest.xml 수정하기
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gold24park.mcpeguidebook">
...
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:name="com.gold24park.mapemasterbook.util.AnalyticsApplication"
android:theme="@style/AppTheme">
<!-- 시작 액티비티를 SplashActivity로 설정, android:theme를 SplashTheme로 설정 -->
<activity android:name="com.gold24park.mapemasterbook.SplashActivity"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.gold24park.mapemasterbook.MainActivity"></activity>
</application>
</manifest>
AndroidManifest.xml에서 주석을 참고하여 수정하면 완성!
'프로그래밍 > Android' 카테고리의 다른 글
안드로이드 이미지 URL로 표시하기 (Android ImageView with image url) (1) | 2019.05.06 |
---|---|
안드로이드 Admob 종료 및 뒤로가기시 전면광고 추가하기 (6) | 2019.04.24 |
안드로이드 URL에서 메타데이터 얻기 (Android get metadata from url) (0) | 2019.04.06 |
[안드로이드] 이메일 인텐트 보내기 (Intent ACTION_SEND Email) (2) | 2019.03.25 |
[안드로이드] Admob 광고 게재가 중단: GOOGLE PLAY 삭제 해결방법 (1) | 2019.03.25 |