效果图1
在AndroidManifest.xml文件中添加:
<activity android:name="Settings$OverClockModelSettingsActivity"
android:label="@string/overclock_model_settings"
android:taskAffinity="com.android.settings"
android:parentActivityName="Settings">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
android:value="com.android.settings.OverClockModelSettings" />
<meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
android:resource="@id/overclock_model_settings" />
</activity>
在Settings\res\xml\settings_headers.xml中添加
<!-- SYSTEM -->
<header android:id="@+id/system_section"
android:title="@string/header_category_system" />
<!-- CPU OverClock -->
<header
android:id="@+id/overclock_model_settings"
android:fragment="com.android.settings.OverClockModelSettings"
android:icon="@drawable/ic_settings_date_time"
android:title="@string/overclock_model_settings" />
<!-- Date & Time -->
<header
android:id="@+id/date_time_settings"
android:fragment="com.android.settings.DateTimeSettings"
android:icon="@drawable/ic_settings_date_time"
android:title="@string/date_and_time_settings_title" />
在Settings.java中
1. 在SETTINGS_FOR_RESTRICTED数组中添加 R.id.overclock_model_settings
2.在文件末尾添加 public static class OverClockModelSettingsActivity extends Settings { /* empty */ }
新建overclock_model_prefs.xml
---------------------------------overclock_model_prefs.xml begin---------------------
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/overclock_model_settings">
<ListPreference
android:key="overclock_model"
android:entries="@array/overclock_model_settings_entries"
android:entryValues="@array/overclock_model_settings_entryvalues"
android:title="@string/overclock_model_settings"
android:summary="@string/give_priority_to_performance"
/>
</PreferenceScreen>
-----------------------------------------overclock_model_prefs.xml end--------------------------------
新添加文件OverClockModelSettings.java
----------OverClockModelSettings.java begin---------------------------------------
/*
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.provider.Settings.SettingNotFoundException;
import java.util.HashMap;
import java.util.Map;
import android.util.Log;
public class OverClockModelSettings extends SettingsPreferenceFragment
implements Preference.OnPreferenceChangeListener{
private static final String TAG = "OverClockModelSettings";
private static final String KEY_OVER_CLOCK = "overclock_model";
private final Map<String, String> mOverClockValuetoTitleMap =
new HashMap<String, String>();
private ListPreference mOverClock;
private String mOverClockModelDefault;
private String mOverClockCurrentModel;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.overclock_model_prefs);
initUI();
}
private void initUI() {
mOverClock = (ListPreference) findPreference(KEY_OVER_CLOCK);
mOverClock.setOnPreferenceChangeListener(this);
if(mOverClockValuetoTitleMap.size()==0){
String [] overclock_entries = getResources().getStringArray(R.array.overclock_model_settings_entries);
String [] overclock_entryvalues = getResources().getStringArray(R.array.overclock_model_settings_entryvalues);
mOverClockModelDefault = overclock_entryvalues[2];
for (int i = 0; i < overclock_entryvalues.length; i++) {
mOverClockValuetoTitleMap.put(overclock_entryvalues[i], overclock_entries[i]);
}
}
}
@Override
public void onResume() {
super.onResume();
getOverclockModel();
mOverClock.setValue(mOverClockCurrentModel);
mOverClock.setSummary(mOverClockValuetoTitleMap.get(mOverClockCurrentModel));
}
@Override
public void onPause() {
super.onPause();
}
private void getOverclockModel(){
//mOverClockCurrentModel = getValue();//从文件中读取当前模式
if(mOverClockCurrentModel==null){
mOverClockCurrentModel = mOverClockModelDefault;
}
}
public boolean onPreferenceChange(Preference preference, Object newValue) {
if(preference == mOverClock){
String stringValue = (String) newValue;
Log.i(TAG,"newValue:"+stringValue);
//setValue(stringValue);//将当前模式写到文件中
mOverClock.setSummary(mOverClockValuetoTitleMap.get(stringValue));
return true;
}
return false;
}
/*
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
Log.i(TAG,"onPreferenceTreeClick");
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
*/
}
-----------------OverClockModelSettings.java end---------------------------
在Settings\res\values\arrays.xml文件中添加
<string-array name="overclock_model_settings_entries">
<item>@string/give_priority_to_power_consumption</item>
<item>@string/give_priority_to_performance</item>
<item>@string/relatively_balanced</item>
</string-array>
<string-array name="overclock_model_settings_entryvalues" translatable="false">
<item>conservative</item>
<item>interactive</item>
<item>ondemand</item>
</string-array>
字符串
<string name="overclock_model_settings">"CPU超频模式"</string>
<string name="give_priority_to_performance">"性能优先"</string>
<string name="give_priority_to_power_consumption">"功耗优先"</string>
<string name="relatively_balanced">"均衡"</string>