camera中设置界面初探

在SettingManager中

    @Override
    protected View getView() {
        View view = inflate(R.layout.setting_indicator);
        mIndicator = (RotateImageView) view.findViewById(R.id.<span style="color:#FF6666;">setting_indicator</span>);
        mIndicator.setOnClickListener(this);
        return view;
    }
看下
<span style="color:#FF6666;">setting_indicator.xml这个文件</span>
<?xml version="1.0" encoding="utf-8"?>
<com.android.camera.ui.RotateImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/setting_indicator"
    style="@style/SettingIndicator"
    android:scaleType="center"
    android:clickable="true"
    android:focusable="true"
    android:padding="10dip"
    android:background="@drawable/bg_pressed"
    android:src="@drawable/<span style="color:#FF6666;">ic_setting_normal" //这个也就设置的那个图标</span>
    android:contentDescription="@string/accessibility_second_level_indicators"
    />
这里也就简单带过了,<img alt="大笑" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/laugh.gif" />想要记录的更细些
看下其中的onclick事件,注意到<span style="color:#FF6666;">showSetting()</span>方法
<pre name="code" class="java">    @Override
    public void onClick(View view) {
        if (view == mIndicator) {
            if (!mShowingContainer) {
               <span style="color:#FF6666;"> showSetting();</span>
            } else {
                collapse(true);
            }
        }
    }

 

 那么看下这个方法: 

    public void showSetting() {
        Log.i(TAG, "showSetting() mShowingContainer=" + mShowingContainer
                + ", getContext().isFullScreen()=" + getContext().isFullScreen());
        if (getContext().isFullScreen()) {
            if (!mShowingContainer && getContext().getCameraAppUI().isNormalViewState()) {
                mMainHandler.removeMessages(MSG_REMOVE_SETTING);
                mShowingContainer = true;
                mListener.onSettingContainerShowing(mShowingContainer);
                <span style="color:#FF0000;">initializeSettings();</span>
                refresh();
                highlightCurrentSetting(mPager.getCurrentItem());
                mSettingLayout.setVisibility(View.VISIBLE);
                if (mSettingLayout.getParent() == null) {
                    getContext().addView(mSettingLayout, SETTING_PAGE_LAYER);
                }
                getContext().getCameraAppUI().setViewState(ViewState.VIEW_STATE_SETTING);
                getContext().setSwipingEnabled(false);
                startFadeInAnimation(mSettingLayout);
                mIndicator.setImageResource(R.drawable.ic_setting_focus);
            }
            setChildrenClickable(true);
        }
    
<span style="color:#FF0000;">initializeSettings()方法:
</span><pre name="code" class="java"> <span style="color:#333333;">private void initializeSettings(){
        if (mSettingLayout == null && mSettingController.getPreferenceGroup() != null) {
            mSettingLayout = (ViewGroup) getContext().inflate(R.<span style="color:#FF6666;">layout.setting_containe</span>r,
                    SETTING_PAGE_LAYER);
            <span style="color:#FF6666;">mTabHost</span> = (TabHost) mSettingLayout.findViewById(R.id.tab_title);
            mTabHost.setup();
            
            // For tablet
            int settingKeys[] = SettingConstants.SETTING_GROUP_COMMON_FOR_TAB;
            if (FeatureSwitcher.isSubSettingEnabled()) {
                settingKeys = SettingConstants.SETTING_GROUP_MAIN_COMMON_FOR_TAB;
            } else if (FeatureSwitcher.isLomoEffectEnabled() && getContext().isNonePickIntent()) {
                settingKeys = SettingConstants.SETTING_GROUP_COMMON_FOR_LOMOEFFECT;
            }
            List<Holder> list = new ArrayList<Holder>();
            if (getContext().isNonePickIntent() || getContext().isStereoMode()) {
                if (FeatureSwitcher.isPrioritizePreviewSize()) {
                    list.add(new Holder(TAB_INDICATOR_KEY_PREVIEW,
                            R.drawable.ic_tab_common_setting,
                            SettingConstants.SETTING_GROUP_COMMON_FOR_TAB_PREVIEW));
                    list.add(new Holder(TAB_INDICATOR_KEY_COMMON, R.drawable.ic_tab_common_setting,
                            settingKeys));
                    list.add(new Holder(TAB_INDICATOR_KEY_CAMERA, R.drawable.ic_tab_camera_setting,
                            SettingConstants.SETTING_GROUP_CAMERA_FOR_TAB_NO_PREVIEW));
                    list.add(new Holder(TAB_INDICATOR_KEY_VIDEO, R.drawable.ic_tab_video_setting,
                            SettingConstants.SETTING_GROUP_VIDEO_FOR_TAB_NO_PREVIEW));
                } else if (getContext().isStereoMode()) {
                    list.add(new Holder(TAB_INDICATOR_KEY_COMMON, R.drawable.ic_tab_common_setting,
                            settingKeys));
                    list.add(new Holder(TAB_INDICATOR_KEY_CAMERA, R.drawable.ic_tab_camera_setting,
                            SettingConstants.SETTING_GROUP_CAMERA_3D_FOR_TAB));
                    list.add(new Holder(TAB_INDICATOR_KEY_VIDEO, R.drawable.ic_tab_video_setting,
                            SettingConstants.SETTING_GROUP_VIDEO_FOR_TAB));
                } else {
/**
      接下来就是初始化这个tabHost的东西了!
        初始化settingsKey就是设置界面的各个item对应的keyId
        list中存放的就是tabHost对应的标题,以及tab项中的内容,这时有三个页面,
        settingKesys与后面的SettingConstants.SETTING_GROUP_CAMERA_FRO_TAB,SettingContants.GROUP_VIDEO_FOR_TAB已经都初始化了
      对应的静态整型常量,也就是之后perference中key对应的id
*/

 <span style="color:#FF0000;">                   list.add(new Holder(TAB_INDICATOR_KEY_COMMON, R.drawable.ic_tab_common_setting,
                            settingKeys));
                    list.add(new Holder(TAB_INDICATOR_KEY_CAMERA, R.drawable.ic_tab_camera_setting,
                            SettingConstants.SETTING_GROUP_CAMERA_FOR_TAB));
                    list.add(new Holder(TAB_INDICATOR_KEY_VIDEO, R.drawable.ic_tab_video_setting,
                            SettingConstants.SETTING_GROUP_VIDEO_FOR_TAB));</span>
                }
            } else { // pick case has no video quality
                if (FeatureSwitcher.isPrioritizePreviewSize()) {
                    if (getContext().isImageCaptureIntent()) {
                        list.add(new Holder(TAB_INDICATOR_KEY_PREVIEW,
                                R.drawable.ic_tab_common_setting,
                                SettingConstants.SETTING_GROUP_COMMON_FOR_TAB_PREVIEW));
                        list.add(new Holder(TAB_INDICATOR_KEY_COMMON,
                                R.drawable.ic_tab_common_setting, settingKeys));
                        list.add(new Holder(TAB_INDICATOR_KEY_CAMERA,
                                R.drawable.ic_tab_camera_setting,
                                SettingConstants.SETTING_GROUP_CAMERA_FOR_TAB_NO_PREVIEW));
                    } else {
                        list.add(new Holder(TAB_INDICATOR_KEY_COMMON,
                                R.drawable.ic_tab_common_setting, settingKeys));
                        list.add(new Holder(TAB_INDICATOR_KEY_VIDEO,
                                R.drawable.ic_tab_video_setting,
                                SettingConstants.SETTING_GROUP_VIDEO_FOR_TAB_NO_PREVIEW));
                    }
                } else {
                    list.add(new Holder(TAB_INDICATOR_KEY_COMMON, R.drawable.ic_tab_common_setting,
                            settingKeys));
                    if (getContext().isImageCaptureIntent()) {
                        list.add(new Holder(TAB_INDICATOR_KEY_CAMERA,
                                R.drawable.ic_tab_camera_setting,
                                SettingConstants.SETTING_GROUP_CAMERA_FOR_TAB));
                    } else {
                        list.add(new Holder(TAB_INDICATOR_KEY_VIDEO,
                                R.drawable.ic_tab_video_setting,
                                SettingConstants.SETTING_GROUP_VIDEO_FOR_TAB_NO_PREVIEW));
                    }
                }
            }
            /**
                     接下来就是对tabHost设置tab页面了

           */ int size = list.size();
            List<SettingListLayout> pageViews = new ArrayList<SettingListLayout>();
            for (int i = 0; i < size; i++) {
                Holder holder = list.get(i);
                // new page view
                SettingListLayout pageView = (SettingListLayout) getContext().inflate(
                        R.layout.setting_list_layout, SETTING_PAGE_LAYER);
                ArrayList<ListPreference> listItems = new ArrayList<ListPreference>();
                pageView.initialize(getListPreferences(holder.mSettingKeys, i == 0));
                pageViews.add(pageView);
                // new indicator view
                ImageView indicatorView = new ImageView(getContext());
                if (indicatorView != null) {
                    indicatorView.setBackgroundResource(R.drawable.bg_tab_title);
                    indicatorView.setImageResource(holder.mIndicatorIconRes);
                    indicatorView.setScaleType(ScaleType.CENTER);
                }
                mTabHost.addTab(mTabHost.newTabSpec(holder.mIndicatorKey)
                        .setIndicator(indicatorView).setContent(android.R.id.tabcontent));
            }
            
            mAdapter = new MyPagerAdapter(pageViews);
            mPager = (ViewPager) mSettingLayout.findViewById(R.id.pager);
            mPager.setAdapter(mAdapter);
            mPager.setOnPageChangeListener(mAdapter);
            mTabHost.setOnTabChangedListener(this);
        }
        Util.setOrientation(mSettingLayout, getOrientation(), false);
    }</span>


  这时候的size为3,那么进入for循环,获得每个封装好的Holder对象,其中包含了标题的信息以及页面的所有item的keyId信息。pageVIew解析setting_list_layout.xml 

<?xml version="1.0" encoding="utf-8"?>
<com.android.camera.ui.SettingListLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:splitMotionEvents="false">
    <ListView android:id="@+id/<span style="color:#FF6666;">settingList</span>"
        style="@style/SettingItemList"
        android:descendantFocusability="blocksDescendants"
        android:layout_gravity="top" 
        android:splitMotionEvents="false"/>
</com.android.camera.ui.SettingListLayout>


 其实就是装在每页的布局罢了,每页面都是一个listview的布局
        这时pageView.initialize初始化listview
        先看getListPrefenrences方法,参数中holder.mSettingKeys就是之前初始化的settigKeys也就是页面中item的keyId

 

  private ArrayList<ListPreference> getListPreferences(int[] keys, boolean addrestore) {
        ArrayList<ListPreference> listItems = new ArrayList<ListPreference>();
        for (int i = 0; i < keys.length; i++) {
            String key = SettingConstants.getSettingKey(keys[i]);
            ListPreference pref = mSettingController.getListPreference(key);
            if(pref != null && pref.isShowInSetting()) {
                if (SettingConstants.KEY_VIDEO_QUALITY.equals(key)) {
                    if (!("on".equals(mSettingController
                            .getSettingValue(SettingConstants.KEY_SLOW_MOTION)))) {
                        listItems.add(pref);
                    }
                } else {
                    listItems.add(pref);
                }
                
            }
        }
        
        if (addrestore) {
            listItems.add(null);
        }
        return listItems;
    }
    

看到这个方法,其中就有settingContants.getSettingKey(int  settingId)看一下如何获得

SettingConstants.java

 public static String getSettingKey(int settingId) {
        return <span style="color:#FF6666;">KEYS_FOR_SETTING</span>[settingId];
    }
看到KEYS_FOR_SETTING这个静态数组,原来这个数组是个静态初始化的数组,通过静态代码块早已初始化了,看下初始化的内容,我们就恍然了
   // setting key and index
    public static final String[] KEYS_FOR_SETTING = new String[SETTING_COUNT];
    
    static {
        KEYS_FOR_SETTING[ROW_SETTING_FLASH]                 = KEY_FLASH;
        KEYS_FOR_SETTING[ROW_SETTING_DUAL_CAMERA]           = KEY_CAMERA_ID;//need recheck
        KEYS_FOR_SETTING[ROW_SETTING_EXPOSURE]              = KEY_EXPOSURE;
        KEYS_FOR_SETTING[ROW_SETTING_SCENCE_MODE]           = KEY_SCENE_MODE;
        KEYS_FOR_SETTING[ROW_SETTING_WHITE_BALANCE]         = KEY_WHITE_BALANCE;
        KEYS_FOR_SETTING[ROW_SETTING_IMAGE_PROPERTIES]      = KEY_IMAGE_PROPERTIES;
        KEYS_FOR_SETTING[ROW_SETTING_COLOR_EFFECT]          = KEY_COLOR_EFFECT;
        KEYS_FOR_SETTING[ROW_SETTING_SELF_TIMER]            = KEY_SELF_TIMER;
        KEYS_FOR_SETTING[ROW_SETTING_ZSD]                   = KEY_CAMERA_ZSD;
        KEYS_FOR_SETTING[ROW_SETTING_CONTINUOUS]            = KEY_CONTINUOUS_NUMBER;
        KEYS_FOR_SETTING[ROW_SETTING_RECORD_LOCATION]       = KEY_RECORD_LOCATION;//need recheck
        KEYS_FOR_SETTING[ROW_SETTING_PICTURE_SIZE]          = KEY_PICTURE_SIZE;
        KEYS_FOR_SETTING[ROW_SETTING_ISO]                   = KEY_ISO;
        KEYS_FOR_SETTING[ROW_SETTING_ANTI_FLICKER]          = KEY_ANTI_BANDING;
        KEYS_FOR_SETTING[ROW_SETTING_VIDEO_STABLE]          = KEY_VIDEO_EIS;
        KEYS_FOR_SETTING[ROW_SETTING_MICROPHONE]            = KEY_VIDEO_RECORD_AUDIO;
        KEYS_FOR_SETTING[ROW_SETTING_AUDIO_MODE]            = KEY_VIDEO_HD_AUDIO_RECORDING;
        KEYS_FOR_SETTING[ROW_SETTING_TIME_LAPSE]            = KEY_VIDEO_TIME_LAPSE_FRAME_INTERVAL;
        KEYS_FOR_SETTING[ROW_SETTING_VIDEO_QUALITY]         = KEY_VIDEO_QUALITY;
        KEYS_FOR_SETTING[ROW_SETTING_PICTURE_RATIO]         = KEY_PICTURE_RATIO;
        KEYS_FOR_SETTING[ROW_SETTING_VOICE]                 = KEY_VOICE;
        KEYS_FOR_SETTING[ROW_SETTING_3DNR]                  = KEY_VIDEO_3DNR;
        KEYS_FOR_SETTING[ROW_SETTING_SLOW_MOTION]           = KEY_SLOW_MOTION;
        KEYS_FOR_SETTING[ROW_SETTING_SLOW_MOTION_VIDEO_QUALITY]     = KEY_SLOW_MOTION_VIDEO_QUALITY;
        KEYS_FOR_SETTING[ROW_SETTING_AIS]                   = KEY_CAMERA_AIS;

         
        KEYS_FOR_SETTING[ROW_SETTING_SHARPNESS]             = KEY_EDGE;
        KEYS_FOR_SETTING[ROW_SETTING_HUE]                   = KEY_HUE;
        KEYS_FOR_SETTING[ROW_SETTING_SATURATION]            = KEY_SATURATION;
        KEYS_FOR_SETTING[ROW_SETTING_BRIGHTNESS]            = KEY_BRIGHTNESS;
        KEYS_FOR_SETTING[ROW_SETTING_CONTRAST]              = KEY_CONTRAST;
        KEYS_FOR_SETTING[ROW_SETTING_CAMERA_MODE]           = KEY_CAMERA_MODE;
        KEYS_FOR_SETTING[ROW_SETTING_CAPTURE_MODE]          = KEY_CAPTURE_MODE;
        KEYS_FOR_SETTING[ROW_SETTING_CONTINUOUS_NUM]        = KEY_CONTINUOUS_NUMBER;
        KEYS_FOR_SETTING[ROW_SETTING_RECORDING_HINT]        = KEY_RECORDING_HIHT;
        KEYS_FOR_SETTING[ROW_SETTING_JPEG_QUALITY]          = KEY_JPEG_QUALITY;
        KEYS_FOR_SETTING[ROW_SETTING_STEREO_MODE]           = KEY_STEREO3D_MODE;
        KEYS_FOR_SETTING[ROW_SETTING_FACEBEAUTY_PROPERTIES] = KEY_FACE_BEAUTY_PROPERTIES;
        KEYS_FOR_SETTING[ROW_SETTING_FACEBEAUTY_SMOOTH]     = KEY_FACE_BEAUTY_SMOOTH;
        KEYS_FOR_SETTING[ROW_SETTING_FACEBEAUTY_SKIN_COLOR] = KEY_FACE_BEAUTY_SKIN_COLOR;
        KEYS_FOR_SETTING[ROW_SETTING_FACEBEAUTY_SHARP]      = KEY_FACE_BEAUTY_SHARP;
        KEYS_FOR_SETTING[ROW_SETTING_CAMERA_FACE_DETECT]    = KEY_CAMERA_FACE_DETECT;
        KEYS_FOR_SETTING[ROW_SETTING_HDR]                   = KEY_HDR;
        KEYS_FOR_SETTING[ROW_SETTING_SMILE_SHOT]            = KEY_SMILE_SHOT;
        KEYS_FOR_SETTING[ROW_SETTING_ASD]                   = KEY_ASD;
        KEYS_FOR_SETTING[ROW_SETTING_MUTE_RECORDING_SOUND]  = KEY_MUTE_RECORDING_SOUND;
        KEYS_FOR_SETTING[ROW_SETTING_GESTURE_SHOT]          = KEY_GESTURE_SHOT;
        KEYS_FOR_SETTING[ROW_SETTING_MULTI_FACE_MODE]       = KEY_MULTI_FACE_BEAUTY;
        KEYS_FOR_SETTING[ROW_SETTING_FACEBEAUTY_SLIM]       = KEY_FACE_BEAUTY_SLIM;
        KEYS_FOR_SETTING[ROW_SETTING_FACEBEAUTY_BIG_EYES]   = KEY_FACE_BEAUTY_BIG_EYES;
        KEYS_FOR_SETTING[ROW_SETTING_DUAL_CAMERA_MODE]      = KEY_DUAL_CAMERA_MODE;
        KEYS_FOR_SETTING[ROW_SETTING_FAST_AF]               = KEY_FAST_AF;
        KEYS_FOR_SETTING[ROW_SETTING_DISTANCE]              = KEY_DISTANCE;
        KEYS_FOR_SETTING[ROW_SETTING_FACE_BEAUTY]           = KEY_FACE_BEAUTY;
        KEYS_FOR_SETTING[ROW_SETTING_PANORAMA]              = KEY_PANORAMA;
        KEYS_FOR_SETTING[ROW_SETTING_MAV]                   = KEY_MAV;
        KEYS_FOR_SETTING[ROW_SETTING_MOTION_TRACK]          = KEY_MOTION_TRACK;
        KEYS_FOR_SETTING[ROW_SETTING_PHOTO_PIP]             = KEY_PHOTO_PIP;
        KEYS_FOR_SETTING[ROW_SETTING_VIDEO_PIP]             = KEY_VIDEO_PIP;
        KEYS_FOR_SETTING[ROW_SETTING_LIVE_PHOTO]            = KEY_LIVE_PHOTO;
        KEYS_FOR_SETTING[ROW_SETTING_VIDEO]                 = KEY_VIDEO;
        KEYS_FOR_SETTING[ROW_SETTING_REFOCUS]               = KEY_REFOCUS;
        KEYS_FOR_SETTING[ROW_SETTING_NORMAL]                = KEY_NORMAL;
        KEYS_FOR_SETTING[ROW_SETTING_OBJECT_TRACKING]       = KEY_OBJECT_TRACKING;
        KEYS_FOR_SETTING[ROW_SETTING_GANGYUN_BEAUTY]           = KEY_GYBEAUTY_MODE;//gangyun tech add 
        KEYS_FOR_SETTING[ROW_SETTING_SELF_PREVIEW]           = KEY_SELF_PREVIEW;//xxw
        KEYS_FOR_SETTING[ROW_SETTING_GRADIENTER]           = KEY_GRADIENTER;//xxw
        KEYS_FOR_SETTING[ROW_SETTING_TAP_TO_CAPTURE]           = KEY_TAP_TO_CAPTURE;//xxw        
        KEYS_FOR_SETTING[ROW_SETTING_VOLUME_KEY]           = KEY_SET_VOLUME_KEY;//dewav link.lin add 
    };
    
    public static final int[] SETTING_GROUP_COMMON_FOR_TAB = new int[]{
        ROW_SETTING_DUAL_CAMERA_MODE,
        ROW_SETTING_RECORD_LOCATION,//common
        ROW_SETTING_MULTI_FACE_MODE,
        ROW_SETTING_EXPOSURE,//common
        ROW_SETTING_COLOR_EFFECT,//common
        ROW_SETTING_SCENCE_MODE,//common
        ROW_SETTING_WHITE_BALANCE,//common
        ROW_SETTING_IMAGE_PROPERTIES,
        ROW_SETTING_ANTI_FLICKER,//common
    };
 全部是设置界面的的item的key字符串,根据这些key值直接找到对应的preference

接着mSettingController.getListPreference(String key)映射到Camera_Preferences.xml

<PreferenceGroup
        xmlns:camera="http://schemas.android.com/apk/res/com.android.gallery3d"
        camera:title="@string/pref_camera_settings_category">
    <IconListPreference
            camera:key="pref_camera_flashmode_key"
            camera:defaultValue="@string/pref_camera_flashmode_default"
            camera:title="@string/pref_camera_flashmode_title"
            camera:icons="@array/camera_flashmode_icons"
            camera:entries="@array/pref_camera_flashmode_entries"
            camera:entryValues="@array/pref_camera_flashmode_entryvalues" />
    <IconListPreference
            camera:key="pref_camera_exposure_key"
            camera:defaultValue="@string/pref_exposure_default"
            camera:title="@string/pref_exposure_title"
            camera:icons="@array/camera_exposure_icons"
            camera:entries="@array/pref_camera_exposure_entries"
            camera:entryValues="@array/pref_camera_exposure_entryvalues" />
    <IconListPreference
            camera:key="pref_camera_scenemode_key"
            camera:defaultValue="@string/pref_camera_scenemode_default"
            camera:title="@string/pref_camera_scenemode_title"
            camera:icons="@array/camera_scenemode_icons"
            camera:entries="@array/pref_camera_scenemode_entries"
            camera:entryValues="@array/pref_camera_scenemode_entryvalues" />
    <IconListPreference
            camera:key="pref_camera_whitebalance_key"
            camera:defaultValue="@string/pref_camera_whitebalance_default"
            camera:title="@string/pref_camera_whitebalance_title"
            camera:icons="@array/whitebalance_icons"
            camera:entries="@array/pref_camera_whitebalance_entries"
            camera:entryValues="@array/pref_camera_whitebalance_entryvalues" />
    <RecordLocationPreference
            camera:key="pref_camera_recordlocation_key"
            camera:defaultValue="@string/pref_camera_recordlocation_default"
            camera:title="@string/pref_camera_record_location_title"
            camera:entries="@array/pref_camera_recordlocation_entries"
            camera:entryValues="@array/pref_camera_recordlocation_entryvalues" />
    <!-- camera:icons="@array/camera_recordlocation_icons" -->
    <ListPreference
            camera:key="pref_camera_picturesize_key"
            camera:title="@string/pref_camera_picturesize_title"
            camera:entries="@array/pref_camera_picturesize_entries"
            camera:entryValues="@array/pref_camera_picturesize_entryvalues" />
    <IconListPreference
            camera:key="pref_camera_id_key"
            camera:defaultValue="@string/pref_camera_id_default"
            camera:title="@string/pref_camera_id_title"
            camera:icons="@array/camera_id_icons"
            camera:entries="@array/camera_id_entries" />
    <!-- ISO -->
    <ListPreference
        camera:key="pref_camera_iso_key"
        camera:defaultValue="@string/pref_camera_iso_default"
        camera:title="@string/pref_camera_iso_title"
        camera:entries="@array/pref_camera_iso_entries"
        camera:entryValues="@array/pref_camera_iso_entryvalues"/>
    <IconListPreference
            camera:key="perf_camera_ais_key"
            camera:defaultValue="@string/pref_camera_ais_default"
            camera:title="@string/pref_camera_ais_title"
            camera:entries="@array/pref_camera_ais_entries"
            camera:entryValues="@array/pref_camera_ais_entryvalues"/>

    <!-- Image adjustment -->
        <!-- Edge -->
        <ListPreference
            camera:key="pref_camera_edge_key"
            camera:defaultValue="@string/pref_camera_edge_default"
            camera:title="@string/pref_camera_edge_title"
            camera:entries="@array/pref_camera_dip_entries"
            camera:entryValues="@array/pref_camera_dip_entryvalues" />
        <!-- Hue -->
        <ListPreference
            camera:key="pref_camera_hue_key"
            camera:defaultValue="@string/pref_camera_hue_default"
            camera:title="@string/pref_camera_hue_title"
            camera:entries="@array/pref_camera_dip_entries"
            camera:entryValues="@array/pref_camera_dip_entryvalues" />
        <!-- Saturation -->
        <ListPreference
            camera:key="pref_camera_saturation_key"
            camera:defaultValue="@string/pref_camera_saturation_default"
            camera:title="@string/pref_camera_saturation_title"
            camera:entries="@array/pref_camera_dip_entries"
            camera:entryValues="@array/pref_camera_dip_entryvalues" />
        <!-- Brightness -->
        <ListPreference
            camera:key="pref_camera_brightness_key"
            camera:defaultValue="@string/pref_camera_brightness_default"
            camera:title="@string/pref_camera_brightness_title"
            camera:entries="@array/pref_camera_dip_entries"
            camera:entryValues="@array/pref_camera_dip_entryvalues" />
        <!-- Contrast -->
        <ListPreference
            camera:key="pref_camera_contrast_key"
            camera:defaultValue="@string/pref_camera_contrast_default"
            camera:title="@string/pref_camera_contrast_title"
            camera:entries="@array/pref_camera_dip_entries"
            camera:entryValues="@array/pref_camera_dip_entryvalues" />
    <!--  Effects -->
    <IconListPreference
        camera:key="pref_camera_coloreffect_key"
        camera:defaultValue="@string/pref_camera_coloreffect_default"
        camera:title="@string/pref_camera_coloreffect_title"
        camera:icons="@array/camera_coloreffect_icons"
        camera:entries="@array/pref_camera_coloreffect_entries"
        camera:entryValues="@array/pref_camera_coloreffect_entryvalues" />
        
    <!-- Self timer setting -->
    <IconListPreference
        camera:key="pref_camera_self_timer_key"
        camera:defaultValue="@string/pref_camera_selftimer_default"
        camera:title="@string/pref_camera_selftimer_title"
        camera:icons="@array/camera_selftimer_icons"
        camera:entries="@array/pref_camera_selftimer_entries"
        camera:entryValues="@array/pref_camera_selftimer_entryvalues"/>
        
    <!-- anti-flicker -->
    <ListPreference
        camera:key="pref_camera_antibanding_key"
        camera:defaultValue="@array/pref_camera_antibanding_default_array"
        camera:title="@string/pref_camera_antibanding_title"
        camera:entries="@array/pref_camera_antibanding_entries"
        camera:entryValues="@array/pref_camera_antibanding_entryvalues" />

    <ListPreference
        camera:key="pref_camera_zsd_key"
        camera:defaultValue="@string/pref_camera_zsd_default"
        camera:title="@string/pref_camera_zsd_title"
        camera:entries="@array/pref_camera_zsd_entries"
        camera:entryValues="@array/pref_camera_zsd_entryvalues" />

    <ListPreference
        camera:key="pref_camera_shot_number"
        camera:defaultValue="@string/pref_camera_continuous_number_default"
        camera:title="@string/pref_camera_continuous_number_title"
        camera:entries="@array/pref_camera_continuous_number_entries"
        camera:entryValues="@array/pref_camera_continuous_number_entryvalues" />

    <!-- video setting start --> 
    <IconListPreference
            camera:key="pref_video_quality_key"
            camera:defaultValue="@string/pref_video_record_quality_default"
            camera:title="@string/pref_video_quality_title"
            camera:entries="@array/pref_video_quality_entries"
            camera:entryValues="@array/pref_video_quality_entryvalues"/>
    <IconListPreference
            camera:key="pref_slow_motion_video_quality_key"
            camera:defaultValue="@string/pref_slow_motion_video_record_quality_default"
            camera:title="@string/pref_slow_motion_video_quality_title"
            camera:entries="@array/pref_slow_motion_video_quality_entries"
            camera:entryValues="@array/pref_slow_motion_video_quality_entryvalues"/>
    <IconListPreference
            camera:key="pref_video_time_lapse_frame_interval_key"
            camera:defaultValue="@string/pref_video_time_lapse_frame_interval_default"
            camera:title="@string/pref_video_time_lapse_frame_interval_title"
            camera:icons="@array/video_timelapse_icons"
            camera:entries="@array/pref_video_time_lapse_frame_interval_entries"
            camera:entryValues="@array/pref_video_time_lapse_frame_interval_entryvalues"/>
    <ListPreference
            camera:key="pref_camera_recordaudio_key"
            camera:defaultValue="@string/pref_camera_recordaudio_default"
            camera:title="@string/pref_camera_recordaudio_title"
            camera:entries="@array/pref_camera_recordaudio_entries"
            camera:entryValues="@array/pref_camera_recordaudio_entryvalues"/>
      <ListPreference 
            camera:key="pref_camera_video_hd_recording_key"
            camera:defaultValue="@string/pref_video_hd_recording_default" 
            camera:title="@string/pref_camera_video_hd_recording_title" 
            camera:entries="@array/pref_camera_video_hd_recording_entries" 
            camera:entryValues="@array/pref_camera_video_hd_recording_entryvalues" />
       <!-- video setting end -->
       <ListPreference 
            camera:key="pref_camera_image_properties_key"
            camera:defaultValue="@string/pref_camera_image_properties_default" 
            camera:title="@string/pref_camera_image_properties_title"
            camera:entries="@array/pref_camera_image_properties_entries"
            camera:entryValues="@array/pref_camera_image_properties_entryvalues" />
    <ListPreference
        camera:defaultValue="@string/pref_dual_camera_default"
        camera:entries="@array/pref_dual_camera_entries"
        camera:entryValues="@array/pref_dual_camera_entryvalues"
        camera:key="pref_dual_camera_key"
        camera:title="@string/pref_dual_camera_switch" />
    <ListPreference
        camera:defaultValue="@string/pref_fast_af_default"
        camera:entries="@array/pref_dual_camera_dip_entries"
        camera:entryValues="@array/pref_dual_camera_dip_entryvalues"
        camera:key="pref_fast_af_key"
        camera:title="@string/pref_fast_af_title" />
    <ListPreference
        camera:defaultValue="@string/pref_distance_default"
        camera:entries="@array/pref_dual_camera_dip_entries"
        camera:entryValues="@array/pref_dual_camera_dip_entryvalues"
        camera:key="pref_distance_key"
        camera:title="@string/pref_distance_info_title" />
    <ListPreference
            camera:key="pref_camera_picturesize_ratio_key"
            camera:title="@string/pref_camera_picturesize_ratio_title"
            camera:entries="@array/pref_camera_picturesize_ratio_entries"
            camera:entryValues="@array/pref_camera_picturesize_ratio_entryvalues" />
    <IconListPreference 
            camera:key="pref_voice_key"
            camera:defaultValue="@string/pref_voice_default" 
            camera:title="@string/pref_voice_capture"
            camera:icons="@array/voice_icons"
            camera:entries="@array/pref_voice_entries"
            camera:entryValues="@array/pref_voice_entryvalues" />
    <IconListPreference
            camera:key="pref_slow_motion_key"
            camera:defaultValue="@string/pref_slow_motion_default" 
            camera:title="@string/pref_slow_motion"
            camera:icons="@array/slow_motion_icons"
            camera:entries="@array/pref_slow_motion_entries"
            camera:entryValues="@array/pref_slow_motion_entryvalues" />
    <ListPreference 
            camera:key="pref_video_hdr_key"
            camera:defaultValue="@string/pref_video_hdr_default" 
            camera:title="@string/pref_video_hdr_title"
            camera:entries="@array/pref_video_hdr_entries"
            camera:entryValues="@array/pref_video_hdr_entryvalues" />
        <ListPreference 
            camera:key="pref_camera_facebeauty_properties_key"
            camera:defaultValue="@string/pref_camera_facebeauty_properties_default" 
            camera:title="@string/pref_camera_facebeauty_properties_title"
            camera:entries="@array/pref_camera_facebeauty_properties_entries"
            camera:entryValues="@array/pref_camera_facebeauty_properties_entryvalues" />
    <!-- facebeauty adjustment -->
        <!-- Smooth -->
        <IconListPreference
            camera:key="pref_facebeauty_smooth_key"
            camera:defaultValue="@string/pref_facebeauty_smooth_default"
            camera:title="@string/pref_facebeauty_smooth_title"
            camera:icons="@array/facebeauty_smooth_icons"
            camera:entries="@array/pref_camera_dip_entries"
            camera:entryValues="@array/pref_camera_facebeauty_turning_entryvalues" />
        <!-- Skin color -->
        <IconListPreference
            camera:key="pref_facebeauty_skin_color_key"
            camera:defaultValue="@string/pref_facebeauty_skin_color_default"
            camera:title="@string/pref_facebeauty_skin_color_title"
            camera:icons="@array/facebeauty_skin_color_icons"
            camera:entries="@array/pref_camera_dip_entries"
            camera:entryValues="@array/pref_camera_facebeauty_turning_entryvalues" />
        <!-- Sharp -->
        <IconListPreference
            camera:key="pref_facebeauty_sharp_key"
            camera:defaultValue="@string/pref_facebeauty_sharp_default"
            camera:title="@string/pref_facebeauty_sharp_title"
            camera:icons="@array/facebeauty_sharp_icons"
            camera:entries="@array/pref_camera_dip_entries"
            camera:entryValues="@array/pref_camera_facebeauty_turning_entryvalues" />
        <ListPreference
            camera:key="pref_video_eis_key"
            camera:defaultValue="@string/pref_camera_eis_default"
            camera:title="@string/pref_camera_eis_title"
            camera:entries="@array/pref_camera_eis_entries"
            camera:entryValues="@array/pref_camera_eis_entryvalues"/>
        <ListPreference
            camera:key="pref_video_3dnr_key"
            camera:defaultValue="@string/pref_camera_3dnr_default"
            camera:title="@string/pref_camera_3dnr_title"
            camera:entries="@array/pref_camera_3dnr_entries"
            camera:entryValues="@array/pref_camera_3dnr_entryvalues"/>
        <ListPreference
            camera:key="pref_face_detect_key"
            camera:defaultValue="@string/pref_camera_face_detect_default"
            camera:title="@string/pref_camera_face_detect_title"
            camera:entries="@array/pref_camera_face_detect_entries"
            camera:entryValues="@array/pref_camera_face_detect_entryvalues"/>
            
        <ListPreference
            camera:key="pref_face_beauty_multi_mode_key"
            camera:title="@string/pref_face_beauty_mode_title"
            camera:entries="@array/pref_camera_multi_face_beauty_entries"
            camera:entryValues="@array/pref_camera_multi_face_beauty_entryvalues"/>
        <!-- Added by Joseth @{ -->
        <ListPreference
            camera:key="pref_self_preview_key"
            camera:defaultValue="@string/pref_camera_self_preview_default"
            camera:title="@string/pref_camera_self_preview_title"
            camera:entries="@array/pref_camera_self_preview_entries"
            camera:entryValues="@array/pref_camera_self_preview_entryvalues"/>
		<!-- @} -->
    	<!-- Gordon: Gradienter @{ -->
    	<ListPreference
        	camera:key="pref_gradienter_key"
        	camera:defaultValue="@string/pref_camera_gradienter_default"
        	camera:title="@string/pref_camera_gradienter_title"
        	camera:entries="@array/pref_camera_gradienter_entries"
        	camera:entryValues="@array/pref_camera_gradienter_entryvalues"/>
    	<!-- Gordon: @} -->
		<ListPreference
		    camera:key="pref_tap_to_capture_key"
		    camera:defaultValue="@string/pref_camera_tap_to_capture_default"
		    camera:title="@string/pref_camera_tap_to_capture_title"
		    camera:entries="@array/pref_camera_tap_to_capture_entries"
		    camera:entryValues="@array/pref_camera_tap_to_capture_entryvalues"/>
            
        <!-- mcoy add begin for volume keys -->
        <ListPreference
            camera:key="pref_set_volume_key"
            camera:defaultValue="0"
            camera:title="@string/pref_set_volume_key_title"
            camera:entries="@array/pref_set_volume_key_entries"
            camera:entryValues="@array/pref_set_volume_key_entryvalues"/>
        <!-- mcoy add end for volume keys-->

    <IconListPreference
            camera:key="pref_hdr_key"
            camera:defaultValue="@string/pref_camera_hdr_default"
            camera:title="@string/pref_camera_hdr_title"
            camera:icons="@array/pref_hdr_icons"
            camera:entries="@array/pref_camera_hdr_entries"
            camera:entryValues="@array/pref_camera_hdr_entryvalues"/>
    <IconListPreference
            camera:key="pref_smile_shot_key"
            camera:defaultValue="@string/pref_smile_shot_default"
            camera:title="@string/pref_smile_shot_title"
            camera:icons="@array/pref_smile_shot_icons"
            camera:entries="@array/pref_smile_shot_entries"
            camera:entryValues="@array/pref_smile_shot_entryvalues"/>
    <ListPreference
            camera:key="pref_asd_key"
            camera:defaultValue="@string/pref_asd_default"
            camera:title="@string/pref_asd_title"
            camera:entries="@array/pref_asd_entries"
            camera:entryValues="@array/pref_asd_entryvalues"/>
    <IconListPreference
            camera:key="pref_gesture_shot_key"
            camera:defaultValue="@string/pref_gesture_shot_default"
            camera:title="@string/pref_camera_capturemode_entry_gestureshot"
            camera:icons="@array/pref_gesture_shot_icons"
            camera:entries="@array/pref_gesture_shot_entries"
            camera:entryValues="@array/pref_gesture_shot_entryvalues"/>
  <!--add by gangyun tech-->
    <IconListPreference
            camera:key="pref_camera_gybeauty_key"
            camera:defaultValue="@string/pref_gybeauty_entry_on"
            camera:icons="@array/gybeauty_icons"
            camera:title="@string/gy_faceart_guide_capture"
            camera:entries="@array/pref_camera_gybeauty_entries"
            camera:entryValues="@array/pref_camera_gybeauty_entryvalues" />
 <!--end by gangyun tech--> 
</PreferenceGroup>

  这时候pageView.initialize(getListPreferences(holder.mSettingKeys, i == 0));中的getListPreferences方法结束,此时返回了ArrayList<listPreference>作为initialize方法的参数传入,看下initialize方法。其中用一个SettingsListAdapter的适配器对解析的listview进行初始化

public void initialize(ArrayList<ListPreference> listItems) {
        mListItem = listItems;
        
        mListItemAdapter = new SettingsListAdapter();
        mSettingList.setAdapter(mListItemAdapter);
        mSettingList.setOnItemClickListener(this);
        mSettingList.setSelector(android.R.color.transparent);
        mSettingList.setOnScrollListener(this);
    }

目前先看到这

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值