zoukankan      html  css  js  c++  java
  • 原生camera应用 保存设置界面参数方法

    ------------设置参数--------

    camera.java 中声明变量

    private ComboPreferences mPreferences;

    private PreferenceGroup mPreferenceGroup;

      mPreferences 是ComboPreferences(继承SharedPreferences)对象,用于存储 用户点击设置界面保存的数据

      mPreferenceGroup是界面列表抽象对象CameraPreference的集合,用于存储camera设置界面的信息

    该数据储存在camera_preferences.xml中,初始化mPreferenceGroup

    mPreferenceGroup = settings.getPreferenceGroup(R.xml.camera_preferences);

    用户点击设置界面做的操作

    例如:照片尺寸切换设置等

    InLineSettingKnob.java

    OnTouchListener mNextTouchListener = new OnTouchListener() {//切换下一个尺寸

      public boolean onTouch(View v, MotionEvent event) {

      ...

      if (!mNext && changeIndex(mIndex - 1)){

      ...

      }

    }

     changeIndex方法执行的操作

    protected boolean changeIndex(int index) {

     ...

     mPreference.setValueIndex(mIndex);

       if (mListener != null) {

        mListener.onSettingChanged();

     }

     updateView();

        ... 

    }

    执行ListPreference的persistStringValue方法保存相应的picturesize等信息到ComboPreferences

    同时更新执行mListener.onSettingChanged() 将预览参数传递给底层,更新预览效果

    执行updateView() 更新设置界面

     ------------设置列表界面读取参数--------

    例如:其他设置 界面

    OtherSettingsPopup.java 内部类OtherSettingsAdapter先生设置条目列表

    private class OtherSettingsAdapter extends ArrayAdapter<ListPreference> {

      ...

      public View getView(int position, View convertView, ViewGroup parent){

        ...

        view.initialize(pref); // 将对应的ListPreference传递给InLineSettingItem

        ...

      }

      ...

    }

    调用InLineSettingItem.java 的initialize

    public void initialize(ListPreference preference) {

      setTitle(preference);

      if (preference == null) return;

      mPreference = preference;

      reloadPreference();

    }

    public void reloadPreference() {

      mIndex = mPreference.findIndexOfValue(mPreference.getValue());

      updateView();

     }

    调用ListPreference.java的getValue()方法

    public String getValue() {

      if (!mLoaded) {

        mValue = getSharedPreferences().getString(mKey,findSupportedDefaultValue());

        mLoaded = true;

      }

      return mValue;

    }

    注意:这里的getValue的值是从上面保存的ComboPreferences 获取的,

    因此 如果设置过的一些属性 设置界面数据从mPreferences读取,

    否则就从mPreferenceGroup(即camera_preferences.xml)读取。

  • 相关阅读:
    使用Python连接redis(redis作MQ使用)_Tister的空间_百度空间
    LTTng 2.0 Downloads | LTTng Project
    How to capture stdout in realtime with Python « SaltyCrane Blog
    python的线程锁机制_dominic_80ChinaUnix博客
    Collective Intelligence实战/阿拉克(Satnam Alag)图书卓越亚马逊 [集体智慧编程]
    查IP
    沃尔玛控股中国1号店
    HeidiSQL MySQL made easy
    groovy学习7groovy sql 雪霁霜飞 博客园
    数据集 (DataSet) groovy
  • 原文地址:https://www.cnblogs.com/adamli/p/3225031.html
Copyright © 2011-2022 走看看