• seeting菜单界面形成--优化


    本文是上一篇文章的优化版:

    上文链接地址:http://www.cnblogs.com/zzw1994/p/5016864.html

    上文中有很多方法都是过时,并且效率不是很高,主要对JAVA代码进行了优化,下面是优化后的代码:

    MainActivity.java:

     1 package com.zzw.testpreferenceactivity;
     2 
     3 import android.app.Activity;
     4 import android.os.Bundle;
     5 
     6 public class MainActivity extends Activity {
     7 
     8     @Override
     9     protected void onCreate(Bundle savedInstanceState) {
    10         super.onCreate(savedInstanceState);
    11 
    12         this.getFragmentManager().beginTransaction()
    13         .replace(android.R.id.content, new SettingFragment()).commit();
    14     }
    15 
    16 }

    SettingFragment.java:

      1 package com.zzw.testpreferenceactivity;
      2 
      3 import java.util.Iterator;
      4 import java.util.Set;
      5 
      6 import android.content.SharedPreferences;
      7 import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
      8 import android.os.Bundle;
      9 import android.preference.CheckBoxPreference;
     10 import android.preference.EditTextPreference;
     11 import android.preference.ListPreference;
     12 import android.preference.MultiSelectListPreference;
     13 import android.preference.PreferenceFragment;
     14 import android.preference.PreferenceManager;
     15 import android.preference.SwitchPreference;
     16 import android.widget.Toast;
     17 
     18 public class SettingFragment extends PreferenceFragment {
     19 
     20     private final String CHECKBOXPREFERENCE_KEY1 = "checkbox_key1";
     21     private final String EDITTEXTPREFERENCE_KEY1 = "edit_key1";
     22     private final String LISTPREFERENCE_KEY = "listPreferenc_key";
     23     private final String MULTISELECTLISTPREFERENCE_KEY = "multiSelectListPreference_key";
     24     private final String SWITCHPREFERENCE_KEY = "switchPreference_key1";
     25 
     26     private SharedPreferences mSharedPreferences;
     27     private OnSharedPreferenceChangeListener mOnSharedPreferenceChangeListener;
     28 
     29     private CheckBoxPreference mCheckBoxPreference;
     30     private EditTextPreference mEditTextPreference;
     31     private ListPreference mListPreference;
     32     private MultiSelectListPreference mMultiSelectListPreference;
     33     private SwitchPreference mSwitchPreference;
     34 
     35     @Override
     36     public void onCreate(Bundle savedInstanceState) {
     37         super.onCreate(savedInstanceState);
     38 
     39         // 添加设置的选项
     40         addPreferencesFromResource(R.xml.first_preference);
     41 
     42         mCheckBoxPreference = (CheckBoxPreference) findPreference(CHECKBOXPREFERENCE_KEY1);
     43         mEditTextPreference = (EditTextPreference) findPreference(EDITTEXTPREFERENCE_KEY1);
     44         mListPreference = (ListPreference) findPreference(LISTPREFERENCE_KEY);
     45         mMultiSelectListPreference = (MultiSelectListPreference) findPreference(MULTISELECTLISTPREFERENCE_KEY);
     46         mSwitchPreference = (SwitchPreference) findPreference(SWITCHPREFERENCE_KEY);
     47 
     48         // 获取SharedPreferences对象
     49         mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
     50 
     51         // 通用的读取设置的某个值的方法
     52         // boolean b = mSharedPreferences.getBoolean("checkbox_key1", false);
     53         // Log.d("checkbox_key1", b+"");
     54         //
     55         // String s = mSharedPreferences.getString("edit_key1", "暂时为空");
     56         // Log.d("edit_key1", s);
     57 
     58         mOnSharedPreferenceChangeListener = new MyOnSharedPreferenceChangeListener();
     59     }
     60 
     61     // 数据发生变化时候的监听类设置
     62     private class MyOnSharedPreferenceChangeListener implements OnSharedPreferenceChangeListener {
     63 
     64         @Override
     65         public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
     66             switch (key) {
     67             case CHECKBOXPREFERENCE_KEY1:
     68 
     69                 boolean b = sharedPreferences.getBoolean(CHECKBOXPREFERENCE_KEY1, false);
     70                 mCheckBoxPreference.setSummary(b + "");
     71                 break;
     72 
     73             case EDITTEXTPREFERENCE_KEY1:
     74 
     75                 String s = sharedPreferences.getString(EDITTEXTPREFERENCE_KEY1, "null");
     76                 mEditTextPreference.setSummary(s);
     77                 break;
     78 
     79             case LISTPREFERENCE_KEY:
     80 
     81                 String e = mListPreference.getEntry() + "";
     82                 String v = mListPreference.getValue();
     83                 mListPreference.setSummary(e + " : " + v);
     84                 break;
     85 
     86             case MULTISELECTLISTPREFERENCE_KEY:
     87 
     88 //                String s_entries = "entries:";
     89 //
     90 //                CharSequence[] entries = mMultiSelectListPreference.getEntries();
     91 //                for (CharSequence c : entries) {
     92 //                    s_entries += c + "" + "	";
     93 //                }
     94 //
     95 //                Set<String> values = mMultiSelectListPreference.getValues();
     96 //                Iterator<String> it = values.iterator();
     97 //                String s_values = "values:";
     98 //                while (it.hasNext()) {
     99 //                    s_values += it.next().toString() + "	";
    100 //                }
    101 //                mMultiSelectListPreference.setSummary(s_entries + "
    " + s_values);
    102                 break;
    103 
    104             case SWITCHPREFERENCE_KEY:
    105                 
    106                 boolean boo = sharedPreferences.getBoolean(SWITCHPREFERENCE_KEY, false);
    107                 mSwitchPreference.setSummary(boo + "");
    108                 
    109                 break;
    110             default:
    111                 break;
    112             }
    113         }
    114     }
    115 
    116     @Override
    117     public void onResume() {
    118         super.onResume();
    119         // 注册数据发生变化时候的监听
    120         mSharedPreferences.registerOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);
    121         // getPreferenceScreen().getSharedPreferences()
    122         // .registerOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);
    123     }
    124 
    125     @Override
    126     public void onPause() {
    127         super.onPause();
    128         // 取消数据发生变化时候的监听
    129         mSharedPreferences.unregisterOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);
    130         // getPreferenceScreen().getSharedPreferences()
    131         // .unregisterOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);
    132     }
    133 }

    主要优化的地方有:①、使用了switch,提高了效率(Jdk1.7以上,包括1.7)

             ②、把seeting菜单改变时的监听提取了出来,降低了代码的耦合度

  • 相关阅读:
    9.20-9.21学习内容
    轮播图案例
    一个封装函数的实现过程
    9.18-9.19学习内容
    事件捕获和事件冒泡
    9.17学习内容
    appendChild()方法遇到的问题
    9.15学习内容
    9.16学习内容
    通过端口检测远程服务器是否开启,如果没有开启开启本地替代服务脚本
  • 原文地址:https://www.cnblogs.com/zzw1994/p/5017019.html
Copyright © 2020-2023  润新知