私のアプリでは、ユーザーが選択できるかなり複雑な設定オプションがあります。私は現在、これらのオプションのユーザーインターフェースとしてPreferenceActivityを使用しています。オプションは共有プリファレンスを使用して保管されています。ペアの複雑な設定画面を実装する最も良い方法は?
リスト:設定のいくつかの例として、I収容しなければならない背景パターンを選択するために、ユーザは、各形状が.PNGである(1〜5の異なる形状の使用を選択することができファイル)を作成し、各図形にint色を割り当てます。例えば、ユーザは、オレンジ色の四角形、緑色の三角形、赤色の四角形を選択することができる。
階層的なデータ:私のアプリの一部は、5つのモードのいずれかを使用するように設定できます。各モードには、いくつかの固有の固有の設定が関連付けられています。あるモードでは2つの整数を選択する必要があり、もう1つのモードでは1つのブール値を選択する必要があります。
しかし、私の気持ちはのでPreferenceActivityは上記のような設定でうまく動作しないです:共有設定のリストを格納することはできません
- 。
- 共有設定には階層データを格納できません。
- 私の好みのインターフェースを沸騰させて、例えば以下のようにします。各色を設定したり、現在のモードには適用されない設定を無効にするために依存する設定を使用するための個々の設定ボタンは、使いにくく使いにくいインターフェースを作ります。
リストを設定するための独自のプリファレンスクラスを作成することもできますが、これらの実装は、典型的なビューを実装するのに比べて面倒であり、ストレージの問題に対処する必要があります。
私の計画されました:
- ちょうどカスタムGUIでカスタムアクティビティを実装します。これにより、リストを構成するためのすばらしいインターフェースを実現するための自由度が増し、現在のモードには適用されないオプションのインテリジェントな非表示を行うことができます。
- すべての設定をXMLファイルに保存するか、Javaオブジェクトをシリアル化して保存します。これは、階層データと可変長リストを簡単にサポートできることを意味し、さらに拡張する余地があります。
この計画は妥当と思われますか?私はAndroidのやり方をしていないのではないかと心配していますが、共有された設定やPreferenceActivityは私のニーズには適していないようです。
アドバイスをいただきありがとうございます。私は既にいくつかのカスタム設定ウィジェットを扱っている作業環境設定画面を持っていますが、作業をするのは面倒であり、私が言及した保存/読み込みとインターフェースの問題があります。私の計画は、あなたが持っているものと一緒に行くことでした。私は、Javaのシリアライゼーションを使うことを優先してsharedpreferencesを避けるでしょう。たとえば、私は物事をArrayListに張り、これを永続リストに保存することができます。 – rbcc