Programming

이미지 이름을 알고있는 경우 이미지의 리소스 ID를 어떻게 얻습니까?

procodes 2020. 6. 28. 20:01
반응형

이미지 이름을 알고있는 경우 이미지의 리소스 ID를 어떻게 얻습니까?


이미지 이름 (Android)을 알고있는 경우 이미지의 리소스 ID를 어떻게 얻습니까?


이런 식으로 :

String mDrawableName = "myappicon";
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());

당신은 또한 이것을 시도 할 수 있습니다 :

try {
    Class res = R.drawable.class;
    Field field = res.getField("drawableName");
    int drawableId = field.getInt(null);
}
catch (Exception e) {
    Log.e("MyTag", "Failure to get drawable id.", e);
}

이 URL을 아래 URL에서 복사했습니다. 이 페이지에서 수행 된 테스트에 따르면 getIdentifier ()보다 5 배 빠릅니다. 또한 더 편리하고 사용하기 쉽다는 것을 알았습니다. 그것이 당신에게도 도움이되기를 바랍니다.

링크 : Android에서 동적으로 리소스 검색


이 함수를 사용하여 리소스 ID를 얻을 수 있습니다.

public static int getResourseId(Context context, String pVariableName, String pResourcename, String pPackageName) throws RuntimeException {
    try {
        return context.getResources().getIdentifier(pVariableName, pResourcename, pPackageName);
    } catch (Exception e) {
        throw new RuntimeException("Error getting Resource ID.", e)
    } 
}


따라서 Drawable Resource ID 를 얻으려면 다음 과 같이 메소드를 호출하십시오.

getResourseId(MyActivity.this, "myIcon", "drawable", getPackageName());

(또는 조각에서) :

getResourseId(getActivity(), "myIcon", "drawable", getActivity().getPackageName());


A의 문자열 리소스 ID는 다음과 같이 호출 할 수 있습니다 :

getResourseId(getActivity(), "myAppName", "string", getActivity().getPackageName());

기타...


주의 : 리소스 ID를 찾지 못하면 RuntimeException이 발생합니다. 프로덕션 환경에서 올바르게 복구하십시오.

이것을 읽으십시오


퍼블릭 시스템 리소스의 예 :

// this will get id for android.R.drawable.ic_dialog_alert
int id = Resources.getSystem().getIdentifier("ic_dialog_alert", "drawable", "android");

경보

다른 방법은 android.R.drawable 클래스 의 설명서를 참조하는 것입니다 .


내가 만난 다른 시나리오.

String imageName = "Hello"그런 다음 getIdentifier 함수에 첫 번째 인수로 전달되면 문자열 널 종료와 함께 이름을 전달하고 항상 0을 리턴합니다. 이 imageName.substring (0, imageName.length ()-1)을 전달하십시오.

참고 URL : https://stackoverflow.com/questions/3042961/how-do-i-get-the-resource-id-of-an-image-if-i-know-its-name

반응형