안드로이드 개발 질문/답변
(글 수 40,700)
위젯 등록할때요
getIdentifier로 다른 앱 패키지 리소스의 drawable ID가져와서
이미지뷰에 넣으니깐
해당 리소스ID를 현재 제 앱의 ID로 매치시켜서 가져오네요.
이거 방법 없는건가요. 따로 파일같은걸로 저장 시켜야될까요..
나인패치라 엄청 까다로운데 ㅠㅡㅠ
평소같으면 해당 다른 앱 패키지의 Resources 로 접근해서
getDrawable() 해준다음 이미지 뷰에 뿌려주겠지만
그렇게 할 수도 없고...
try
{
Resources otherRes = context.getPackageManager().getResourcesForApplication(otherPackName);
int frmRId = otherRes.getIdentifier("frame_" + frmIndex, "drawable", otherPackName);
if (frmRId != 0)
{
views.setImageViewResource(frmViewRId, frmRId);
}
} catch (NameNotFoundException e)
{
e.printStackTrace();
}
코드 보니까 다른 패키지속에 있는 리소스의 아이디 값을 가지고 왔는데, 리모트 뷰에 넘겨줄 때는 그냥 그 리소스 id 값을 넘겨주네요.
리모트 뷰 입장에서는 리소스 id 받았을 때 현재 패키지로부터 해당 리소스를 불러들이는것이 당연하지요.
해결하려면, 우선 otherRes 로부터 해당 리소스를 실제로 Bitmap 등의 형태로 불러들인 후에 리모트뷰에 세팅해야 합니다.
그런데 NinePatch 를 쓰려면 Drawable 형태여야 할껀데, 이게 가능할지는 직접 테스트 해보셔야 할듯..