2012年1月29日日曜日

PreferenceActivityのレイアウトをカスタマイズ

PreferenceActivityにTextViewやButtonを配置したいときがあります。

(例)「国旗deクイズ」に於ける使用例



今回は、PreferenceActivityのレイアウトをカスタマイズする方法をまとめてみました。

PreferenceActivityクラスはListActivityを継承したクラスです。
必要に応じてリストにコンポーネントを設定することで設定画面を作成する仕様となっています。

リスト本体のレイアウトは、ListActivityクラスを継承したサブクラスを作成するときと同じす。
つまり、オーバーライドしたonCreate()メソッドの中でsetContentView()によって設定します。

以下はPreferenceActivityのデフォルト設定です。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(com.android.internal.R.layout.preference_list_content);

mPreferenceManager = onCreatePreferenceManager();
getListView().setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
}

・XMLレイアウト(preference_list_content.xml)
<xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"
android:scrollbarAlwaysDrawVerticalTrack="true"
/>

PreferenceActivityにTextViewやButtonを配置したいときは、
PreferenceActivityを継承したサブクラスでonCreate()をオーバーライドして、
用意したXMLレイアウトをsetContentView()に設定します。

以下はTextViewを一つ配置する例です。
コンポーネントはCheckBoxPreferenceを一つ設定します。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(my_preference_list_content.xml);
addPreferencesFromResource(R.xml.settings);
}


・XMLレイアウト(my_preference_list_content.xml)
<xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="国旗deクイズ "/>
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>


・XMLコンポーネント(setting.xml)
<xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="setting"
android:title="データの保存"
android:summary="データの保存をONにする"
android:defaultValue="true" />
</PreferenceScreen>

2012年1月22日日曜日

【新作】国旗deクイズ

国旗クイズの決定版。表示される国旗の国名を、リストから選択して当てるゲームです。

  


ゲームをスタートすると、出題範囲を選択するダイアログが表示されます。
「全て」「未解答」「不正解」の中から出題範囲を選んでください。
選択した範囲からランダムに10問が出題されます。

また、設定画面からは出題地域を選択することもできます。
「全域」「アジア」「アフリカ」「ヨーロッパ」「北アメリカ」「南アメリカ」「オセアニア」の中から選んでください。

  

ゲーム結果について、過去10回の成績をグラフ表示で確認することができます。

1ゲームあたり数分で、楽しく気軽に楽しめる国旗クイズです。通勤通学の電車の中など、毎日のちょっとした空き時間にお楽しみいただけます。