2012-01-19 3 views
4

내 스킨을 여러 개 사용하도록하고 싶습니다. 내 주된 목표는 사용자가 스킨을 변경하는 것이 아니라 고객마다 스킨을 사용자 정의 할 수있게하는 것이 었습니다.skinning을 위해 다른 apk로 리소스/파일 분리하기

스타일과 테마를 사용하여 레이아웃과 스키닝 정보를 구분할 수 있습니다. 그것은 매력처럼 작동하지만 모든 스킨과 모든 리소스 (중량이 많은 비트 맵 포함)가 응용 프로그램을 포함 할 필요가 있습니다. 스킨이 많이 만들어지면서 소중한 공간의 낭비가 더 많이 발생합니다.

자동 빌드 (개미) 스크립트를 만들고 포함시킬 것을 결정하게하는 방법이 있지만 다른 이유로는 바람직하지 않습니다.

분리 된 테마 파일 (별도로 다운로드 및 설치 가능)을 사용하는 여러 응용 프로그램을 보았으므로 이러한 정보를 분리 된 APK로 옮길 수 있다는 생각이 들었습니다.

내 앱과 스킨 제공 업체 apk가 동일한 UserID를 사용하여 서로에게 더 많은 무료 액세스 권한을 부여하지만 리소스를 얻는 방법을 아직 모르는 경우가 있습니다.

콘텐츠 공급자는 솔루션 일 수 있지만 레이아웃 정보를 XML의 코드로 다시 이동하고 일부 성능 문제가있는 더하기 레이어가 엄숙하게 시각적 효과를 내기에는 어렵습니다.

이 문제에 대한 최선의 방법은 무엇입니까?

한 가지 더 중요한 정보 : API 수준 7 (2.1)을 사용해야하므로 상위 수준 API에서만 작동하는 솔루션이 범위를 벗어납니다.

답변

1
private static Resources getThemeResources(String themePackage, Context context) throws NameNotFoundException { 
    try { 
     return [context.getPackageManager().getResourcesForApplication(themePackage);][1] 
    } catch (Exception e) { 
     return null; 
    } 
} 

이렇게하면 지정된 apk에 대한 리소스가 제공됩니다. themePackage는 액세스하려는 테마의 전체 패키지 여야합니다. 컨텍스트는 호출자의 컨텍스트, 즉 애플리케이션의 컨텍스트입니다.

관련 문제