안드로이드

안드로이드 스플래시화면 만들기 without layout xml

알통몬_ 2018. 9. 5. 12:51
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


오래 전에 Handler를 사용해서 스플래시 액티비티를 구현했던 적이 있습니다.

그래서 그 기억을 떠올려 스플래시 화면을 구현하려고 했는데,

구글에 검색을 하다보니, 스플래시 화면은 아주 잠깐 보여지고 지나가는게 좋다고

하더라구요.

그래서 찾아보던 중, layout 폴더 아래 activity_splash.xml을 사용하지 않고

drawable 폴더에 xml 이미지를 하나 만들고, styles.xml 을 사용해서

스플래시 화면을 구성하는 방법이 있기에 포스팅해 봅니다.


필요한 것들

SplashActivity.java

정말 간단합니다.

public class SplashActivity extends ParentActivity {

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);
finish();

}
}


그냥 로그인 액티비티로 넘어가는 코드만 짜주면 끝!


manifest.xml 간단한 설정

<activity android:name=".activity.SplashActivity"
android:screenOrientation="portrait"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

android:theme="style/SplashTheme"

코드만 추가해주었습니다.


drawable/splash.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/white" />
<item android:id="@+id/splash_layer"
android:top="72dp"
android:bottom="72dp"
android:left="72dp"
android:right="72dp">
<bitmap android:src="@drawable/images"
android:gravity="center"/>
</item>
</layer-list>
<item android:drawable="@color/white" />

배경색 설정입니다.

<bitmap android:src="@drawable/images"
android:gravity="center"/>

원하는 이미지를 images 자리에 넣어주고,

gravity를 center로 지정해줍니다.


styles.xml 새로운 style 하나 만들기

<style name="SplashTheme" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowBackground">@drawable/splash</item>
</style>


위에서 순서대로 쭉 만들어주면 어렵지 않게 스플래시 화면을 구현할 수 있습니다.


스플래시가 보여지는 시간은, 넘어갈 액티비티의 준비가 완료되면 끝난다고 하네요.


이상입니다. 감사합니다.


반응형