splash screen 가이드는 2가지가 있다.
- placeholder UI: 로딩 전에 UI 등을 placeholder로 미리 보여줄 때 (로딩화면 같은...?)
- branded launch: 앱 시작할 때 순간적으로 브랜드 로고 등을 띄우는 경우
그 중 두번째에 해당하기 때문에 branded launch를 사용할건데,
처음에는 handler를 사용하지 않고 style에서 xml을 list-layer로 만든 뒤 activity_main의 background로 설정 함으로써
일정 시간의 지연 시간 없이 (사용자가 기다릴 필요 없이) 앱이 준비가 다 되면 넘어가도록 하려고 했는데,
아쉽게도 splash 화면에 text가 들어가서 위 방법으로 진행하지 못했다.
text를 꼭 넣고 싶다면 텍스트를 png로 저장해서 비트 맵으로 넣거나 vectorDrawable을 사용하면 되긴 한데,,,
위 두 가지 방법을 쓰느니 그냥 layer xml로 만들고 handler로 intent를 보내기로 했다.
- MainActivity.java
Main에서 SplashActivity를 부른다.
package com.app.priaryapp;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent=new Intent(this, SplashActivity.class);
startActivity(intent);
}
}
- SplashActivity.java --> manifest 파일에 추가하는 것 잊지 말 것
지금은 뒤에 더 추가하지 않았지만, 메인 화면 말고 다른 화면을 띄울거면 run() 함수 내부의 finish() 전에
Intent intent= new Intent(getApplicationContext(), 다른 클래스.class);
startActivity(intent);
위 코드를 추가함으로써 다른 화면으로 넘어갈 수 있다. finish()는 현재 액티비티를 종료하는 함수이다.
아래 코드에서 스플래시 화면은 뒤로가기를 할 수 없도록 onBackPressed() 함수를 추가해 두었다.
package com.app.priaryapp;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
public class SplashActivity extends Activity {
private final int SPLASH_TIME=1000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
finish();
}
}, SPLASH_TIME);
}
@Override
public void onBackPressed(){
}
}
https://material.io/design/communication/launch-screen.html#usage
Material Design
Build beautiful, usable products faster. Material Design is an adaptable system—backed by open-source code—that helps teams build high quality digital experiences.
material.io
나중에 시간 남으면 스플래시 화면에 애니메이션 넣을 예정인데 참고 자료 - xml로 애니메이션 설정하네,,, 신기하다
https://developer.android.com/training/animation
애니메이션 및 전환 | Android 개발자 | Android Developers
Content and code samples on this page are subject to the licenses described in the Content License. Java is a registered trademark of Oracle and/or its affiliates. Last updated 2020-06-20 UTC.
developer.android.com
'Java (+ Spring)' 카테고리의 다른 글
Spring: Spring MVC 설정 하기 (0) | 2020.07.26 |
---|---|
Android: tutorial page (0) | 2020.07.18 |
Java 라이브러리(.jar) 동적 로딩: DynamicJarLoader (0) | 2020.07.08 |
Reflection을 활용한 범용 toString() 함수 만들기 (0) | 2020.07.08 |
enum의 활용법 - 계산기 (0) | 2020.07.07 |