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)读取。

  • 相关阅读:
    javascript页面刷新的几种方法
    Expo大作战(三十九)--expo sdk api之 DocumentPicker,Contacts(获取手机联系人信息),Branch
    Expo大作战(三十八)--expo sdk api之 FileSystem(文件操作系统)
    Expo大作战(三十七)--expo sdk api之 GLView,GestureHandler,Font,Fingerprint,DeviceMotion,Brightness
    Expo大作战(三十六)--expo sdk api之 ImagePicker,ImageManipulator,Camera
    Expo大作战(三十五)--expo sdk api之Location!
    一条SQL语句中算日销售额和月销售额
    绑定sql server数据库的用户与登录名
    牛腩代码生成器
    ASP.NET MVC做的微信WEBAPP中调用微信JSSDK扫一扫
  • 原文地址:https://www.cnblogs.com/adamli/p/3225031.html
Copyright © 2011-2022 走看看