본문으로 바로가기

안드로이드 어플리케이션 만들기 1주차 


- 앞으로 1주일마다 혹은 중간중간 업데이트 사항이 있을 때마다 포스팅 할 예정입니다.

(내용에 틀린부분이 있으면 지적 꼭 부탁드립니다 ! 개발 초보라 제가 이해한 대로 쓰고 있으니 꼭 지적 부탁드립니다.)

 

 안드로이드 개발 서적, 동영상(Do it! 책)을 대충 한번 보다가 만 상태이며, 실제로 부딪히면서 해보는 중입니다. C, Python, Ruby, Java등을 접해보았지만, 제대로 완성작을 만든 적은 아직 없어서, 어플 제작을 통해 완성품을 만들어 볼 것입니다. 


 이론서들을 보면서 몇 달을 공부해도 원하는 어플리케이션(이하 어플)을 못 만들어 낼 것 같아서 개발 일지를 쓰게 되었습니다. 이론서는 물론 중요하다고 생각합니다. 요즘 보기 좋은 책들도 많이 나와서 좋은데, 제 스타일과는 맞지 않는듯 해서 보는 것을 멈췄구요. 적어도 어떤 것들이 있고, 검색하려면 이름이 뭔지도 알아야하고, 어떤 원리인지는 알아야 하니까 1회독은 필수로 하시는 것이 좋은것 같습니다. 실습예제도 해보는게 좋구요.   


 혼자 어플을 만들기로 마음먹고 제일 어렵고, 신경쓰였던 것이 '디자인'입니다. 개발은 대충 버튼 만들어서 클릭했을 때 함수 집어넣고 배치하고 함수넣고만 하면 되는줄 알았으니까요.(개발이 이렇게 어려운지 몰랐습니다. 반성중) 그래서 서점가서 책도 좀 찾아보고, 인터넷으로도 보고 있는데, 일단 ' 디자이너와 개발자가 함께 읽는 안드로이드 UI & GUI 디자인'이라는 책을 사서 1회독한 결과, 만들던 어플을 뒤집어 엎고 다시 만들기로 했습니다. 

 액션바 없이 전체화면으로 만들어보자 했는데, 안드로이드 개발 가이드라는게 있더라구요. 지금은 Material Design이라는 것이고 (2016-03-27), 이에 따른 가이드라인이 있습니다. 처음 만드는 어플이니까 맞춰서 만들어보려고 합니다. 예시로 나와있는 디자인들도 깔끔해서 마음에 들기도 했구요. 


 제가 처음 만들 어플리케이션은 운동일지 기록 어플리케이션입니다. 헬스장에서 운동하면서 그날 그날 운동한 운동명, 중량, 횟수, 세트, 몸무게를 다 외워서 적다보니까 계속 잊어버려서 어플로 만들면 좋겠다고 생각했습니다. 몸무게 변동그래프, 중량 변화등등 기능을 넣으면 좋을 것 같기도 하구요.


 개발일지 내용은 실제로 만들기로 마음먹고 진행하는 순서대로 올리고 있습니다. 맨 처음 구상해놓은대로 진행하면서 중간중간 필요하다고 생각되는 것들을 추가하면서 진행하고 있습니다. 제가 만들면서 궁금해서 찾아본 내용도 작성하고 있습니다. 




Activity와 XML

 일단 기본서를 조금 보셨으면 Activity - XML 파일간의 관계는 다들 아실거라고 생각합니다. 기본적으로 Activity의 onCreate()안에 setContentView(R.layout.activity_main);을 보면 해당 Activity가 실행될 때 res안의 (R이 res를 의미합니다)layout 폴더 안의 activity_main.xml을 보여준다는 것을 알 수 있습니다. 

  제가 처음에 제일 이해가 안 갔던 것은  언제 Activity에 써줘야 하고, 언제 xml에서 그려줘야 하는지 였습니다. 구글링을 해보면 어떤 사람은 Activity에서 Button button = new Button(this);처럼 만들기도 하고, 어떤 사람은 xml에서 간단하게 그려주기도 하고 그랬거든요. 찾아본 결과 결론은 둘 다 가능하고, 원하는 대로 쓰면 된다는 것입니다. 


참고 사이트 : https://kairo96.gitbooks.io/android/content/ch4.3.html  (액티비티에 뷰를 추가하는 방법)


참고 사이트에서 보시다시피 두가지 경우 동일하게 사용할 수 있는데요. 제가 공부하면서 내린 결론은 버튼을 눌렀을 때 발생하는 onClick에 해당하는 함수이름 같은 것은 xml에서 설정해주고, Activity에서는 해당 함수(메소드라고도 하죠)는 Activity에서 선언해주는 것입니다. 모양이나 위치등은 xml에서 그려주고, 발생하는 동적인 사건들(리스너나, 온클릭같은 경우)은 Activity에서 만들어 주는 것입니다.

 



SplashActivity 만들기

 초기메뉴를 작성하려다가 카카오톡처럼 어플에 들어가면 처음에 이미지가 뜨는 것이 생각났습니다. 그래서 어플 초기화면은 어떻게 만드는지 알아봤습니다. 

 어플 초기화면으로 검색해보니 Splash Screen이라고 부른다는 것을 알았고, 초기 이미지를 Splash Image라고 부른다는 것을 알아냈습니다. 


 이미지는 나중에 만들더라도, 맨 처음에 화면은 뜨게 만들고 싶어서 찾아본 결과입니다. 


새로 Activity를 만들고(저는 SplashActivity로 만듦) onCreate()내부에 아래 내용을 넣어준다.

Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
finish();
}
};

handler.sendEmptyMessageDelayed(0, endTime);


- SplashActivity.class

 

sendEmptyMessageDelayed에 들어간 1000이 1초를 뜻합니다. 1초 후에 메시지를 보내고 핸들러가 메시지를 받고, finish()를 실행하게 됩니다. 

새로운 handler 생성 -> handler에 빈 메시지를 보낸다 -> 메시지가 handleMessage의 매개변수인 msg로 들어가고 -> handleMassage()내부의 내용인 finish()가 실행, 액티비티가 종료되는 메커니즘으로 보입니다.

 

Manifest.xml에는 

<activity android:name=".SplashActivity">
</activity>

- AndroidManifest.xml

내용을 추가해줍니다. 

아직도 시작하면 MainActivity가 먼저 실행되므로, MainActivity에서 Splash로 연결하는 코드를 넣어야 합니다.

startActivity(new Intent(this, SplashActivity.class));

 -MainActivity.class

를 onCreate()안에 맨 첫줄로 넣어주면 됩니다.


저 코드는 

Intent intent=new Intent(this,SplashActivity.class);
startActivity(intent);

 를 줄여서 한줄로 나타낸 것이다.


이제 실행하면 MainActivity 실행 -> SplashActivity 실행 -> 일정시간(위에서는 1초) 뒤에 SplashActivity 종료 과정으로 진행됩니다. 


참고 사이트 : http://isulnara.com/wp/archives/288 (안드로이드 스플래시 화면 띄우기, 가로세로 전환시 문제 해결)

http://baekhorang.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%95%B1%EB%94%94%EC%9E%90%EC%9D%B8-05-%EC%8A%A4%ED%94%8C%EB%9E%98%EC%8B%9C-%EC%9D%B4%EB%AF%B8%EC%A7%80Splash-Image-%EC%A0%9C%EC%9E%91%ED%95%98%EA%B8%B0

(스플래시 이미지 만들기)




Google Material Icon 구하는 방법

 

 이제 액션바에 쓰기 버튼을 넣고, 입력창이 있는 Activity로 이동하려고 합니다. 쓰기 버튼이 없으니 만들어야 되는데, 아이콘은 어디에 있을까요. 

Material 디자인의 아이콘을 찾아본 결과


참고 사이트 : https://github.com/google/material-design-icons/ (아이콘을 다운 받을 수 있는 링크)




 Google Material Design 가이드


참고 사이트 : http://www.slideshare.net/flashscope/transitionpractice (안드로이드 메테리얼 디자인 transition, cardview 맛보기)

http://www.slideshare.net/wonchoel/material-design-45978879(머티리얼 디자인)

https://www.youtube.com/watch?v=Q8TXgCzxEnw (Material Design 유튜브 동영상 by 구글)

http://www.materialpalette.com/(Material 배색 사이트)


         




 다음주차 개발일지가 적힐때까진 수시로 업데이트 합니다.