2010-02-12 4 views
3

나는 appwidget 응용 프로그램을 가지고 있으며 사용자가 런타임에 적용 할 수있는 스킨을 만들 수 있도록하고 싶습니다. 내가 선호하는 해결책은 ImageView의 위젯에 맞춰 펼쳐지는 9 개의 패치 PNG 이미지가있는 apk 파일을 사용하는 것이지만 다른 패키징 기술 (예 : zip 파일)을 사용해야하는 것처럼 보이기 시작합니다. 는 .getResources ... context.getResourcesForApplication (my.app)로 그리기로 구 개 패치 자원을 가져 오기 setImageViewBitap를 사용하여 리모트 뷰에 비트 맵을 캔버스를 사용하여 비트 맵으로 변환 및 설정 : 나는 무엇을 시도했다우아한 appwidget 스킨 솔루션을 찾고

. 변환 중에 결과보기 (myBitmap.setBounds (.., ..))의 크기를 지정해야하고 내 appwidget의 너비/높이 중 일부가 고정되어 있지 않기 때문에이 방법이 작동하지 않습니다. 아마도 내가 놓친 높이 등을 얻을 수있는 방법이있을 것입니다.

setImageViewUri()를 사용하여 RemoteView로 직접 리소스 가져 오기 이 함수는 android.resource : // Uri 's를 더 이상 읽지 않는 것으로 보이기 때문에 작동하지 않습니다. ImageView 소스에서 찔러 보았습니다. 파일 경로 및 내용 읽기 : // Uri)

외부 패키지에서 검색 한 ID가 패키지 참조를 포함하지 않기 때문에 작동하지 않는 setImageViewResource()를 사용하여 RemoteView에 직접 리소스를 가져옵니다.

내가 피하려고하는 것은 모든 appwidget 너비와 높이를 하드 코딩하거나 별도의 패키징 체계를 사용하는 것입니다.

누구나 appwidget 스킨을 멋지게 구현했으며 그 지식을 공유하고 싶습니까? 또는 내 논리에 어딘가에 지적 될 수있는 구멍이있을 수 있습니다.

지금 당장은 없지만 필요한 경우 코드를 제공 할 수 있습니다.

+0

안녕하세요 샘, 당신은 할 수이 시료 용액을 발견

views.setImageViewUri(R.id.alarm, Uri.parse(f.getAbsolutePath()); 

답변

2

우리에게 de 콘텐츠 제공 업체의 사용 및 크기 문제에 대한 꼬리가 있습니까? 아니면 더 나은, 코드 샘플? 감사합니다
+0

공유 해 주셔서 감사합니다. – roflharrison

1

이 문제를 해결하는 동안 ImageView 코드를 실행했습니다.

URI가 "콘텐츠"URI가 아닌 경우 ImageView는 Drawable.createFromPath(mUri.toString())에 대한 호출을 통해 URI를 열려고 시도합니다. 이는 기본적으로 URI가 아닌 경로를 원합니다.

URI의 "file : ///"섹션을 제거하면 올바르게 작동합니다. 다음과 같이

그래서 당신은 당신의 코드를 업데이트 할 수 있습니다 : 나는 http://www.siroccosoftware.com/devblog/?p=10

이미지 뷰

Uri path = Uri.parse("android.resource://PACKAGE_NAME/RESOURCE_ID"); 

views.setImageViewUri(ID, path); 

리모트 뷰

RemoteViews views = new RemoteViews("PACKAGE_NAME", "LAYOUT_RESOURCE_ID"); 
+0

이것은 SD에서 이미지를 설정하는 데는 효과가 있지만 테스트에서는 9 패치가 늘어날 것이라고 생각하지 않습니다. – roflharrison

관련 문제