반응형
이미지 이름을 알고있는 경우 이미지의 리소스 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 배 빠릅니다. 또한 더 편리하고 사용하기 쉽다는 것을 알았습니다. 그것이 당신에게도 도움이되기를 바랍니다.
이 함수를 사용하여 리소스 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)을 전달하십시오.
반응형
'Programming' 카테고리의 다른 글
Linux에서 변수를 영구적으로 내보내는 방법? (0) | 2020.06.28 |
---|---|
매핑 할 객체 배열없이 React.js에서 요소를 반복하고 렌더링하는 방법은 무엇입니까? (0) | 2020.06.28 |
머티리얼 디자인 가이드 라인처럼 보이는 SearchView 생성 (0) | 2020.06.28 |
JSF 1.2에서 JSF 2.0으로 마이그레이션 (0) | 2020.06.27 |
동적으로 이벤트 리스너 추가 (0) | 2020.06.27 |