티스토리 뷰
안녕하세요 : )
이번에는 android에서 intro 화면 만드는 방법에 대해 알아보도록 하겠습니다. !
Intent와 Thread, Handler를 사용해 intro 화면을 개발해보도록 하겠습니다.
먼저 기본 프로젝트를 만들고 새로운 IntroActivity를 생성하겠습니다.
새로운 activity를 만드는 방법은 File → New → Activity → Empty Activity 에 있습니다.
IntroActivity를 만드셨다면 AndroidManifest.xml 파일을 수정해보도록 하겠습니다.
AndroidManifest.xml은 사진과 같이 app → manifests → AndroidManifest.xml 에 있습니다.
MainActivity를 기본으로 프로젝트를 생성했다면 앱에 기본 시작 화면이 MainActivity로 설정되어 있습니다.
앱을 실행시켰을 때 방금 전 새로 생성했던 IntroActivity가 먼저 실행되어야 하기 때문에 AndroidManifest.xml을 수정하겠습니다.
기존에는 MainActivity 안에 있는 intent-filter를 IntroActivity 안으로 옮겨주시면 됩니다.
<activity android:name=".IntroActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity"/>
애뮬레이터를 통해 앱을 실행시키면 IntroActivity가 먼저 화면에 나타날 것입니다.
이제 activity_intro.xml 파일을 수정해 intro 화면을 꾸며보겠습니다.
intro 화면은 제가 개발한 모든 앱마다 공통적으로 사용될 것이기 때문에 저만의 intro 화면을 제작하겠습니다.
(디자인은 꼭 저를 따라 하지 않으셔도 됩니다!)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
tools:context=".IntroActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_gravity="center"
android:src="@drawable/psyduck" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="park bohee : ("
android:textColor="#000000"
android:textSize="30sp"
android:layout_marginTop="20dp"/>
</LinearLayout>
</LinearLayout>
완성된 저만의 고라파덕 intro 화면입니다.
activity가 있는 package에 IntroThread.java 파일을 만들겠습니다.
java 파일을 만드는 방법은 package에서 마우스 오른쪽 클릭 → New → Java 입니다.
그럼 다음과 같이 IntroThread.java 파일이 생성되었습니다.
IntroThread.java에서 코드를 작성하도록 하겠습니다.
IntroThread 파일에서 Thread를 사용하기 위해 Thread를 상속받아야 합니다.
window를 사용하고 계시다면 ctrl + o 키를 눌러 run() 메소드를 override 해주셔야 합니다.
run() 메소드는 다른 activity 또는 class에서 thread 객체를 생성해 start() 메소드를 호출했을 때 실행되는 메소드입니다.
public class IntroThread extends Thread {
@Override
public void run() {
}
}
그리고 생성자를 통해 handler를 전달받도록 하겠습니다.
handler를 전달받는 이유는 IntroThread에 Thread.sleep() 메소드가 종료했을 때 메시지를 전달받아야 하기 때문입니다.
handler를 import할 때 주의할 점은 꼭 ! android.os.Handler를 import 해주어야 합니다.
import android.os.Handler;
public class IntroThread extends Thread {
private Handler handler;
public IntroThread(Handler handler) {
this.handler = handler;
}
@Override
public void run() {
}
}
이제 run() 메소드 안에 Thread.sleep() 메소드를 사용하고 Thread.sleep() 메소드가 종료되었을 때 handler를 통해 message를 전달받을 수 있도록 코드를 작성해보도록 하겠습니다.
import android.os.Handler;
import android.os.Message;
public class IntroThread extends Thread {
private Handler handler;
public IntroThread(Handler handler) {
this.handler = handler;
}
@Override
public void run() {
Message msg = new Message();
try {
Thread.sleep(3000);
msg.what = 1;
handler.sendEmptyMessage(msg.what);
} catch (Exception e) {
e.printStackTrace();
}
}
}
자 이제 IntroAcitivity에서 thread를 호출하도록 하겠습니다.
IntroAcitivity에 start() 메소드를 통해 IntroThread에 run() 메소드가 실행됩니다.
IntroThread에 sleep() 메소드가 종료되면 IntroThread에 sendEmptyMessage() 메소드를 통해 handleMessage() 메소드가 호출되며 message 값을 전달받습니다.
handleMessage() 메소드 호출을 통해 전달받은 message 값을 검사합니다.
전달받은 값이 1과 같다면 intent를 사용해 IntroActivity → MainActivity로 화면 전환이 이루어집니다.
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class IntroActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_intro);
IntroThread introThread = new IntroThread(handler);
introThread.start();
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 1) {
Intent intent = new Intent(IntroActivity.this, MainActivity.class);
startActivity(intent);
}
}
};
}
설명이 잘못된 점이 있다면 댓글로 알려주시면 감사하겠습니다. ♥
감사합니다. !
'프로그래밍 💻 > android' 카테고리의 다른 글
[Android] 안드로이드 activity 화면 전환 animation (2) | 2019.05.23 |
---|---|
[Android] 안드로이드 setOnItemClickListener cannot be used with a spinner 에러 해결 (0) | 2019.05.14 |
[Android] 안드로이드 스튜디오 테마 변경하기 (0) | 2019.05.12 |
[Android] 안드로이드 illegal character u2028 에러 해결 (0) | 2019.05.08 |
[Android] 안드로이드 This version of Android Studio cannot open this project 에러 해결 (0) | 2019.05.07 |
- Total
- Today
- Yesterday
- github desktop
- 일상
- power mode
- 강의
- nodebird
- 미운코딩새끼
- Inkscape
- python
- Error
- nodejs
- 템플릿
- 정보전산직
- Spinner
- vscode
- EJS
- 프로젝트 업로드
- activiry
- 줌사모
- user setting
- 레이저 커팅
- react
- flutter_form_builder
- Maker League
- Github Pages
- Android
- 줌바 댄스
- OnClickListener
- Live Server
- github
- intro 화면
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |