본문 바로가기
코딩과 알고리즘

크레이의 앱개발 도전기#1. 빠른 토스트 메시지

※ 이 게시글은 크레이의 IT개발 관련 성장기를 다루고 있습니다. 관련지식이 좀 있어야 이해되실 수 있습니다. 가벼운 마음으로 읽어보시고 흥미로우면 적성에 맞을 수도 있습니다 :)

크레이가 아직 도전해보지 못한 큰 분야가 있었는데요.

바로 모바일 앱입니다.


모바일 웹모바일 앱은 차이가 있습니다.
모바일 웹은 스마트폰에서 웹브라우저를 다루는 기술이고
모바일 앱은 스마트폰에 설치해 내장해 실행하는 앱을 만드는 기술입니다.
모바일 웹은 업무적으로 많이 다뤄보았지만 모바일 앱은 좀처럼 시도해보지 못했었는데
최근 구름에듀 강좌를 보니 너무 잘 가르쳐주셔서 의욕이 생겼습니다.

https://edu.goorm.io/learn/lecture/15564/현직개발자가-알려주는-안드로이드-앱-개발 

이 글은 강좌형태가 아니니 강좌글은 위 링크 내용을 봐주시면 감사하겠습니다.
무료강좌인데 너무 잘 가르쳐 주시더군요 ㅎㅎ


가장 안드로이드 개발을 쉽게 접하는 방법은 바로 안드로이드 스튜디오를 설치하는 방법이라 합니다.
바로 아래와 같은 프로그램입니다.

아래 링크에서 프로그램을 다운로드받아 설치하면 완료!

https://developer.android.com/studio

처음 프로그램을 실행하면 무언가를 한참 설치하는데요.
화면 우측 아래에 로딩상태가 표시됩니다.
주의할 것은 이 로딩바가 완전히 사라진 다음에 시작해야 한다는 것이지요.
여유를 가지고 커피 한잔과 함께 기다리다 보니 준비가 되어 있었습니다.

위 강좌글을 몇개 따라해 보다가,
아, 이런걸 만들어보면 어떨까 해서 만든 아주 간단한 예제가 있는데요. 
오늘 아내가 즐거운 목소리로 한 가지 소식을 들려준 것에 착안하여
안드로이드 로봇 이미지를 클릭하면 토스트 메시지를 바꿔가면서 보여주는
공개하기에는 약간 시시한(?) 예제를 만들어 보았습니다.
보여주니 아내가 웃더라구요 :)


여기서 로봇 이미지를 클릭하면 안드로이드에서 주로 볼 수 있는 토스트 메시지가 출력되는데요.


위 강좌에 있는 내용이지만, 약간 변형해보았습니다.

그것은 클릭할 때마다 토스트 메시지가 바뀐다는 것이지요.
그리고 지연시간 없이 바로 출력되는 것이 핵심입니다. ( toast.cancel() 메소드가 핵심 키워드! )


지연 없는 토스트 메시지 사용을 위해 다른 분의 게시글도 참고를 했는데요.
대신 코드는 그대로 사용하지 않고 다른 방식으로 작성하였습니다.
MainActivity.java 코드는 아래와 같습니다.
코드량을 훨씬 줄일 수는 있으나 첫번째 도전기라 이 선에서 마무리하려고 합니다.

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    ImageView img;
    int count=-1;
    private Toast toast;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        img = (ImageView) findViewById(R.id.img);
        img.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                count++;
                switch(count % 3){
                    case 0:
                        if(toast != null)toast.cancel();
                        toast = Toast.makeText(getApplication(), "헬로, 성진", Toast.LENGTH_SHORT);
                        toast.show();
                        break;
                    case 1:
                        if(toast != null)toast.cancel();
                        toast = Toast.makeText(getApplication(), "취업을 축하하오", Toast.LENGTH_SHORT);
                        toast.show();
                        break;
                    case 2:
                        if(toast != null)toast.cancel();
                        toast = Toast.makeText(getApplication(), "쵸코도 건배!", Toast.LENGTH_SHORT);
                        toast.show();
                        break;
                }

            }
        });
    }
}

 

사실 이 부분을 처음에 이렇게 작성했는데요.
이미지를 터치하자마자 앱이 바로 꺼지는 문제가 있었습니다. 
toast 가 처음에 메시지 형태로 초기화된 적이 없어 null 이었기 때문인데요.

case 0:
    toast.cancel();
    toast = Toast.makeText(getApplication(), "헬로, 성진", Toast.LENGTH_SHORT);
    toast.show();

 

아래와 같이 코드를 수정하여 정상작동을 확인할 수 있었습니다.

case 0:
    if(toast != null)toast.cancel();
    toast = Toast.makeText(getApplication(), "헬로, 성진", Toast.LENGTH_SHORT);
    toast.show();

이걸 안해주었다고 이유없이 실행중 앱이 중단되다니...
옛날 C언어로 개발하던 시절이 생각나더군요.


크레이의 안드로이드 도전기 #1편은 여기서 마무리하겠습니다.
아무쪼록 찾아와주시는 모든 분들께 감사드리며
하나님의 축복과 평안이 함께 하시기를 바랍니다~