엄코딩의 개발 일지

프로젝트를 진행하면서 리소스를 관리하는 방법에 대해 학습해보고, 관련 개념을 정리해보았습니다.


  리소스(res)란?


- 해당 어플리케이션이 동작할 때 사용하는 소스 코드 이외 문자열, 이미지, 오디오, 동영상 등 메뉴 레이아웃 등







  리소스와 소스 코드를 분리시킨 이유는?


- 리소스와 코드를 분리해서 사용하는 이유를 생각해보면, 해당 앱의 개발 및 유지보수를 더 유연하고 효율적으로 할 수 있게 하기 위함입니다.

  

  예를들어, 앱을 개발하다보면 수많은 string을 사용하는데 공통적으로 사용하는 값을 string 리소스 파일에 추가한다면 추후 수정 사항이 생길 경우 해당 string 리소스 파일만 수정하면 됩니다. 또한 한국어뿐만 아니라 다국어를 지원하는 앱의 경우


  string 리소스를 통해 해당 문자열을 관리하는 것이 효율적입니다. ( string 리소스에서 관리안하면............................................................)





  위의 string 리소스를 소스 코드에서 사용하는 방법은 다음과 같습니다.







  color array 사용



- 프로젝트를 진행하다보면 중복 사용되는 color 값들이 많고 이를 배열을 통해서 관리하면 소스 코드가 훨씬 간결해질 수 있습니다.




   위와 같이 array를 설정하고 ( value -> colors ) 위 array를 사용하는 코드는 다음과 같습니다.





  drawable array 사용


- 클릭 리스너를 통해 여러개의 버튼중 하나의 이미지를 변경해야하는 등 drawable를 배열로 관리하면 효율적인 경우가 있을 수 있습니다.

 

  그럴 경우 다음과 같이 array를 통해 drawable 값을 정의합니다.



  위 선언한 drawable array를 사용하기위해서는 TypedArray를 사용해서 담아야 합니다. 


( TypedArray 자세한 설명 : https://developer.android.com/reference/android/content/res/TypedArray )


  소스 코드에서 drwable array를 사용하기 위해 우선 drwable array를 얻습니다.




 특정 이미지의 resource를 변경하기 위해 해당 drawable array를 얻은 객체에 resourceId에 접근하여 index, defValue를 통해 이미지를 얻습니다. ( btn_content_filter_category_01_on 이 되겠죠? )





 위의 getResourceId에 대한 구글 레퍼런스입니다.