<순서>
1. activity_intro layout 준비
2. IntroActivity 클래스 준비
3. Androidmanifest.xml 수정
수정 또는 추가할 파일은 다음과 같다.
안드로이드 함수 또는 클래스 | ||
함수 OR 클래스 | 설명 | 예시 |
Handloer class | 핸들러 클래스는 간단히 말하자면 메시지를 전달하는 역할을 한다. | |
handler.postDelayed(runnable, 1000) |
postDelayed 함수는 몇초 후 실행되도록 명령하는 역활을 한다. 당므과 같이 1000으로 되어 있으면 1초 뒤에 작동되도록 하는 역활을 한다. |
handler.postDelayed(runnable, 5000); 5초 뒤 작동 |
Runnable interface | Runnable 인터페이스는 구현할 메소드가 run 메소드 하나인 인터페이스이다. | |
run |
run 메소드는 클래스에 속한 함수를 실행시키는 역할을 한다. 자세한 내용은 함수 및 클래스에서 확인해보도록하자 |
|
Intent | 화면간 페이지 전환을 할 때 사용한다 | Intent intent = new Intent(IntroActivity.this, MainActivity.class); |
overridePendingTransition | 타 액티비티에서 전환 또는 종료 함수이다. | overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); |
setContentView | 전달된 layout으로 화면을 구성할 때 사용한다. | setContentView(R.layout.activity_intro); |
public void onBackPressed() | 어플리케이션이 다시 호출되는 것을 방지하고자할 때 사용하는 함수 | @Override public void onBackPressed(){ super.onBackPressed(); handler.removeCallbacks(runnable); } |
1. activity_intro layout 준비
그럼 새 프로젝트에서 작업을 진행해보도록하자.
우선 다음과 같이 Intro 레이아웃을 만들어준뒤 인트로 사진을 넣어준다.
<Intro layaout 코드>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".IntroActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/ic_launcher_round" />
</androidx.constraintlayout.widget.ConstraintLayout>
2. IntroActivity 클래스 준비
package com.example.myapplication;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
public class IntroActivity extends AppCompatActivity {
// 핸들러 클래스의 핸들러 변수를 선언한다.
private Handler handler;
// Runnable 클래스의 runnable 변수를 선언한다.
Runnable runnable = new Runnable() {
@Override
public void run() {
// intent 안에 iIntroActivity 클래스와, MainActivity 클래스를 전달한다.
// 화면간 페이지 전환을 할 때 사용함
Intent intent = new Intent(IntroActivity.this, MainActivity.class);
startActivity(intent);
finish();
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//activity_intro layout으로 화면을 구성함
setContentView(R.layout.activity_intro);
ActionBar bar = getSupportActionBar();
//상단에 액션바 타이틀을 없애기 위해 사용
bar.setTitle("");
//handler 변수에 Handler 객체를 넣는다.
init();
//1초 뒤에 화면 전환을 하게함
handler.postDelayed(runnable, 5000);
}
// init 메소드는 handler 변수에 Handler 객체를 넣는 함수이다.
public void init(){handler = new Handler();}
// 어플리케션이 다시 호출되는 경우를 막기 위하여 호출해줌
@Override
public void onBackPressed(){
super.onBackPressed();
handler.removeCallbacks(runnable);
}
}
3. Androidmanifest.xml 수정
다음과 같이 introActivity에 intent-filter를 넣어야 인트로 실행 후 해당 intent들이 실행될 수 있다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<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">
</activity>
</application>
</manifest>
그럼 한번 프로젝트를 실행해보자.
프로젝트 실행시 다음과 같이 인트로 화면 출력 후
메인화면이 나오는 것을 확인할 수 있다.
'[프로젝트제작&정리] > 스마트폰 비교 앱 제작' 카테고리의 다른 글
[스마트폰 비교 앱] 3. 버튼별 리스트화면(버튼 3개 작성) (0) | 2020.02.16 |
---|---|
[스마트폰 비교 앱] 1. WBS 작성 및 프로젝트 구조 기획 (0) | 2020.02.15 |