Android系统源码剖析(一)---Settings

本文深入分析Android 4.4.2的Settings源码,包括Settings主界面的启动Activity、布局加载和header处理。讲解了如何加载XML布局、设置界面布局的适配器类型,并探讨了Settings.java的关键代码,如onCreate、onResume方法。同时,介绍了如何自定义Settings界面,如修改和增加header。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文为博主辛苦总结,针对Android4.42源码分析,转载请注明出处,http://blog.csdn.net/zrf1335348191/article/details/50837027


最近在研究Android的Settings源码,先看一下源码的目录结构。大概967左右个文件,是不是及其头疼而且无从下手?待我娓娓道来~~~~~


1,初识Settings

首先,这么多文件,到底哪个文件是主界面呢?在Settings目录下找到Androidmanifest.xml清单配置文件,找到首先启动的activity:

<activity android:name="Settings" android:label="@string/settings_label_launcher" android:taskAffinity="com.android.settings" android:launchMode="singleTask">
 <intent-filter>
  <action android:name="android.intent.action.MAIN" /> 
  <action android:name="android.settings.SETTINGS" /> 
  <category android:name="android.intent.category.DEFAULT" /> 
  <category android:name="android.intent.category.LAUNCHER" /> 
  </intent-filter>
  </activity>

可以看到,设置的主界面是Settings.Java(package com.android.settings;),

public class Settings extends PreferenceActivity
        implements ButtonBarHandler, OnAccountsUpdateListener {
         .....
<pre name="code" class="java"> loadHeadersFromResource(R.xml.settings_headers, headers);//加载布局
        
         .....
}

 

所对应的xml文件为Settings_headers.xml(res\xml\)文件。在此摘列出xml文件的一部分。

<preference-headers
        xmlns:android="http://schemas.android.com/apk/res/android">


    <!-- WIRELESS and NETWORKS -->
    <header android:id="@+id/wireless_section"
        android:title="@string/header_category_wireless_networks" />

    <!-- Wifi -->
    <header
        android:id="@+id/wifi_settings"
        android:fragment="com.android.settings.wifi.WifiSettings"
        android:title="@string/wifi_settings_title"
        android:icon="@drawable/ic_settings_wireless" />

    <!-- MobileData -->
    <header
        android:id="@+id/mobiledata_settings"
        android:icon="@drawable/stat_notify_mobile_data"
        android:title="@string/data_usage_enable_mobile">
        <intent
            android:action="android.intent.action.MAIN"
            android:targetPackage="com.android.phone"
            android:targetClass="com.android.phone.MobileNetworkSettings" />
    </header>
.........
</preference-headers>

每个可以选择和点击的item基本有四个属性,以WiFi_header为例

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值