Android (안드로이드)

[Android] strings.xml / colors.xml / string · color 파일 참조

Oscar:) 2024. 3. 11. 17:09

 

 

 

 

아직도 위와 같이 텍스트를 작성하고 있는 사람??

 

 

 

노란색 경고창은 가볍게 생각하고 넘어가는 사람도 많다.

 

하지만 가벼운 경고라도 다 이유가 있으니 표시해 주는 게 아닐까?

 

 

경고 내용을 살펴보면 '하드코딩 되었으니, @string 리소스를 사용해' 라는 내용이다.

 

 

 

 

 

이번 포스팅에서는 values 패키지에 있는 리소스 파일을 알아보자.

 

 

 


 

strings.xml

 

 

안드로이드 스튜디오 좌측 프로젝트 탭에서

res > values 패키지 속에 있는 strings.xml 파일을 찾아보자.

 

 

 

파일을 열어보면 대충 다음과 같은 내용이 적혀 있을 것이다.

<resources>
    <string name="app_name">앱 이름</string>
    ...
</resources>

 

 

이 파일에 앱에 들어갈 웬만한 텍스트를 정리해주면 된다.

<resources>
    ...
    <string name="title_text">제목 텍스트</string>
    <string name="button_text">완료</string>
</resources>

 

 

위와 같이 작성했다고 가정하고, 레이아웃 파일을 보자.

 

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/title_text"
    />
    
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_text"
    />

 

strings.xml 파일의 name 속성 값을 호출해주면 된다.

 

 

노란 경고창이 사라진 것을 볼 수 있다.

 

 

결과)

 

당연히 텍스트도 반영이 된다.

 


 

 

🙋‍♀️ 굳이 왜 저렇게 귀찮게 해야해요? 하드코딩하면 뭐가 안 좋아요?

 

가장 큰 이유로는 재사용성과 유지 · 보수의 편리함을 이야기할 수 있다.

 

 

여러 화면에서 동일한 텍스트를 사용한다고 가정해보자.

 

ex) 버튼의 텍스트가 '완료' 였지만, '확인'으로 모두 수정해야 하는 상황

 

 

위 그림과 같이 수정해야할 파일이 많을수록 개발자는 많은 일을 해야 한다.

(화면이 5개면 5번의 수정을, 50개면 50번의 수정을 해야 한다)

 

 


 

 

하지만 strings.xml에서 리소스를 관리했다면 다음과 같이 처리할 수 있다.

 

 

strings.xml의 리소스만 변경해줘도 모든 파일에 적용이 되기 때문에,

유지 · 보수가 훨씬 편리해진다고 볼 수 있다.

 

 

 


 

colors.xml

 

 

values 패키지 안에 있는 또 다른 파일이며, 색상을 관리하는 곳이다.

 

사용법은 위 strings.xml 파일과 동일하다.

 

<resources>
    ...
    <color name="black">#FF000000</color>
    <color name="white">#FFFFFFFF</color>
    <color name="red">#FFFF0000</color>
    <color name="green">#FF00FF00</color>
    <color name="blue">#FF0000FF</color>
</resources>

 

 

각자 알아보기 쉬운 색상을 정리해놓고 이름을 호출하여 사용하면 편리하다.

각자의 앱을 상징하는 색상이 있다면 필수적이라고 생각한다.

 

 

 

색상 코드 관련 내용은 따로 공부하길 권장하고 싶지만,

간단하게만 정리하자면 다음과 같다.

 

6자리 or 8자리로 구성되며 각 자릿수는 16진법을 사용한다.
*16진법 : (0,1 ... 9, A, B, ... F) 까지 해서 16개다.

 

 

6자리인 경우는 RGB에 해당하며 간단히 설명하자면 다음과 같다.

빨강 초록 파랑
  ↓    ↓    ↓
  00    00    00

ex) 빨간색의 경우 앞의 2자리를 최대 수치인 F로 작성해준다.
→ FF0000

 

 

8자리인 경우는 ARGB에 해당하며 A는 Alpha(투명도)를 뜻한다.

투명도 빨강 초록 파랑
   ↓      ↓     ↓    ↓
    00     00    00    00

RGB에 투명도를 높이거나 낮추는 개념이다.


ex) 초록색 + 최대 투명도인 경우
→ FF00FF00

 

 

레이아웃 파일에서는 다음과 같이 참조하면 된다.

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/title_text"
    android:textColor="@color/red"
    />

 

 

 


 

 

 

 

values 패키지를 사용하기가 처음엔 어색하더라도

자주 사용하다보면 금방 적응된다.