Android スキニング ガイド

1.皮膚置換プログラム

現在、市場には主に 2 種類の Android スキニング ソリューションがあります。Resource ソリューションと AssetManager 代替ソリューションです。

その中で Resource スキームは、ユーザーが事前にいくつかのテーマをカスタマイズした後、指定されたテーマに対応する id をデフォルトのテーマとして設定するというものです。AssetManager 置換スキームは、Hook システムの AssetManager オブジェクトを使用し、コンパイル中にリソース ファイルに対応する id 値を静的に調整します。

1.1 リソーススキーム

リソーススキームの原則は、おおよそ次のとおりです。

1. 新しい Resrouce オブジェクト (エージェントのリソース) を作成します。

2. システムの Resource オブジェクトを置き換えます

3. 実行時の動的マッピング (異なるリソース テーブルで同じ原則を持つリソースのタイプと名前は同じです)

4. XML レイアウト分析インターセプト (xml レイアウト内のリソースは、プロキシ リソース、LayoutInflater を介してロードできません)

このソリューションの利点は、文字列/レイアウトの置換をサポートすることですが、欠点も明らかです。

  • 資源獲得効率が影響する
  • スタイルおよびアセット ディレクトリはサポートされていません
  • Resourceの置き換えが多く、Resourceパッケージクラスのコード量が多い

1.2 AssetManagerスキーム

フック システムの AssetManager オブジェクトが使用され、リソース ファイルに対応する id 値がコンパイル中に静的に整列され、リソースを置き換えるという目的が達成されます。この種のスキームで最も一般的なのは、スキニング用の Hook LayoutInflater です。

2、リソーススキニング

この方法で採用されているスキームは、ユーザーが事前にいくつかのテーマをカスタマイズし、テーマを設定するときにテーマに対応する id を指定することです。

おすすめ

転載: blog.csdn.net/xiangzhihong8/article/details/130294151