android settings源代码分析(1)

1.android settings源码的source code路径为:

kikat_4.4_CTS\packages\apps\Settings

 

2.settings主界面UI布局

Settings的启动类为:

/**
 * Top-level settings activity to handle single pane and double pane UI layout.
 */
public class Settings extends PreferenceActivity
        implements ButtonBarHandler, OnAccountsUpdateListener


从继承关系可以看出,Settings类继承于PreferenceActivity,因此具有Preference的一些属性和结构。

 

从Google  settings的UI看出,左边是一些tab,右边是tab对应的内容,那么这些tab以及tab对应的内容主要是什么,以及如何显示的呢?

 

对于tab的显示,对应的code为:

 /**
     * Populate the activity with the top-level headers.
     */
    @Override
    public void onBuildHeaders(List
headers) { if (!onIsHidingHeaders()) { loadHeadersFromResource(R.xml.settings_headers, headers); updateHeaderList(headers); } }

可以看出,左边的tab实际是一些Header,从settings_headers.xml中获取这些header。settings_header.xml对应的code为:







    
    

从上述xml可以看出,header的内容是通过fragment来显示,定义了每一个header对应的fragment。

 

在private void updateHeaderList(List

target)函数中,会根据当前平台是否支持某项feature,决定是否显示对应的header:

 else if (id == R.id.wifi_settings) {
                // Remove WiFi Settings if WiFi service is not available.
                if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI)) {
                    target.remove(i);
                }
            } else if (id == R.id.bluetooth_settings) {
                // Remove Bluetooth Settings if Bluetooth service is not available.
                if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
                    target.remove(i);
                }
            } 

 

你可能感兴趣的:(android移动开发)