android4.2 在设置中添加菜单

效果图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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值