-
[안드로이드] 시작화면 만들기개발/안드로이드 2018. 9. 15. 19:27
@markdown
보통 앱을 시작하면 로딩과 함께 3초가량 시작화면이 나온다.
- **만들 파일**
./src/SplashActivity.java
./res/layout/activity_splash.xml
- **수정할 파일**
./manifest/AndroidManifest.xml
- **추가가 필요한 파일**
./res/drawable/logo.png
(시작화면에 사용할 로고 이미지파일)
1. activity_splash.xml
```xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/logo"/>
</android.support.constraint.ConstraintLayout>
```
2. SplashActivity.java
```java
public class SplashActivity extends AppCompatActivity {
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
//intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
}
}, 3000);
}
}
```
- 안드로이드에서는 sleep이 작동안한다.
- 딜레이를 걸고 싶으면 Handler를 사용하여야 한다.
- 사용 방법은 아래와 같다.
```java
int n = 시간(ms);
Handler.postDelayed(new Runnable(){
@Override
public void run() {
/* n초뒤 실행할 동작 */
finish();
}
}, n);
}
```
3. AndroidManifest.xml
```xml
<activity
android:name=".SplashActivity"
android:theme="@style/Theme.AppCompat.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="ml.ainlpstudy.dev.petfinder.MainActivity"
android:theme="@style/Theme.AppCompat.NoActionBar">
</activity>
```
- intent-filter 를 SplashActivity로 변경하고
- MainActivity를 activity로 옮긴다.
반응형