09. [리소스 활용]

728x90

[09. 리소스 활용]

[09-1. 리소스 종류와 특징]

-리소스: 정적인 자원. 변경되지 않는 정적 콘텐츠. 리소스로 분리해서 외부 파일로 만듬

-리소스 구분 : 앱 리소스/ 플랫폼 리소스

[앱 리소스 사용]

-앱 리소스 :앱 개발자가 res 디렉토리에 직접 리소스 추가하는 것

-res 디렉토리 아래에 개발자가 임의로 이름붙인 디렉토리는 X. 하위 티렉터리 추가 X

-리소스 그대로 사용 X. R.Java 파일에 식별자로 등록해서 이용

[앱 리소스 종류]

animator 속성 애니메이션 XML
anim 트윈 애니메이션 XML
color 색상 상태 목록 정의 XML
drawable 이미지 리소스
mipmap 앱 실행 아이콘 리소스
layout 레이아웃 XML
menu 메뉴 구성 XML
raw 원시 형태로 이용되는 리소스 파일
values 단순값으로 이용되는 리소스
xml 특정 디렉터리가 정의되지 않은 나머지 XML 파일
font 글꼴 리소스

 

▶[레이아웃 리소스] - layout 디렉터리

-화면 구성 레이아웃 XML 파일 작성 디렉터리

[이미지 리소스] - drawable 디렉터리

-이미지 리소스 저장 디렉터리

-PNG/JPG/GIF/9.PNG/XML로 작성한 이미지 저장 가능

<XML 이미지 만드는 태그>

<shape> 도형 타입 지정
<corners> 둥근 모서리 그릴 때 사용
<gradient> 그라데이션 색상 지정
<size> 도형 크기 지정
<solid> 도형 색상 지정
<stroke> 도형 윤곽선 지정

 

[실행 아이콘 리소스] - mipmap 디렉터리

-앱 설치 시 실행 아이콘 이미지 리소스 저장되는 디렉터리


[값 리소스] - values 디렉터리

-값으로 이용되는 리소스 저장 디렉터리

-문자열/색상/크기/스타일/배열 등의 값을 XML로 저장

-values 띠렉토리 리소스 파일은 파일명이 R인 파일에 식별자로 등록X

-리소스 파일에 값을 지정한 태그와 name 속성값이 R 파일 식별자로 등록됨

 

<문자열 리소스 등록> : string 태그로 등록

<resource>
          <string name=“app_name”>Test9</string>
         <string name=“txt_data1”>Hello</string>
         <string name=“txt_data2”>World</string>
</resource>

    ➀ 사용 : Xml에서 문자열 리소스 사용

<TextView
         android:id=“@+id/textView”
         android:layout_width=“wrap_content”
         android:layout_height=“wrap_content”
         android:text=“@string/txt_data1”/>

    ➁ 사용 : 코드에서 문자열 리소스 사용

binding.textView.text=getString(R.string.txt_data2)

<색상 리소스 등록> : color 태그로 등록

<resources>
         <color name= “txt_color”>#FFFF00</color>
         <color name= “txt_bg_color”>#FF0000</color>
</resources>

<크기 리소스 등록> : dimen 태그로 등록

<resources>
         <dimen name=“txt_size”>20dp</dimen>
</resources>

<스타일 리소스 등록>: style 태그로 등록

-스타일 속성은 뷰에 설정되는 여러 속성을 한 번에 적용하거나 여러 뷰에 중복되는 속성을 스타일로 정의해 재사용 용도로 사용됨

<resources>
         <style name = “MyTextStyleSub” parent=“MyTextStyle”>
         <iten name = “android:textSize”>@dimen/txt_size</item>
. . .
</resources>

-다른 스타일 상속받아 재사용 가능


[색상 리소스] - color 디렉터리

-<color> 태그로 등록할 경우 : 색상 하나를 리소스에 등록해 사용

- color 디렉토리로 등록할 경우 :특정 뷰의 각 상태에 따른 색상 지정 편리

[폰트 리소스] - font 디렉터리

-글꼴 리소스 지정. TTF/OTF 파일 저장한 후 글꼴 적용할 뷰에서 이용하면 됨


[플랫폼 리소스 사용]

-플랫폼 리소스 : 안드로이드 플랫폼이 제공하는 리소스

-플랫폼 리소스도 R 파일에 등록된 식별자로 이용 가능.

           단 , 앱의 R파일이 아니라, android.R 파일에 등록되어 있음

-플랫폼 리소스를 XML에서 이용할 때는 @android:패턴으로 사용 가능

<XML에서 플랫폼 리소스 사용>

<ImageView
         android:src=“@android:drawable/alert_dark_frame”/>

[09-2. 리소스 조건 설정]

[리소스 조건 설정]

-어떤 리소스를 특정 환경에서만 적용되도록 설정하는 것

-파일명을 똑같이 지정하되, 디렉터리 구분. 리소스 디렉토리 이름 뒤 (-)리소스 조건 설정

-리소스 디렉터리명에 조건 명시하면 각 환경에 맞는 리소르를 알아서 적용할 수 있다

-하나의 디렉토리에 여러 조건 지정 가능 (, 조건 나열 순서 지킬 것)

 

[화면 회전에 대응]

-리소스 조건을 이용 -> 화면 회전 대응 UI 만들 수 O

-가로/세로 출력할 레이아웃 XML 파일을 똑같은 파일명으로 각각 만듬

-, 디렉터리명에 조건 명시하여 기본값과 특정 상황 실행 UI 구분해놓음

[국제 언어 제공]

-리소스 조건을 이용 -> 각국 언어 제공

-문자열 리소스 values 디렉토리 리소스에 등록하며, name값 똑같이 함

-, 두 파일 리소스 조건 명시한다르 디렉토리에 만듬


[09-3. 폰 크기 호환성]

-안드로이드는 다양한 크기로 출시되므로 앱이 폰 크기 호환되도록 구현할 것

-안드로이드 시스템은 자체적으로 기기 크기 구분하여 콘텐츠 크기를 자동으로 맞추지만

                             단, 콘텐츠 크기 논리적 단위 사용하여 지정할 때만 가능

-물리적 단위로 지정한 경우, 시스템 도움 못 받음

[안드로이드 기기 크기 구분]

ldppi 저밀도 화면. ~120dpi
mdpi 중밀도 화면. ~160dpi
hdpi 고밀도 화면. ~240dpi
xhdpi 초고밀도 화면. ~320dpi
xxhdpi 초초고밀도 화면 ~480dpi
xxxhdpi 초초초고밀도 화면 ~640dpi

[크기 지정 논리적 단위]

dp 스크린의 물리적 밀도에 기반 둔 단위
sp dp와 유사. 글꼴 크기에 적용

[크기 지정 물리적 단위]

pt (points) 스크린 크기의 1/72 = 1pt
px 픽셀
mm 밀리미터
in 인치

[화면 정보 가져오기]

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
          val windowMetics : WindowMetrics = windowManaget.currentWinodwMetics
          binding.textView.text = “width: ${windowMetrics.bounds.width()},
                                         “height:${windowMetrics.bounds.height()}”
. . .

-API 30버전부터는 WindowMetrics 사용


[09-4. 메신저 앱의 인트로 화면 만들기] : 실습

<세로 화면> : 기기 언어 영어

<가로 화면> : 기기 언어 영어

<세로 화면> : 기기 언어 한국어 설정

[참고] : Do It 안드로이드 앱 프로그래밍 with 코틀린 

728x90