Camera学习笔记一:camera_preferences.xml分析

原生的Camera的设置里面有很多的选项,那么首先来看一下这些选项的布局文件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" />

上面的代码属性PreferencesGroup、IconListPreferences属于自定义属性强调一下,IconListPreferences每个属性的前面的关键字“camrea”是根据代码第二行的xmlns:camera来的。平时我们用的属性前面关键字都是“android”,你会发现xmlns后面就是就是“android”。

这些自定义属性是在文件夹 res/values/attrs.xml文件里定义的,代码如下:

<resources>
    <declare-styleable name="CameraPreference">
        <attr name="title" format="string" />
    </declare-styleable>
    <declare-styleable name="ListPreference">
        <attr name="key" format="string" />
        <attr name="defaultValue" format="string|reference" />
        <attr name="entryValues" format="reference" />
        <attr name="entries" format="reference" />
    </declare-styleable>
    <declare-styleable name="IconIndicator">
        <attr name="icons" format="reference" />
        <attr name="modes" format="reference" />
    </declare-styleable>
    <declare-styleable name="IconListPreference">
        <!-- If a preference does not have individual icons for each entry,it can has a single icon to represent it. -->
        <attr name="singleIcon" format="reference" />
        <attr name="icons" />
        <attr name="largeIcons" format="reference" />
        <attr name="images" format="reference" />
    </declare-styleable>
    <declare-styleable name="MaxLinearLayout">
        <attr name="maxHeight" format="dimension" />
        <attr name="maxWidth" format="dimension" />
    </declare-styleable>
</resources>

比如CameraPreference它有一个属性(name)title,该属性的格式(format)是string型。那么我们是怎么通过Java代码获取这些xml的值得呢?还是以CamerePreferences为例,在CameraPreference.xml中的构造函数有一段代码如下:

public CameraPreference(Context context,AttributeSet attrs) {
        mContext = context;
        TypedArray a = context.obtainStyledAttributes(
                attrs,R.styleable.CameraPreference,0);
        mTitle = a.getString(R.styleable.CameraPreference_title);
        a.recycle();
    }

上面的几步即可完成对自定义属性的使用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇