Nuke Olaf - Log Store
[Android] 안드로이드 - splash screen (splash activity) 본문
1. splash 의 사전적 의미
splash
철벅 떨어지다, 끼얹다
https://dictionary.cambridge.org/ko/%EC%82%AC%EC%A0%84/%EC%98%81%EC%96%B4/splash
뭔가 첨벙하고 생겨났다! 그런 의미인것 같다
2. IT 사전에서 말하는 splash screen
https://dev.to/alonsoatoneyra/android-simple-way-to-implement-a-splashscreen-in-your-app-3k0f
splash screen 이란 앱을 열때 나타나는 화면이다. splash screen 은 사용자에게 앱의 첫인상으로 보여진다. 일반적으로 앱의 로고 또는 앱과 관련된 이미지를 표시하는데 사용된다.
https://en.wikipedia.org/wiki/Splash_screen
3. splash screen 이란 무엇이고, spalsh screen 을 왜 사용할까?
splash screen 은 일반적으로 앱을 열 때 나타나는 첫 시작화면이다. 회사 로고, 이름, 광고, 콘텐츠 등을 고정된 시간동안 잠시 표시하고 사라지는 화면이라고 생각할 수 있다.
splash screen 은 앱이 android 기기에서 처음 시작될 때 표시되거나, 앱이 완전히 로드되는데 시간이 걸리는 경우에 앱이 로드되는 동안 사용자에게 화면을 표시하는 방법이 될 수 있다.
그러나, 최근에는 사용자의 기기 성능이 좋아지면서, 이미 앱이 전부 로드된 상태에서 필요없는 splash activity 를 보여주는 것이 불필요한 UX 가 될 수 있다고 생각하는 경우도 있으므로 splash activity 를 사용하기 전에 이 점에대해 생각해보아야 한다.
https://abhiandroid.com/programming/splashscreen
4. splash screen 을 어떻게 사용하는가?
Handler 를 이용해서 보여주는 방법과, 시작 theme 에 style 을 지정해서 보여주는 두 가지 방식을 많이 사용한다.
Handler 를 이용하는 방법은 많은 개발자들이 추천하지 않는 방식이다. 지정된 시간동안 무조건 화면을 보여주기 때문에 사용자의 시간을 불필요하게 소비한다고 생각하기 때문이다.
그대신 activity 의 theme background 를 splash 화면으로 보여주는 방식이 권장된다.
(1) Handler 를 이용하는 방법
splash activity 의 layout.xml 을 만든다
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView android:id="@+id/splashscreen" android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/splash"
android:layout_gravity="center"/>
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World, splash"/>
</LinearLayout>
splash activity 를 handler 로 잠시 보여주고, 지정된 시간이 끝나면 intent 로 메인 화면으로 넘겨준다
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
public class Splash extends Activity {
/** Duration of wait **/
private final int SPLASH_DISPLAY_LENGTH = 1000;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.splashscreen);
/* New Handler to start the Menu-Activity
* and close this Splash-Screen after some seconds.*/
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
/* Create an Intent that will start the Menu-Activity. */
Intent mainIntent = new Intent(Splash.this,Menu.class);
Splash.this.startActivity(mainIntent);
Splash.this.finish();
}
}, SPLASH_DISPLAY_LENGTH);
}
}
(2) activity 의 theme background 를 splash 화면으로 보여주는 방법
res/drawable 안에 splash_backgound.xml 를 만들어준다
<?xml version=”1.0" encoding=”utf-8"?>
<layer-list xmlns:android=”http://schemas.android.com/apk/res/android">
<item android:drawable=”@color/colorPrimary” />
<item>
<bitmap
android:gravity=”center”
android:src=”@mipmap/ic_launcher” />
</item>
</layer-list>
splash_backgound.xml 을 App Theme 의 Style 에 추가한다
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<!-- Splash Screen theme. -->
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash_background</item>
</style>
</resources>
manifest.xml 매니페스트 파일에 변경된 사항을 등록한다
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.androidjavapoint.splashscreen">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<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>
<activity android:name=".HomeActivity" />
</application>
</manifest>
splash activity 를 위한 빈 액티비티를 하나 만들어 준다
package com.androidjavapoint.splashscreen;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Start home activity
startActivity(new Intent(SplashActivity.this, HomeActivity.class));
// close splash activity
finish();
}
}
참고 사이트 >>
https://android.jlelse.eu/the-complete-android-splash-screen-guide-c7db82bce565
'Android' 카테고리의 다른 글
[Android] 안드로이드 - 구글 지도 api 사용하기 위해 SHA-1 키 값을 받아오는 문제 해결하기 (0) | 2020.01.05 |
---|---|
[Android] 안드로이드 - Lottie 란 무엇인가? (앱에 움직이는 이미지 넣기) (0) | 2020.01.04 |
[Android] 안드로이드 - natario1/CameraView 카메라 라이브러리 사용방법 (소스코드) (0) | 2020.01.04 |
[Android] 안드로이드 - natario1/CameraView 카메라 필터 라이브러리 분석 (0) | 2020.01.04 |
[Android] 안드로이드 - view Pager 자동으로 넘기기 (소스코드) (0) | 2020.01.01 |