| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- code=1 오류
- 갤럭시 아이폰 비교
- react
- spring boot
- mac telnet
- code runner
- zero offset
- 리액트 네이티브
- error
- 알고리즘
- 다이소 랜 수신기
- 다이소 무선랜카드
- React Native
- react-native
- zero offset ignore
- 다이소 와이파이
- Docker
- 도커
- Git
- typescript
- 스프링부트
- Data structure
- 자료구조
- CSS
- 다이소 lan 수신기
- 안드로이드 아이폰 비교
- toISOString
- async
- 다이소 와이파이 수신기
- HTML
- Today
- Total
Anyway
[Android Studio] 스플래시 화면 만들기 (앱 타이틀 화면, 로고 화면) 본문
어플을 키면 제작사 로고가 잠깐 나타났다가 사라진 후 메인 화면이 보인다.
이 화면을 스플래시 화면이라고 한다.
스플래시 화면은 단순히 보여주기 용도로 넣는 경우도 있지만, 주로 앱에서 필요한 리소스들을 다운받을 때 대기 화면 용도로 사용한다.
만드는 방법은 간단하다. 스플래시 액티비티 화면을 따로 만들고, 메인 액티비티로 넘어가면 된다.
1. 스플래시 액티비티 생성
첫 화면으로 사용되므로 보통은 제일 처음 만들어지는 MainActivity 를 활용한다.
만약 별도의 스플래시 액티비티를 생성했다면, 첫 화면에 띄우기 위해 AndroidManifest.xml 에 다음과 같이 입력하자.
...
<activity android:name=".TitleActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
...
intent-filter 부분이 바로 해당 액티비티를 첫 화면으로 쓰겠다는 의미다.
2. 타이틀과 액션바 없애기
생성한 액티비티에 타이틀과 액션바를 없애보자.
먼저 res > values > themes > themes.xml 에 다음을 추가한다.
...
<style name="SplashTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
</style>
...
그리고 다시 AndroidManifest.xml 로 돌아와서 아래처럼 수정한다.
...
<activity android:name=".TitleActivity" android:theme="@style/SplashTheme">
...
3. 화면 생성
이제 스플래시로 보여줄 화면을 만들어보자.
첫번째 방법은 Theme 를 활용하여 background 로 로고를 보여주는 방식이다.
res > mipmap 에 사용할 이미지를 추가한다. (drawble 을 이용해도 된다).
그 다음 res > values > themes > themes.xml 에서 아까 추가했던 것을 아래처럼 수정한다. 내가 추가한 이미지는 title.png 이다.
...
<style name="SplashTheme" parent="Theme.AppCompat.Light.DarkActionBar">
...
<item name="android:windowBackground">@mipmap/title</item>
...
이러면 title.png 가 화면 꽉 차게 나타난다.
두번째 방법은 layout xml 파일을 띄우는 것이다. 자신이 원하는 Layout xml 파일을 쓰면 된다.
4. 자바 코드
3초동안 화면을 보여주고 메인화면으로 넘어가는 자바 코드를 짜보자.
package //자신의 패키지
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
public class TitleActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_title); //theme로 지정했다면 삭제한다.
moveMain(1); //1초 후 main activity 로 넘어감
}
private void moveMain(int sec) {
new Handler().postDelayed(new Runnable()
{
@Override
public void run()
{
//new Intent(현재 context, 이동할 activity)
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent); //intent 에 명시된 액티비티로 이동
finish(); //현재 액티비티 종료
}
}, 1000 * sec); // sec초 정도 딜레이를 준 후 시작
}
}
참고로 thread.sleep 으로 delay 를 주면 layout 로딩도 같이 멈추므로 n초 후 실행되는 postDelayed 를 이용하였다.
완성된 화면~

