[안드로이드]res폴더/values폴더(colors/strings/themes)+Activity에서 변경하는법

dada·2021년 9월 6일
0

Android

목록 보기
6/16
post-thumbnail

✅resource폴더

  • 안드로이드 개발에 있어서 리소스(resource) 는 코드(자바 or 코틀린)에서 사용하는 “추가적인 파일” 이나 “정적인 콘텐츠” 를 의미한다.
    • EX.비트맵, 레이아웃, 사용자 인터페이스 문자열 등이 리소스에 해당
  • resource폴더가 따로 있는 이유는 우리가 안드로이드 어플을 개발할 때 이미지나 문자열과 같은 리소스들은 항상 코드(자바 or 코틀린)에서 외부화(분리)해야 하기 때문.그래야 리소스들을 코드와 독립적으로 유지 및 관리를 할 수 있음
  • 이렇게 외부화된 리소스들은 클래스 R 이라는 클래스에서 발생하는 리소스 id 로 엑세스할 수 있음
  • res 폴더 하위에는 drawable layout mipmap values 폴더가 있고
    이 4가지 폴더는 각각 resource 유형이라고 볼 수 있음
    • drawable 폴더에 저장되는 resource 들은 png, jpg, gif, xml 등의 파일
    • layout 폴더에 저장되는 resource 들은 사용자 인터페이스 레이아웃(UI 레이아웃) 을 정의하는 xml 파일
  • 이와 같이 각 폴더에 저장될 수 있는 resource의 유형이 나뉘어져 있음
  • 이 4개의 폴더는 프로젝트를 생성했을 때 기본적으로 제공되는 폴더이고, 필요할 시에는 추가로 폴더를 생성
    • 추가로 폴더를 생성할 때는 폴더 이름이 중요. res 디렉토리 내부에서 지원되는 하위 디렉토리가 정해져 있기 때문
  • Android developer-resources

✅res->values->colors사용법

@color/지정이름

✅res->values->strings사용법

@string/지정이름

✅res->values->themes사용법

@style/지정이름

✅res->drawable사용법

@drawable/지정이름

✅Activity에서 res에 있는string,color가져오기&xml파일 id가져와서 string,color로 변경하기


Activity에서 color값 변경하기: public static final int M = 23;
getColor는 안드로이드 SDK23부터 사용가능하기 때문에 SDK버전에 따라 분기해서 사용해야함
내가 사용하고 있는 SDK최소버전은 build.gredle(App)파일에서 minSDK로 확인가능

        val color = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            button.setBackgroundColor(getColor(R.color.restest))
        } else {
            button.setBackgroundColor(resources.getColor(R.color.restest))
        }
profile
'왜?'라는 물음을 해결하며 마지막 개념까지 공부합니다✍

0개의 댓글