Android 動的スキニング フレームワークの実装の概要

Android 動的スキニング フレームワークの実装の概要

動的スキニングの利点

  • APKサイズを縮小

  • APKを更新せずにスキンを更新できます

  • リアルタイムでスキンを変更できます

全体的な実装プロセス

  1. LayoutInflector.Factory2 を設定して View の作成プロセスを監視し、スキニングが必要な View とプロパティを収集します。

  2. スキン パッケージ リソースを読み込み、AssetManager と Resources にパッケージ化します

  3. スキンを適用する必要がある View をトラバースし、元の属性リソース ID からリソース名とタイプを取得し、リソース名とタイプに従ってスキン パッケージの Resources オブジェクトから最新のスキン リソースを取り出し、新しいスキン リソースを適用します。ビューへのリソース

実装の詳細

  • スキニングが必要なビューを収集するプロセスは何ですか?

    • xml レイアウト ファイルを解析すると、LayoutInflactor.Factory2 の Create View メソッドが最初に呼び出されます. null が返された場合、システムはデフォルトの Create View メソッドを使用するため、View に Factory2 のカスタム属性が含まれているかどうかを判断できます。スキンの更新をサポートするかどうかを決定するカスタム属性値。

    • 必要ない場合は null を返し、必要な場合は独自に View を作成し、スキン パッケージ内の最新のリソースを適用します。

    • スキンを適用する必要がある View を収集する場合、設定された属性と対応する値を保存し、属性のリソース ID に従って、対応するリソース タイプとリソース名を取得する必要があります。スキンを変更する場合は、スキン パッケージに移動します。リソース名とタイプに対応する Resources オブジェクトから対応するリソースを取得し、ビューに適用します

  • スキンパックのリソースをロードするには?

    リフレクションを介して AssetManager オブジェクトを構築し、そのaddAssetPathメソッドを呼び出してスキン パッケージが配置されているパスを追加します。次に、AssetManager を介して新しい Resources オブジェクトを構築し、スキン パッケージ内のリソースを管理します。

おすすめ

転載: blog.csdn.net/guangdeshishe/article/details/129968726