[edwith] 안드로이드 앱 개발 초급 (2)

2019. 5. 28. 17:06Engineer/안드로이드 앱 프로그래밍

반응형

Do it! 안드로이드 앱  프로그래밍에서 언급하지 않은 부분을 얘기할 때도 있고, 2016년 안드로이드 버전에 대한 강의라 바뀐 용어나 없는 기능에 대한 설명도 있는 듯하다. 하지만 알고 있는 내용들은 스킵하면되니 그리 긴 시간을 소요하지 않는다. 중요하다 생각되거나 다시 곱씹어볼 만한 내용들 위주로 스크랩해서 계속 남겨야지. 


 Lecture 2 


   Chapter 1. 화면 구성 요소의 이해




이미지 파일의 배열이 integer로 저장되는 이유는? 

안드로이드가 매번 이미지나 파일과 같은 리소스에 접근하기 위해 경로를 가지고 있을 수 없어서, 편하게 숫자값으로 저장하고 있는 R이라는 파일을 자동으로 만든다. Resource 의 약자 R. 개발자가 수정할 수 없는 파일이다.   

이미지 어댑터를 코딩할때 가장 중요한 메소드는 getView다. 이 메소드는 사진을 보여줄때마다 매번 호출 되므로, 이 코드를 잘 되면 속도가 느리다. 따라서 getView 코드를 잘 짜야한다.  


아래와 같이 setOnClickListener에 this를 넣게 되면, 이 activity 안에서 onClick을 구현해줘야한다.  

Java에서 .뒤에 오는 접두어는 거의다 동사이다. 값을 가져올땐 get, 값을 설정할땐 set, find, show, 값이 true인지 false인지는 is 등등~ 이런 규칙이 있다. 


뷰 페이저를 사용하려면 라이브러리 추가해줘야함. 라이브러리 추가는 build.gradle 파일에 dependencies에 위와 같이 라이브러리 패키지명 입력. 패키지명 마지막에 +는 하위 마이너 버전이 무엇이든 최신것으로 가져와라.  


JAVA에서 원시 타입에서 클래스 타입으로 자동변환이 된다. int형으로 선언했지만 입력 값을 integer형으로 해도 자동변환이 된다. 컴파일러가 다 알아서함. 따라서 위의 코드에서 images가 int형으로 선언 되어있어도 문제 없음. 

뷰 페이저에서는 instantiateItem과 destroyItem 메소드가 가장 중요. 






안드로이드에서 자주 나오는 Context란 안드로이드가 돌아가기 위해서 가장 중요한 데이터를 가지고 있는 집합체. 

위의 코드에서 getLayoutinFlater하는데 context가 앞에 없는 이유는 activity쪽에서 동작하고 있기 때문이다. 

getLayoutinFlater는xml을 읽어다가 JAVA에서 사용할 수 있도록 객체화 하는 작업을 한다. findViewByID도 비슷한 작업. 


위의 빨간 박스 안을 보면 코드가 특이하다. 저것을 풀어 쓰면 아래와 같다. 

  




익명 클래스는 context를 가지고 있지 않다. 따라서 위의 예제에서 Toast에 전달하는 context로  main.this 대신에 this를 넣게 되면 error가 발생한다. 








메뉴 내용은 주로 XML파일로 만듬. 위치는 /res/menu/에. 

그리고 각 메뉴에 들어가는 글자(title)은 strings 파일에 작성. 그렇게 해야 코드 수정하기가 편해지고, 다른 언어 적용하기도 간단해짐. 



getItemID 로 넘어오는 값은 ID인데 이 값은 int 이다. 



   Chapter 2. 환경 설정과 웹뷰 구성 방법


Preference는 액티비티에서 장기간 사용할 데이터를 보관할 수 있는 방법을 제공하는 방법 중에 하나이다. 이를 사용하면 Map처럼 키/값 형태로 데이터를 저장할 수 있으며, 특정 액티비티에서 사용하거나 애플리케이션 내의 여러 액티비티에서 서로 공유 할 수 도 있다. 


데이터를 저장하는 방법

1. 원격 서버에 저장

2. 파일로 저장 (xml, 기타 등등)

3. 데이터베이스 저장

4. Preference를 이용해서 안드로이드 내부 패키지 안에 저장 : ID, Flag 같은.  단순한 데이터를 저장하는데 유용  


단말에 설치된 브라우저를 실행시켜서 웹페이지를 보여주는 방법도 있지만 해당 앱 내에서 웹페에지를 보여주고자 할 경우 웹뷰를 사용









반응형