設定画面の定義を作成
まずは ActionBar のメニューにある "Settings" をタップした時に表示される画面を定義します。今回作成する設定画面は、背景色の選択肢をリストで表示し、選択できるようにします。
- [res/xml] に作成された "activity_settings.xml" を以下のように編集
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<ListPreference
android:key="background"
android:title="Background Color"
android:entries="@array/entries_background"
android:entryValues="@array/entryvalues_background"
android:dialogTitle="Background Color" />
</PreferenceScreen>
設定項目のリストを作成
次に、設定画面のリストに表示される設定項目のリストを作成します。先ほど作成した "activity_settings.xml" のファイル内で参照される値を定義しています。選べる背景色の候補として緑と青を定義しています。
- [values] を右クリックし [新規] → [Values resource file] をクリック
- [res/values] に作成された "arrays.xml" を以下のように編集
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="entries_background">
<item>Green</item>
<item>Blue</item>
</string-array>
<string-array name="entryvalues_background">
<item>GREEN</item>
<item>BLUE</item>
</string-array>
</resources>
設定画面を表示するクラスを作成
設定画面を表示するクラスは PreferenceFragment クラスを拡張して作成します。
- SettingsPreferenceFragment クラスを新規作成し "SettingsPreferenceFragment.java" を以下のように編集
public class SettingsPreferenceFragment extends PreferenceFragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.activity_settings);
}
}
設定画面を呼び出すクラスを作成
設定画面を呼び出すクラスは MainActivity とは別に用意します。
- SettingsActivity クラスを新規作成し "SettingsActivity.java" を以下のように編集
public class SettingsActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN);
FragmentTransaction fragmentTransaction =
getFragmentManager().beginTransaction();
fragmentTransaction.replace(android.R.id.content,
new SettingsPreferenceFragment());
fragmentTransaction.commit();
}
}
"AndroidManifest.xml" の編集
作成した SettingsActivity クラスをアプリが認識できるようにマニフェストファイルを編集します。
- "AndroidManifest.xml" を以下のように編集
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android= "http://schemas.android.com/apk/res/android" package="com.example.ball" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" android:screenOrientation="landscape" > <intent-filter> <action android:name= "android.intent.action.MAIN" /> <category android:name= "android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SettingsActivity" android:screenOrientation="landscape" /> </application> </manifest>
設定画面を表示するコードの追加
メニューの "Settings" をタップしたときに設定画面を表示するコードを MainActivity に追加します。
- "MainActivity.java" の onOptionsItemSelected() を以下のように修正
@Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.action_retry) { framelayout.removeAllViews(); handler.removeCallbacks(this); init_flag = false; } else if (item.getItemId() == R.id.action_settings){ Intent intent = new Intent(this, SettingsActivity.class); startActivity(intent); } return super.onOptionsItemSelected(item); }
以上で、設定画面の作成は完了です。アプリを起動してメニューの "Settings" をタップしてみます。
無事に背景色の選択肢リストが表示されました。この選択肢をタップしたときの処理は実装できていないため、現時点では何も起こりません。実際に背景色を切り替える処理の実装は次回扱います。
無事に背景色の選択肢リストが表示されました。この選択肢をタップしたときの処理は実装できていないため、現時点では何も起こりません。実際に背景色を切り替える処理の実装は次回扱います。
0 件のコメント:
コメントを投稿