본문 바로가기
[ Developer ]/Android

[Android] 안드로이드 앱 첫 화면 생성하기

by 김현섭. 2016. 8. 4.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Android App의 첫 화면 만들기 

우선은 이전에 이용했던 Android Beacon 프로젝트를 이용해서 실습을 진행한다
SplashActivity라는 액티비티를 하나 생성해준다




그런 후 Manifest에서 MainActivity에 있는 intent-filter를 SplashActivity로 옮겨준다


1
2
3
4
5
6
7
8
9
10
        <activity android:name=".MainActivity">
 
        </activity>
        <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>
cs


그런 후 theme를 NoActionBar를 지정해준다
이제 activity_splash에서 gravity 옵션을 center로 준다
그리고 background를 준다




그런 후에 Google에서 Logo Image를 검색후에 배경이 투명인 파일을 다운 받고 res -> drawable 폴더 안에 넣는다




그런 후에 ImageView를 추가해서 이미지를 추가시켜준다




위와 같이 이미지가 추가된 것을 볼 수 있다 그리고 나서 이미지 뷰와 텍스트 뷰를 정렬 시켜준다


* activity_splash.xml
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
    <ImageView
        android:id="@+id/ivLogo"
        android:src="@drawable/logo_image"
        android:layout_width="200dp"
        android:layout_height="300dp"/>
 
    <LinearLayout
        android:gravity="center"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
 
        <TextView
            android:gravity="center"
            android:textSize="25dp"
            android:text="곰탱 "
            android:textColor="#DDFF0000"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
 
        <TextView
            android:gravity="center"
            android:textSize="25dp"
            android:text="자이언츠!"
            android:textColor="#dd0000ff"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
 
    </LinearLayout>
cs


위와 같이 작성하면 툴바가 없는 화면이 나오게 된다
이 화면을 앱의 첫 화면으로 만들어 보자





이제 SPlashActivity에서 로직을 작성해본다


* SplashActivity
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  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);
    }
cs



위와 같이 작성되면 시작하고 3초 정도를 보이고 난 후 Main으로 가게된다
postDelayed는 뒤에 초 값을 줘서 시간 이후에 처리를 하겠다는 명령어이다

그러면 우리가 작성한 로고가 뜨고 3초 후 MainActivity를 실행하게 된다
APP의 첫 화면을 생성한 것이다


@ Beancon 이용해 로고화면 띄우기
MyApplication.java에서 beaconManager를 다음과 같이 로직 변경을 해주면 된다


* beaconManager
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        // Android 단말이 Beacon 의 송신 범위에 들어가거나, 나왔을 때를 체크한다.
        beaconManager.setMonitoringListener(new BeaconManager.MonitoringListener() {
            @Override
            public void onEnteredRegion(Region region, List<Beacon> list) {
                //showNotification("들어옴", "비콘 연결됨" + list.get(0).getRssi());
                Intent intent = new Intent(getApplicationContext(), SplashActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.putExtra("executeType""beacon");
 
                getApplicationContext().startActivity(intent);
            }
            @Override
            public void onExitedRegion(Region region) {
                //showNotification("나감", "비콘 연결끊김");
            }
        });
cs


위와 같이 작성 후에 SplashActivity에서 인텐트를 받아준다

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
public class SplashActivity extends AppCompatActivity {
 
    private Handler handler;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
 
        String executeType = getIntent().getStringExtra("executeType");
        if ( executeType == null ) {
            executeType = "";
        }
        
        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);
    }
}
cs


위와 같이 작성 후에 핸드폰을 통해서 비콘 신호를 받으면 앱 로고가 뜨게 된다
위의 소스를 응용해서 각각 조건마다 다른 액티비티를 띄울 수도 있다


* SplashActivity
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
31
32
33
    private Handler handler;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
 
        String executeType = getIntent().getStringExtra("executeType");
        if ( executeType == null ) {
            executeType = "";
        }
 
        handler = new Handler();
        final String finalExecuteType = executeType;
        boolean beacon = handler.postDelayed(new Runnable() {
            @Override
            public void run() {
 
                Intent intent = null;
 
                if ( finalExecuteType != null && finalExecuteType.equals("beacon")) {
                    intent = new Intent(SplashActivity.this, CouponActivity.class);
                }
                else {
                    intent = new Intent(SplashActivity.this, MainActivity.class);
                }
 
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
                finish();
            }
        }, 3000);
    }
cs


CouponActivity를 대충 하나 생성해서 다른걸 열리는 것을 보자
앱을 첫 실행을 했을 때는 로고가 뜬 후 메인액티비티가 열린다  하지만 비콘을 통해 접근하면 로고 화면 이후에 쿠폰 액티비티로 넘어가게 된다