Quantcast
Channel: わんくま同盟
Viewing all articles
Browse latest Browse all 994

Androidアプリケーションの設定画面設計と実装についてまとめてみた。

$
0
0

そのまえに。

フラグメント(Fragment)という用語が意外と大事って知った。

これは、画面の縦横制御や別個に動作する画面オブジェクトの制御にかかわるライブラリ群らしく、AndroidのバージョンHoneycombから追加されている機能。つまり、UIをプログラミングするにあたって、避けて通れない存在……と考えて良いみたい。

モデルやコントロール部分を作ってる間は考えなくてよかったんだけど、いざ、画面の部分を作るとなると、この辺りきちんと考えて実装しないと、例外でストーンと落ちちゃうアプリができちゃううむ、メンドクサイな<を

一画面一機能で、メニューやダイアログはできれば使わないでいくと、Fragmentを実装しなくちゃ!的に追いつめられる感じではなさそうだけど。その一方で、API使ってできるだけコードレスで楽ちんしたければ、Fragmentを意識して実装しつつ、APIコールもお作法に則っていきましょう、という事が基本だってことを勉強した。

さて、設定画面作り、いってみよー。

設定画面設計と実装の流れ。

作業手順は次の通り

  • 設定項目を洗い出す。
  • 項目のXMLファイルを実装
  • 項目を入力するためのXMLファイルを実装
  • 設定画面アクティビティの実装

まぁ、いつもの通り、っちゃぁそのままだ。

設定項目を洗い出す

設定項目洗い出しは設計のお話だけど、ここでのポイントは、2階層のアウトラインでまとめておくこと

たとえば、

  • 一般
    • 画面の色
  • アカウント
    • ユーザーID
    • パスワード
  • ネットワーク
    • プロキシの登録

とかいう感じで。小タイトル&項目タイトル、中身の説明なんかあれば良い感じ。こうすることでそのままXMLにまとめて、APIからすんなり呼び出せるように実装できるよ。

項目のXMLファイルを実装

項目のタイトルや表示する説明書きが決まったら、それらを /res/values/pref_strings.xml にresources/stringとして実装。すでにあるstrings.xmlファイルでも良いんだけど、ファイルを分けておくと中身を管理しやすいと思う。といっても、好き好きだけど。

リストにしたいものがある場合には、ここで、選択肢の候補をresources/arrayで実装しておいてね。

項目を入力するためのXMLファイルを実装

実際に、どんな入力方式で項目を設定するのか、それを/res/xml/pref_xxxxx.xml に実装。ここは肝。

入力形式には次の物があって、

  • テキスト
  • リスト
  • チェックボックス

が準備されてる。テキストは入力するときにダイアログが出るし、リストはあらかじめ作っておいた候補を選択、チェックボックスはON/OFFの形式ね。どの設定項目をどの方法で入力できるようにするかを決めて、実際にXMLに実装していくの。

settings
http://developer.android.com/guide/topics/ui/settings.html

サンプルはここに。

設定画面アクティビティの実装

ここまで準備できたら、次はアクティビティの実装。ここで、先述のフラグメントが登場。

If you're developing for Android 3.0 (API level 11) and higher, you should use a PreferenceFragment to display your list of Preference objects. You can add a PreferenceFragment to any activity?you don't need to use PreferenceActivity.

Fragments provide a more flexible architecture for your application, compared to using activities alone, no matter what kind of activity you're building. As such, we suggest you use PreferenceFragment to control the display of your settings instead of PreferenceActivity when possible.

Your implementation of PreferenceFragment can be as simple as defining the onCreate() method to load a preferences file with addPreferencesFromResource().

って書かれててね。片桐的超意訳すると、

APIのレベル11以降で作るなら、XMLで作った設定オブジェクト表示にはPreferenceFragment使わないとダメー、ダメダメ。PreferenceActivityは使わなくて良いからさ、使いたいActivityにPreferenceFragmentを追加してやってよ。

どんなアクティビティを作った時でも、フラグメントはアプリをよりフレキシブルにしてくれる便利もんだよ。だから、設定画面にはPreferenceActivity使うより、こっち使う事をオススメ。

PreferenceFragmentのonCreateでaddPreferencesFromResouceメソッド使うだけで簡単にできちゃうんだ。そのメソッドがXMLファイルから設定項目読みだしてくれるよ。

的に、ご本家からは推奨されてる。

実際に、そういう事なら、とかるーっく実装。

public class SettingsActivity extends PreferenceActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// Display the fragment as the main content.getFragmentManager().beginTransaction().replace(android.R.id.content,new GeneralPreferenceFragment()).commit();
    }public static class GeneralPreferenceFragment extends PreferenceFragment {
        @Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.pref_general);

        }
    }
}

Activityのクラスに、サブクラスとしてFragmentを実装し、それをonCreateで読みだすだけ。うん、これだけだったわ。 テンプレに登録しておいても良いくらいだw


Viewing all articles
Browse latest Browse all 994

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>