Android 動的スキニング フレームワークの実装の概要
動的スキニングの利点
-
APKサイズを縮小
-
APKを更新せずにスキンを更新できます
-
リアルタイムでスキンを変更できます
全体的な実装プロセス
-
LayoutInflector.Factory2 を設定して View の作成プロセスを監視し、スキニングが必要な View とプロパティを収集します。
-
スキン パッケージ リソースを読み込み、AssetManager と Resources にパッケージ化します
-
スキンを適用する必要がある View をトラバースし、元の属性リソース ID からリソース名とタイプを取得し、リソース名とタイプに従ってスキン パッケージの Resources オブジェクトから最新のスキン リソースを取り出し、新しいスキン リソースを適用します。ビューへのリソース
実装の詳細
-
スキニングが必要なビューを収集するプロセスは何ですか?
-
xml レイアウト ファイルを解析すると、LayoutInflactor.Factory2 の Create View メソッドが最初に呼び出されます. null が返された場合、システムはデフォルトの Create View メソッドを使用するため、View に Factory2 のカスタム属性が含まれているかどうかを判断できます。スキンの更新をサポートするかどうかを決定するカスタム属性値。
-
必要ない場合は null を返し、必要な場合は独自に View を作成し、スキン パッケージ内の最新のリソースを適用します。
-
スキンを適用する必要がある View を収集する場合、設定された属性と対応する値を保存し、属性のリソース ID に従って、対応するリソース タイプとリソース名を取得する必要があります。スキンを変更する場合は、スキン パッケージに移動します。リソース名とタイプに対応する Resources オブジェクトから対応するリソースを取得し、ビューに適用します
-
-
スキンパックのリソースをロードするには?
リフレクションを介して AssetManager オブジェクトを構築し、その
addAssetPath
メソッドを呼び出してスキン パッケージが配置されているパスを追加します。次に、AssetManager を介して新しい Resources オブジェクトを構築し、スキン パッケージ内のリソースを管理します。