2010-04-13 5 views
41

안드로이드는 시간을 절약하고 응용 프로그램을 가볍게 만드는 데 사용할 수있는 많은 시스템 자원 (android.R)과 함께 제공됩니다.유용한 안드로이드 시스템 자원

예를 들어, 저는 최근에 다른 문자열 사이에, 안드로이드, (android.R.string.cancel를) 취소 예 (android.R.string.yes), 아니오 (android.R.string.no)에 대한 지역화 된 문자열을 제공하고 확인 (android.R.string.ok) 것을 발견했다.

어떤 다른 시스템 자원을 사용 하시겠습니까? 아니면 시스템 리소스 사용을 피할 이유가 있습니까?

편집 : 토마스에 의해 언급 한 바와 같이,이 자원의 일부는 당신이 기대하는 결과 (특히, android.R.string.yes/no 반환하는 대신 Yes/NoOK/Cancelhere보고)을 생성하지 않을 수 있습니다. 보다 강력한 제어를 위해 Android 소스 코드에서 시스템 리소스를 복사 할 수 있습니다.

+2

XML에서 어떻게 액세스합니까? –

+0

"시스템 리소스 사용을 피하는 이유가 있습니까?"- 아이콘과 같은 시스템 리소스를 사용하는 경우 모든 아이콘 버전에서 동일한 아이콘을 사용할 수 있다는 보장이 없으므로 앱이 일관성을 잃을 수도 있습니다. . – codeMan

+0

너무 광범위하고 의견을 바탕으로 투표를 마감합니다. –

답변

46

android package에서 모든 시스템 리소스의 전체 목록을 찾을 수 있습니다.

Android에서 뭔가하고 싶을 때마다 내가하고 싶은 일을하는 시스템 리소스가 있는지 확인합니다. 이미 구현 된 리소스를 검색 할 때 Android 소스 코드 (특히 their /res/ folder)를 가져 와서 특정 구현을 볼 수 있으므로 도움이됩니다.

개인적으로 사용하여 가장 자주 자신을 찾을 :

  • 내장 등 스피너의 드롭 다운 등의 표준 작업, 안드로이드 레이아웃. 자주 당신이 안드로이드의 위젯 중 일부를 사용하려면 다음을 사용하는 데 필요한 때문에
  • 안드로이드 IDS (android.R.id)는, (예를 들어, TabHost/TabWidget는 "android:id/tabhost"를 사용해야합니다 "android:id/tabs은"와 "android:id/tabcontent는"당신이 원하는 경우 XML 레이아웃 구현).
  • 내장 색상, 특히 android.R.color.transparent.
  • android.R.anim에 Android의 내장 페이드 인 및 페이드 아웃 애니메이션.
+9

이러한 리소스는 SDK와 함께 제공됩니다. 특정 플랫폼 디렉토리 아래의'data/res /'디렉토리를보십시오. OEM에 의해 변경 될 수있는 것들을 재사용 할 때는 신중할 것입니다. 드로어 블 리소스가 문제 영역의 한 예가 될 것입니다. – CommonsWare

+0

@CommonsWare 실제 장치에서 실행될 때로드되는 리소스는 어디입니까? – ThomasW

+0

@ThomasW : "장치 펌웨어의 어딘가"너머로, 나는 세부 사항을 찾아 본 적이 없으므로 말할 수 없습니다. 죄송합니다! – CommonsWare

6

CommonsWare에서 언급했듯이 자원을 검사하기 위해 Android 소스 저장소를 다운로드 할 필요가 없습니다. <android-sdk-dir>/platforms/android-X.X/data/res/으로 가십시오. 그러나 이들을 사용하기 시작하면 빨리 실망하게되어 대부분이 이 아니며 클래스를 통해 사용 가능한이 아님을 알게됩니다. 어쨌든 대부분의 경우 Eclipse 워크 스페이스로 가져와야합니다. :-(

좋아하는 리소스는 컨트롤의 집중/눌림/끈 상태 (예 : android.R.drawable.btn_default)에 따라 다르게 표시되는 드로어 블입니다. 그 중 하나를 사용하거나 조정하여 내 앱용 맞춤 버튼을 만듭니다. /data/res/drawable/btn_default.xml을 보면 알 수 있듯이 런타임시 StateListDrawable으로 부풀려진 <selector> XML 요소로 정의됩니다. 또한 자신 만의 StateListDrawables를 만들 수 있으며 View 배경과 버튼의 "복합 당김"(TextView.setCompoundDrawables() 참조).

+0

실제 장치에서 실행될 때로드 된 리소스는 어디에 있습니까? – ThomasW

1

번역 내용이 잘못되었습니다.

예를 들어 android-25의 독일어 'no'는 실제로 '취소'를 의미하는 'Abbrechen'입니다. "예"는 "OK"로 번역됩니다 ...

다른 언어가 얼마나 좋은지 잘 모르겠습니다. 그래서 나는 자신의 번역을 사용할 것입니다.

+0

번역이 나쁜 것은 아닙니다. OP가 그의 질문에 언급했듯이,'android.R.string.yes/no'는'Yes/No' 대신'OK/Cancel'을 리턴합니다. 이는 개발자가'android.R.string.yes/no'가'android.R.string.ok/cancel'보다 간결하다고 생각했기 때문일 것입니다. – Patrick

+1

또한 'android.R.string.ok'은 번역 된 것으로 보이지 않습니다. 테스트 한 모든 언어에 대해 "OK"입니다. 일부 언어의 경우 '확인'이 적합하지 않습니다. – ThomasW