分享好友 移动开发首页 频道列表

使用 Android 原生 API 开发设置界面

Android开发  2017-02-05 13:520

算是 17 年第一篇文章,初衷就是简单介绍下用 xml 配置设置界面,为自定义设置界面 UI 做一个铺垫。

场景介绍

为了更好的用户体验,现在的大多数的应用都会提供一个设置界面,供用户去设置一些应用属性,比如用户名、昵称等信息的修改,或者还会有一些消息开关等都会在设置界面中完成。如下所示就是一个常见的设置界面截图(from 咕咚翻译)

使用 Android 原生 API 开发设置界面

类似这样的设置界面在一个应用中都会或多或少的存在。对于开发者而言,如何快速开发这样的设置界面呢?

对一个开发者而言,如果他对 Android 提供的设置 API 不了解,可能会自然而然的想到使用 layout 去画出来。然后在Activity 中实例化每个 item 对应的view,接着处理对应的 click、check 等事件。但是看到这里你应该已经知道 Android 已经提供了设置相关的 API,可以方便开发者快速开发设置 UI 。

这就是现在要说的 PreferenceActivity / PreferenceFragment 。

更多关于设置相关的官方介绍可通过 Setting 查阅。

建议直接看官方文档,比这里更加全面。

主要API 介绍

见名知意,

这俩是 Android 系统提供的两个跟设置相关的 API 组件,使用他们就可以方便快捷的开发出具有统一体验的设置UI。鉴于灵活性,大多数时候个人使用 ·PreferenceFragment 较多。

开发指南

几个要点

  • 不同于一般的 Fragment, PreferenceFragment 的布局是通过在XML 文件中声明的  Preference  类的各种子类构建而成,而不是使用  View  对象构建用户界面。
  • 您必须将 XML 文件保存在 res/xml/ 目录中。尽管您可以随意命名该文件,但它通常命名为 preferences.xml
  • XML 文件的根节点必须是一个 PreferenceScreen 元素。您可以在此元素内添加每个 Preference。在 元素内添加的每个子项均将作为单独的项目显示在设置列表中。

如下所示就是一个常规的设置配置文件。

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <CheckBoxPreference
        android:key="pref_sync"
        android:title="@string/pref_sync"
        android:summary="@string/pref_sync_summ"
        android:defaultValue="true" />
    <ListPreference
        android:dependency="pref_sync"
        android:key="pref_syncConnectionType"
        android:title="@string/pref_syncConnectionType"
        android:dialogTitle="@string/pref_syncConnectionType"
        android:entries="@array/pref_syncConnectionTypes_entries"
        android:entryValues="@array/pref_syncConnectionTypes_values"
        android:defaultValue="@string/pref_syncConnectionTypes_default" />
</PreferenceScreen>

使用配置文件

public static class SettingsFragment extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Load the preferences from an XML resource
        addPreferencesFromResource(R.xml.preferences);
    }
    ...
}

然后,正如您对其他任何 Fragment 的处理一样,您可以将此片段添加到  Activity 。例如:

public class SettingsActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Display the fragment as the main content.
        getFragmentManager().beginTransaction()
                .replace(android.R.id.content, new SettingsFragment())
                .commit();
    }
}

至此,启动 SettingsActivity 就可以看到一个设置界面了。

原理分析

这里简单说下背后的原理。

PreferenceFragment 和 PreferenceActivity 的布局本身包含一个 ListView ,使用 addPreferencesFromResource 方法后,PreferenceFragment 他们会去解析 xml 文件中定义的 Preference 对象,并把它们实例化,然后通过 Adapter 的形式填充到 ListView。然后就是我们看到的设置界面了。

关于

这篇文章属于技术介绍类文章,主要是为下一篇文章《自定义设置 UI 》做铺垫,其实没什么干货可写的,因为官方文档已经很详细,所以文章一开头,我也建议直接去看官方提供的文档,现在已经有很好的中文版本了,而且讲得很详细,很权威。

查看更多关于【Android开发】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
Android开发学习笔记之通过API接口将LaTex数学函数表达式转化为图片形式
这篇文章主要介绍了Android开发学习笔记之通过API接口将LaTex数学函数表达式转化为图片形式的相关资料,需要的朋友可以参考下

0评论2015-11-25207

如何调用百度地图API实现手机自动定位
api手机自动定位,通过声明地址解析器,获取当前坐标,如何调用百度地图api实现手机自动定位呢?接下来,一起跟小编来学习吧。

0评论2015-09-09100

使用android隐藏api实现亮度调节的方法
使用android隐藏api实现亮度调节的方法,需要的朋友可以参考一下

0评论2015-08-14140

android通过googleapi获取天气信息示例
这篇文章主要介绍了android通过google api获取天气信息示例,需要的朋友可以参考下

0评论2015-07-14108

更多推荐