­

這才是Android設置界面的正確做法👌👌👌

話不多說,先上效果圖

效果圖

本文參考簡書博客:《這才是Android設置界面的正確做法👌👌👌寫成,在其基礎上刪改並增加了一些內容。建議新窗口打開原文,在本文講述不清楚的地方參考原文去尋找答案。

其實設置界面,不需要自己去一個一個選項地去做。Android為我們提供了一些封裝好的東西,那就是基於SharedPreferencesPreferenceActivity

首先在res目錄下新建一個名為「xml」的文件夾,新建preference.xml,名字可以修改(這裡的代碼可以參考原文,此處作了精簡)

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="//schemas.android.com/apk/res/android">
    <PreferenceCategory android:title="設置1">
        <EditTextPreference
            android:key="Setting1"
            android:title="我是標題"
            android:summary="我是簡介" />
    </PreferenceCategory>
    <PreferenceCategory android:title="設置2">
        <SwitchPreference
            android:key="Setting2"
            android:checked="true"
            android:title="我是標題"
            android:summary="我是簡介"
            android:summaryOff="我是關閉選項時的summary"
            android:summaryOn="我是開啟選項時的summary" />
    </PreferenceCategory>
</PreferenceScreen>

PreferenceScree表明這是一個設置頁面。
PreferenceCategory可以用來區分不同類型的選項,可以設置一個title屬性作為小標題。

這裡轉載原文的解釋

支持類型

Preference : 普通選項
EditTextPreference : 點擊後彈出編輯框窗口的選項
SwitchPreference : 開關選項
RingtonePreference : 打開內容提供
CheckBoxPreference : 帶複選按鈕
ListPreference : 複合的單選按鈕
MultiSelectListPreference : 複合的複選按鈕

支持屬性

key :最多的屬性,因為Preference這個數據的存取就是使用SharedPreferences來實現的。所以保存時需要一個key的。
summary :小標題或者叫做簡述,一般是用於對選項的簡要說明。
summaryOff :具有開關屬性的選項關閉時的summary
summaryOn :具有開關屬性的選項打開時的summary
title :選項的標題
dialogTitle :彈出消息框的標題
dialogMessage :彈出的消息框的內容,會把MultiSelectListPreference和ListPreference的選項覆蓋
layout :選項的布局(支持自定義)

然後在放置Java的目錄新建一個PreferenceSettings.java,名字可以修改

package 你自己的包名;

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class PreferenceSettings extends PreferenceActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.addPreferencesFromResource(R.xml.preference);  // 如果剛剛的xml用了自己的文件名,此處記得修改
    }
}
獲取設置內容
// 由於PreferenceScreen基於SharedPreferences,所以他的調用方法與是相似的
String DefaultUrl = PreferenceManager.getDefaultSharedPreferences(this)
                .getString("DefaultUrl", ""); // 此處的getString可視需要改變為getAll, getBoolean等(具體請查找SharedPreferences相關資料)

最後記得在manifest中註冊這個Activity

<activity android:name=".你的Java文件的文件名"/>