안드로이드 4) Resource

밍나·2022년 1월 7일
0

Android

목록 보기
4/36

Concepts of Resource

1. Resource

  • res 하위에 리소스 파일 위치, 이미지 등을 제외하고 대부분 xml 파일 형식으로 리소스를 담는다
  • 리소스를 담으면 리소스를 식별하기 위한 식별자 변수가 R파일에 자동으로 생성되고, 리소스 사용시에는 R 파일에서 참조해서 사용
    • kt에서 : R.drawable.a, R.layout.b, ...
    • xml에서 : @drawable/a, @layout/b, ...
  • 리소스에 해당하는 식별자 변수가 R파일에 자동으로 추가되어서
    • res 하위에 폴더명은 정의된 폴더명을 따라야 함
    • res 하위 폴더들에는 하위 폴더를 생성할 수 없음
    • 리소스 파일은 자바 명명규칙을 지켜야 함(숫자 우선X)
    • 리소스 파일은 처음이든 중간이든 알파벳 대문자를 포함할 수 없음
      image

2. Resource 종류

  • anim : 정적 애니메이션 리소스, Tween animation XML
  • drawable : 이미지 리소스
  • mipmap : 앱 런처 아이콘 이미지 리소스
  • layout : 레이아웃 XML
  • menu : 메뉴 구성 XML
  • raw : 원시 형태로 이용되는 리소스 파일
  • value : 단순 값으로 이용되는 리소스
  • xml : 특정 폴더가 정의되지 않은 나머지 XML 파일

3. Platform Resource

  • 안드로이드 플랫폼에서 제공하여 개발자가 따로 준비하지 않아도 되는 리소스
    • kt에서 : android.R.drawable.a, ...
    • xml에서 : @android:drawable/a, ...

Drawable Resource

1. drawable

  • 이미지 리소스를 지정하기 위한 폴더
  • png, jpg, gif
  • 이용 방법
    • kt에서 : R.drawable.image, ...
    • xml에서 : @drawable/image, ...
  • xml 이미지 : xml로 표현되는 이미지
  • 종류
    • shape : 도형을 의미, 값은 rectangle, oval, line, ring 중 하나
    • corners : 둥근 모서리를 만들기 위해 사용, shape 값이 rectangle인 경우에만 적용
    • gradient : 그라데이션 색상을 지정하기 위해 사용
    • size : 도형의 크기
    • solid : 도형의 색상
    • stroke : 도형에 대한 스트로크 선

Values Resource

1. values

  • 값으로 이용되는 리소스를 저장하기 위한 폴더
  • 문자열, 색상, 사이즈, 스타일, 배열
  • 리소스 파일명으로 식별되지 않고 리소스 태그와 태그의 name 값으로 식별
<resources>
    <string name="app_name">app</string>
    <string name="txt_data1">Hello</string>
    <string name="txt_data2">World</string>
</resources>
textView.text = getString(R.string.txt_data2)
  • 종류
    • string : 문자열 리소스
    • color : 색상 리소스
    • dimen : 사이즈 리소스
    • style : 뷰에 등록되는 여러 속성을 스타일로 등록, (patent : 다른 속성을 override)
<resources>
    <style name="MyTextStyle">
        <item name="android:textSize">@dimen/txt_size</item>
        <item name="android:textColor">@color/txt_color</item>
    </style>
    <style name="MyTextSub" parent="MyTextStyle">
        <item name="android:textColor">#0000FF</item>
        <item name="android:background">@color/txt_bg_color</item>
    </style>
</resources>

Resource Folder Constraint

1. 리소스 조건 명시

  • 리소스가 적용될 조건을 폴더명에 명시
    image
  • mipmap에서 아이콘을 준비했을 때 기기의 dpi에 따라 화면에 나오는 사이즈가 다르다 → 해상도 문제가 발생할 수 있음 → 각 디바이스에 따른 아이콘 이미지를 따로 준비해야 함 → 이미지를 여러 장 준비한다면 어떤 것을 디바이스에 적용할지를 동적으로 결정해야 함 → 그럼 코드에서 if, else-if, else 문을 써야하나? → 리소스 조건 명시법을 사용하면 조건문 없이 이것을 해결할 수 있다
    image
  • 리소스 조건 명시법 사용 방법 : 이미지는 사이즈 별로 준비한 뒤, 폴더명에 조건을 주면 된다(ex : mipmap-mdpi/ic_launcher.png로 설정시 mdpi 폰에만 적용)
  • kt나 xml 파일에서는 폴더명 조건 없이 R.mipmap.ic_launcer 또는 @mipmap/ic_launcher로 작성하여 사용하면 된다

2. 리소스 조건 명시 종류

  • 각각이 특정 폴더에 들어가야하는 것이 아니라 어느 폴더에나 들어갈 수 있음(ex : 언어 및 지역은 values에만 들어가는 것이 아닌 drawable 등 다른 폴더에도 들어갈 수 있음)
  • 여러 개의 조건을 줄 때는 아래의 순서에 따라 조건을 명시해야 함
  • 이동통신 국가 코드 : mcc310, mcc310-mnc004
  • 언어 및 지역 : en, ko-rKR
  • 레이아웃 방향 : ldrtl, ldltr
  • 이용 가능한 너비 : w720dp
  • 이용 가능한 높이 : h720dp
  • 화면 크기 : small, normal, large, xlarge
  • 화면 비율 : long, notlong
  • 원형 화면 : round, notround
  • 화면 방향 : port, land
  • UI 모드 : car, desk, television, application, watch, vrheadset
  • 야간 모드 : night, notnight
  • 화면 픽셀밀도 : ldpi, mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi, nodpi, tvdpi, anydpi, nnndpi
  • 터치스크린유형 : notouch, finger
  • 키보드가용성 : keysexposed, keyshidden, keyssoft
  • 기본 텍스트 입력방법 : nokeys, qwerty, 12key
  • 탐색키가용성 : navexposed, navhidden
  • 기본 비터치 탐색방법 : nanav, dpad, trackball, wheel
  • 플랫폼 버전 : v21
profile
🤗🤗🤗

0개의 댓글