2013-05-28 5 views
6

나는 매우 간단한 질문을 가지고있다.주어진 리소스에 대한 한정자를 얻는 방법 (사용하는 경우)?

R.java 파일의 특정 자원 (id, string, drawable, ...)을 감안할 때 폴더와 일치하는 한정자를 알 수 있습니까? 그렇다면 어떻게?

예를 들어 내 장치에 hdpi 밀도 화면이 있고 "res/drawable-hdpi"및 "res/drawable-mdpi"에 "x.png"라는 파일 이름이 있는데 이 파일을 디코드하려면, 내가 얻고 자하는 것은 res/drawable-hdpi에서 파일을 얻었고, hdpi 밀도를 가짐을 알았습니다.

물론이 예제에서 파일이 다른 폴더에는 있지만 hdpi 폴더에는없는 경우 파일을 디코딩 할 때 어떤 파일이 사용되는지 알려주고 싶습니다.

나머지는 한정자 (locale, screenSize, ...)와 동일합니다.

+0

나는 그 질문에 관심이 있어요. 나도 같은 문제에 빠졌어. 해결 했니? 어떤 상황에서도 장치에 사용 된 Qualifer를 짐작할 수있는 함수를 찾았습니까? – GmloMalo

+0

@GmloMalo 아니요, 왜 내가 이걸 원했는지 기억이 안납니다. –

+0

Ok. 고마워. 어쨌든 – GmloMalo

답변

0

많은 수의 장치를 대상으로하는 경우이 문제가 많이 발생하므로 어떤 드로어 블이 사용 중인지 확인하기 위해 간단한 애플리케이션을 직접 작성하기로 결정했습니다. Here이 링크입니다.

희망이 도움이 될 것입니다.

+0

샘플 코드에는 코드와 함수에 대한 내용이 없습니다. –

+0

샘플 코드를 실행하면 이해할 수 있습니다. – bladeX

0

안드로이드 프레임 워크가 어떤 리소스가 사용되었는지 알아내는 응용 프로그램의 메커니즘을 제공한다고 생각하지 않습니다.

하지만 Android 리소스 한정자 문서에 지정된 규칙에 따라 언제든지 규칙을 공식화 할 수 있습니다.

그러나 귀하의 요구 사항이 정확히 무엇인지 명확하지 않습니다. 응용 프로그램에서 어떤 리소스가 사용되었는지 인식 할 수있게 하시겠습니까? 또는 디자인/빌드 중에 만 이것을 원하십니까?

사용중인 리소스를 알아 내면 화면 밀도, 화면 크기, 현재 전화 로케일 및 현재 방향에 따라 논리를 쉽게 공식화 할 수 있습니다. 이러한 논리는 모두 Android에서 제공되는 다양한 API를 통해 사용할 수 있습니다. dpi의에 대한

+0

코드가 어떤 리소스 파일이 있는지에 대해 알지 못한다고 가정하면 주어진 리소스에 대해 어떤 한정자가 사용되는지 알 수있는 함수를 갖고 싶습니다. 그것은 런타임을위한 것입니다. 그렇지 않으면 파일이 어디에 있는지 직접 확인할 수 있기 때문입니다. –

+0

내 의견으로는 불가능합니다 ... 당신이 할 수있는 최선의 방법은 당신이 제공 한 한정어로 각 폴더에 넣은 리소스를 아는 것입니다. 앞서 언급 한 기기 측정 항목에 따라 앱에서 어떤 리소스를 선택했는지 추측 할 수 있습니다. 특정 리소스에 대해 한정자가 존재하는지, 애플리케이션이 아닌, 안드로이드 시스템에 의해 수행되는지를 알 수 있다고 생각하지 않습니다. –

0

사용 http://developer.android.com/reference/android/content/res/Configuration.html

예 :

Configuration config = getResources().getConfiguration(); 
    Log.d("DPI ", Integer.toString(config.densityDpi)); 
+0

내가 리소스 ID를 제공하는 부분은 어디입니까? 현재 내가보고있는 것은 기기의 밀도를 확인한 것입니다.그것은 주어진 자원과 아무 관련이 없습니다. –

+0

이것은 dpi를 숫자로 볼 수 있습니다. http://stackoverflow.com/questions/2025282/difference-between-px-dp-dip-and-sp-in-android 구성 및 휴대 전화의 알려진 Density Bucket으로 dpi를 확인하십시오. – Novikov

+0

질문을 이해할 수 없습니다. 나는 밀도를 요구하지 않습니다. 내가 선택한 리소스의 원본 폴더를 얻는 방법을 묻습니다. 예를 들어, 여러 개의 폴더 ("drawable-ldpi", "drawable-port", "drawable-iw"...)에 드로어 블이있는 경우 원하는 파일을 찾으려고합니다. 그것. –