SettingsActivity 自動生成:純原生的美!

先看效果

在這裏插入圖片描述

開發環境

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

具體操作

利用android stutio 自動生成SettingsActivity

在這裏插入圖片描述
在這裏插入圖片描述
生成後的activity

說說機制

自動生成的SettingsActivity ,代碼簡潔,邏輯清晰,簡明扼要…其實就一個詞:代碼簡潔。
它不需要普通的activity那樣,繁瑣的去配置每個控件的標籤,字體,間距等等樣式
它也不需要在代碼裏面填寫繁瑣的邏輯,如何在SharedPreferences中保存這個設置信息
它只需要配置xml,內容有:每行的標題,內容,默認值
保存位置:包名_preferences.xml

標籤對照

在這裏插入圖片描述

常用標籤屬性

在這裏插入圖片描述

  1. 文本輸入類型
    app:key= 保存SharedPreferences中的KEY
    app:title= 在手機上顯示的標題
    app:useSimpleSummaryProvider= true/false 是否顯示值內容
<EditTextPreference
	app:key="SP_KEY_USERNAME"
	app:title="@string/app_user_name"
	app:useSimpleSummaryProvider="true" />

在這裏插入圖片描述

  1. 單選
    app:entries= 彈出單選的內容
    app:entryValues= 單選內容對應值,保存SharedPreferences中
    app:key= 保存SharedPreferences中的KEY
    app:useSimpleSummaryProvider= true/false 是否顯示值內容
<ListPreference
    app:entries="@array/module_entries"
    app:entryValues="@array/module_values"
    app:key="SP_KEY_MODULE"
    app:title="@string/app_module"
    app:useSimpleSummaryProvider="true" />

arrays.xml

<resources>
    <!-- Reply Preference -->
    <string-array name="module_entries">
        <item>Boss3</item>
        <item>Boss2</item>
        <item>Boss1</item>
    </string-array>

    <string-array name="module_values">
        <item>Boss3</item>
        <item>Boss2</item>
        <item>Boss1</item>
    </string-array>
</resources>

在這裏插入圖片描述

監聽操作

通常這樣是不夠的,有些數據不僅僅保存在xml中,還需要其他的操作,比如保存數據,網絡請求等,那麼就需要監聽操作,進行相關邏輯判斷處理。

具體代碼:

  1. 找到控件
findPreference("SP_KEY_MODULE");
  1. 添加監聽
findPreference("SP_KEY_MODULE").setOnPreferenceClickListener(this);//點擊監聽
findPreference("SP_KEY_MODULE").setOnPreferenceChangeListener(this);//保存監聽
  1. 監聽處理
/**
 * 保存監聽處理
 * @param preference
 * @param newValue
 * @return false:不保存操作	true:保存操作
 */
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
    if (newValue == null || TextUtils.isEmpty(newValue.toString())) {
        MyToast.show("輸入有誤,請重新輸入");
        return false;
    }
    return true;
}

/**
 * 點擊監聽處理 Called when a preference has been clicked.
 * @param preference The preference that was clicked
 * @return {@code true} if the click was handled
 */
@Override
public boolean onPreferenceClick(Preference preference) {
    return false;
}
發佈了16 篇原創文章 · 獲贊 10 · 訪問量 2272
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章