2012-01-19 1 views
4

私はアプリケーションにいくつかのスキンを持たせたいと考えています。私の主な目的は、ユーザーにスキンを変更させるのではなく、顧客ごとにスキンをカスタマイズできるようにすることでした。リソース/ファイルを別のapkにスキニングするために

スタイルとテーマを使用することで、スキニング情報をレイアウトから分離できます。それは魅力のように機能しますが、すべてのスキンとすべてのリソース(重いビットマップを含む)にアプリケーションが含まれている必要があります。

自動ビルド(ant)スクリプトを作成して何を含めるかを決める方法がありますが、それ以外の理由では好ましくありません。

私は別々のテーマファイル(ダウンロードとインストールが別々)を使用する市場でいくつかのアプリケーションを見てきましたので、これらの情報を分離したAPKに移動することができます。

私のアプリとスキンプロバイダーのapkに同じUserIDを持たせることで、もっと自由にアクセスできるようになりましたが、リソースの入手方法はまだ分かりません。

コンテンツプロバイダーはソリューションになる可能性がありますが、XMLからレイアウト情報をコードに戻して、一部のパフォーマンス上の問題を持つプラスレイヤーを持っているだけでは、目に見えない効果が得られません。

この問題のベストプラクティスは何ですか?

もう1つ重要な情報: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は、アクセスしようとしているテーマの完全なパッケージでなければなりません。 contextは、呼び出し元のコンテキスト、つまりアプリケーションのコンテキストです。