android:fadingEdgeLength | 设置淡入淡出边缘的长度,可以接受大小值的单位是:px、dp、sp、in、mm,也可以参考大小值资源 |
android:fitsSystemWindows | 是否适合系统窗体,取值为true或false。该属性只对不是子组件的组件有效 |
android:focusable | 是否可以获取焦点,取值true或false |
android:focusableInTouchMode | 是否可以在触摸模式下获取焦点,true或false |
android:hapticFeedbackEnabled | 是否允许触摸反馈效果,true或false |
android:id | 提供该组件的标识名,可以借助Activity或View实例的findViewById方法通过id获取对应的组件实例对象,其属性值的形式为:android:id=”@+id/id<id>” |
android:isScrollContainer | 设置该组件是否设置为滚动条容器,true或false |
android:keepScreenOn | 控制该组件在显示的时候保持在屏幕显示,true或false |
android:longClickable | 是否响应长时间点击事件,true或false |
android:minHeight | 组件的最小高度,取值同android:fadingEdgeLength |
android:minWidth | 组件的最小宽度,取值同android:fadingEdgeLength |
android:nextFocusDown | 设置下一个向下获取焦点的组件,取值为id |
android:nextFocusLeft | 设置下一个向左获取焦点的组件,取值为id |
android:nextFocusRight | 设置下一个向右获取焦点的组件,取值为id |
android:nextFocusUp | 设置下一个向上获取焦点的组件,取值为id |
android:padding | 设置上、下、左、右4个边缘的填充距离,必须是一个大小值,取值同android:fadingEdgeLength |
android:paddingBottom | 设置下端边缘的填充距离,取值同android:padding |
android:paddingLeft | 设置左端边缘的填充距离,取值同android:padding |
android:paddingRight | 设置右端边缘的填充距离,取值同android:padding |
android:paddingTop | 设置上端边缘的填充距离,取值同android:padding |
android:saveEnabled | 是否允许保存状态,取值为true或false |
android:scrollX | 设置垂直滚动条的位移量,必须是一个大小值,取值同android:padding |
android:scrollY | 设置水平滚动条的位移量,必须是一个大小值,取值同android:padding |
android:scrollbarAlwaysDrawHorizontalTrack | 是否总是设置水平滚动条滑块,true或false |
android:scrollbarAlwaysDrawVerticalTrack | 是否总是设置垂直滚动条滑块,true或false |
android:scrollbarSize | 设置垂直滚动条的宽度和水平滚动条的长度,必须是一个大小值,取值同android:padding |
android:scrollbarStyle | 设置滚动条的样式,取值为下列之一: insideOverlay在填充区域内,覆盖形式 insideInset在填充区域内,插进形式(凹进) outsideOverly在绑定组件边缘,覆盖形式 outsideInset在绑定组件边缘,插进形似 |
android:scrollbarThumbHorizontal | 设置水平滚动条按钮的绘制资源,必须引用可绘制资源 |
android:scrollbarThumbVertical | 设置垂直滚动条按钮的绘制资源,必须引用可绘制资源 |
android:scrollbarTrackHorizontal | 设置水平滚动条轨道的绘制资源,必须引用可绘制资源 |
android:scrollbarTrackVertical | 设置水平滚动条轨道的绘制资源,必须引用可绘制资源 |
android:scrollbars | 设置滚动显示,可以为一下一个或多个值: none不显示滚动条 horizontal只显示水平滚动条 vertical只显示垂直滚动条 |
android:soundEffectsEnabled | 是否允许音效,取值为true或false |
android:tag | 设置标记内容,可以通过View类实例的getTag方法获取该组件的标记内容,或者使用findViewByTag通过标记来查找相应的子组件 |
android:visibility | 设置初始化可见状态,取值为以下之一: visible可见(默认值) invisible不可见(其所占空间将留出) gone完全不可见(其所占空间都不会留出) |
线性布局LinearLayout组件属性列表
属性 | 说明 |
android:baselineAligned | 基线对齐 |
android:baselineAlignedChildIndex | 以指定子组件作为基线对齐 |
android:gravity | 指定该物体放入其容器的重心位置,取值为下列之一: top上方,物体大小不变 bottom下方,物体大小不变 left左方,物体大小不变 right右方,物体大小不变 center_vertical垂直方向的中间,物体大小不变 fill_vertical填满垂直方向,自动进行大小调整 center_horizontal水平方向的中间,大小不变 fill_horizontal填满水平方向,自动进行大小调整 center居中(既是水平也是垂直方向的中间) fill填满整个容器 clip_vertical clip_horizontal |
android:orientation | 布局方向,取值为下列之一: horizontal水平的 vertical垂直的(默认值) |
android:weightSum | 组件的比重和 |
线性布局参数LinearLayout_Layout
属性 | 说明 |
android:layout_gravity | 当前子组件的心位置 |
android:layout_height | 当前子组件的高度 |
android:layout_weight | 当前子组件的空间比重,取值为浮点数 |
android:layout_width | 当前子组件的宽度 |
相对布局RalativeLayout
属性 | 说明 |
android:gravity | 设置添加组件的重心 |
android:ignoreGravity | 忽略布局重心的影响 |
相对布局参数RalativeLayout_Layout
属性 | 说明 |
android:layout_above | 将当前组件的下边缘放置于参照组件之上,该属性为参照组件的ID |
android:layout_alignBaseline | 当前组件与参照组件的基线对齐,该属性为参照组件的ID |
android:layout_alignBottom | 当前组件与参照组件的下边界对齐,该属性为参照组件的ID |
android:layout_alignLeft | 当前组件与参照组件的左边界对齐,该属性为参照组件的ID |
android:layout_alignParenBottom | 当前组件与父组件的下边界对齐,true或false |
android:layout_alignParentLeft | 当前组件与父组件的左边界对齐,true或false |
android:layout_alignParentRight | 当前组件与父组件的右边界对齐,true或false |
android:layout_alignParentTop | 当前组件与父组件的上边界对齐,true或false |
android:layout_alignRight | 当前组件与参照组件的右边界对齐,该属性为参照组件的ID |
android:layout_alignTop | 当前组件与参照组件的上边界对齐,该属性为参照组件的ID |
android:layout_alignWithParentIfMissing | true或false |
android:layout_below | 将当前组件的上边缘放置于参照组件之下,该属性为参照组件的ID |
android:layout_centerHorizontal | 当前组件放置到父组件的水平居中的位置 |
android:layout_centerInParent | 当前组件放置到父组件的重心位置 |
android:layout_centerVertical | 当前组件放置到父组件垂直居中的位置 |
android:layout_toLeftOf | 将当前组件的右边缘放置于参照组件之下,该属性为参照组件的ID |
android:layout_toRightOf | 将当前组件的左边缘放置于参照组件之下,该属性为参照组件的ID |
绝对布局参数AbsoluteLayout_Layout
属性 | 说明 |
android:layout_x | 当前组件的x坐标位置(从左到右方向) |
android:layout_y | 当前组件的y坐标位置(从上到下方向) |
框布局FrameLayout
属性 | 说明 |
android:foreground | 前置图片 |
android:foregroundGravity | 前置图片重心 |
android:measureAllChildren | 在切换显示时是否侧重所有子组件的大小 |
android:layout_gravity | 添加组件的重心 |
框布局参数FrameLayout_Layout
属性 | 说明 |
android:layout_gravity | 当前子组件所添加的重心位置 |
表格布局TableLayout
属性 | 说明 |
android:collapseColumns | 设置允许折叠的列编号,列编号基于0,属性值可以是单个或多个列编号,编号与编号直接用逗号”,”分隔 |
android:shrinkColumns | 设置允许收缩的列编号,列编号基于0,属性值可以是单个或多个列编号,编号与编号直接用逗号”,”分隔 |
android:stretchColumns | 设置允许伸展的列编号,列编号基于0,属性值可以是单个或多个列编号,编号与编号直接用逗号”,”分隔 |
表格行的单元TableRow_Cell
属性 | 说明 |
android:layout_column | 设置该单元格的列编号(基于0) |
android:layout_span | 指明该单元格可以跨越的列数 |
抽象列表视图组件AbsListView
属性 | 说明 |
android:cacheColorHint | 设置缓冲颜色 |
android:drawSelectorOnTop | 是否将选择器绘制在备选条目上方,取值为true或false |
android:fastScrollEnabled | 允许快速滚动 |
android:listSelector | 指示选择器的内容 |
android:scrollingCache | 滚动时是否使用绘制缓冲,true或false |
android:smoothScrollbar | 平滑滚动条 |
android:stackFromBottom | 从下方堆叠条目 |
android:textFilterEnbled | 是否允许过滤 |
android:transcriptMode | 设置抄本模式 |
列表视图组件ListView
属性 | 说明 |
android:choiceMode | 选择模式 |
android:divider | 分割线颜色或组件的参考 |
android:dividerHeight | 分割线高度 |
android:entries | 指定绑定到当前列表视图的一个数组资源 |
android:footerDividersEnabled | 是否允许页脚分割线 |
android:headerDividersEnabled | 是否允许页眉分割线 |
格子视图组件GridView
属性 | 说明 |
android:columnWidth | 指定列宽 |
android:gravity | 添加组件的重心位置 |
android:horizontalSpacing | 水平空间 |
android:numColumns | 指定列数 |
android:strechMode | 伸展模式 |
android:verticalSpacing | 垂直空间 |
画廊视图组件Gallery
属性 | 说明 |
android:animationDuration | 动画持续时间 |
android:gravity | 添加组件的重心位置 |
android:spacing | 间隔空间 |
android:unselectedAlpha | 非选择条目的透明度 |
文本组件TextView
属性 | 说明 |
android:autoLink | 是否自动链接(内容是网址或是电子邮件时) |
android:autoText | 自动更新拼音错误 |
android:bufferType | 设置缓冲区类型 |
android:capitalize | 自动大写 |
android:cursorVisible | 光标是否可见,true或false |
android:digits | 所接受的数字字符 |
android:drawableBottom | 在文本下方绘制 |
android:drawableLeft | 在文本左方绘制 |
android: drawablePadding | 绘制填充区 |
android: drawableRight | 在文本右方绘制 |
android: drawableTop | 在文本上方绘制 |
android:editable | 是否可编辑,true或false |
android:editorExtras |
|
android:ellipsize | 当内容过长时会自动打断单词内容 |
android:ems |
|
android:enabled | 是否可用,true或false |
android:freezesText | 是否冻结文本 |
android:gravity | 指明文本的重心位置 |
android:height | 高度值 |
android:hint | 指示内容 |
android:imeActionId |
|
android:imeActionLabel |
|
android:imeOptions | 输入法选项 |
android:includeFontPadding |
|
android:inputMethod | 指定输入法 |
android:inputType | 输入类型,取值为下列之一: none text普通文本 textCapCharacters大写字符 textCapWords单词首字母大写 textCapSentences句子首字母大写 textAutoCorret自动更正 textAutoComplete自动完成 textMultiLine多行内容 textUri,Uri textEmailAddress电子邮件地址 textEmailSubject电子邮件主题 textShortMessage短消息 textLongMessage长消息 textPersonName个人姓名 textPostalAddress邮政地址 textPassword密码 textVIsiblePassword可见的密码 textWebEditText网页格式 textFilter过滤字符串 textPhonetic语言发音 number数字 numberSigned有符号数字 numberDecimal十进制数字 phone电话号码 datetime日期时间 date日期 time时间 |
android:lineSpacingExtra |
|
android:lineSpacingMultiplier |
|
android:lines | 设置文本行数 |
android:linksClickable |
|
android:marqueeRepeatLimit | 来回移动的动画次数 |
android:maxEms |
|
android:maxHeight | 物体的最大高度 |
android:maxLength | 最大文本长度 |
android:maxLines | 最大行数 |
android:minWidth | 物体的最大宽度 |
android:minEms |
|
android:minHeight | 物体的最小高度 |
android:minLines | 最小文本行数 |
android:minWidth | 物体的最小宽度 |
android:numeric | 是否使用数字输入方式 |
android:password | 是否使用密码输入方式 |
android:phonenumber | 是否使用电话号码输入方式 |
android:privateImeOptions |
|
android:scrollHorizontally |
|
android:selectAllOnFocus |
|
android:shadowColor | 文本阴影颜色 |
android:shadowDx | 阴影的水平偏移 |
android:shadowDy | 阴影的垂直偏移 |
android:shadowRadius | 阴影的半径 |
android:singleLine | 是否单行(不自动换行) |
android:text | 显示的文本内容 |
android:textApperance | 基本字体颜色、字样、大小和样式 |
android:textColor | 文本颜色 |
android: textColorHighlight | 文本高亮颜色 |
android: textColorHint | 文本提示颜色 |
android:textColorLink | 文本链接颜色 |
android:textScaleX | 文本缩放因数 |
android:textSize | 文本大小 |
android:textStyle | 文本样式,取值为下列之一: bold粗体 italic斜体 bolditalic粗斜体 |
android:typeface | 字样 |
android:width | 物体的高度 |
自动完成文本框AutoCompleteTextView
属性 | 说明 |
android:completionHint | 显示提示 |
android:completionHintView | 提示视图 |
android:completionThreshold | 设置开始提示的字符数 |
android:dropDownAnchor | 下拉框链接视图 |
android:dropDownSelector | 下拉框选择器 |
android:dropDownWIdth | 下拉框宽度 |
图片视图ImageView
属性 | 说明 |
android:adjustViewBounds | 是否调整视图范围 |
android:baselineAlignBottom | 是否按照下端基线对齐 |
android:cropToPadding | 是否按照填充进行裁剪 |
android:maxHeight | 设置最大高度 |
android:maxWidth | 设置最大宽度 |
android:scaleType | 缩放类型,取值为下列之一: matrix图片真实大小 fitXY适合图片大小 fitStart fitCenter fitEnd center居中显示 centerCrop centerInside |
android:src | 设置绘制用内容 |
android:tint | 设置染色颜色值 |
应用程序使用许可Uses-permissions
许可标识 | 说明 |
ACCESS_CHECKIN_PROPERTIES |
|
ACCESS_COARSE_LOCATION |
|
ACCESS_FINE_LOCATION |
|
ACCESS_LOCATION_EXTRA_COMMANDS |
|
ACCESS_MOCK_LICATION |
|
ACCESS_NETWORK_STATE |
|
ACCESS_SURFACE_FLINGER |
|
ACCESS_WIFI_STATE |
|
ADD_SYSTEM_SERVICE |
|
ACCOUNT_MANAGER |
|
|
Android读写XML(上)——package说明 收藏
注明:本文转自http://www.moandroid.com.
XML 经常用作 Internet 上的一种数据格式,其文件格式想必大家都比较清楚,在这里我结合Android平台,来说明Android SDK提供的读写XML的package。
首先介绍下Android SDK与Java SDK在读写XML文件方面,数据包之间的关系。Android 平台最大的一个优势在于它利用了 Java 编程语言。Android SDK 并未向标准 Java Runtime Environment (JRE) 提供一切可用功能,但它支持其中很大一部分功能。Java 平台支持通过许多不同的方式来使用 XML,并且大多数与 XML 相关的 Java API 在 Android 上得到了完全支持。举例来说,Java 的 Simple API for XML (SAX) 和 Document Object Model (DOM) 在 Android 上都是可用的,这些 API 多年以来一直都是 Java 技术的一部分,较新的 Streaming API for XML (StAX) 在 Android 中并不可用。但是, Android 提供了一个功能相当的库。最后,Java XML Binding API 在 Android 中也不可用,这个 API 已确定可以在 Android 中实现。Android SDK提供了如下package来支持XML的读写:
包 | 功能介绍 |
根据 XML 规范定义核心 XML 常量和功能。 | |
提供DOM和SAX方法解析XML文档 | |
W3C提供的使用DOM方法读取XML | |
提供核心SAX APIs | |
|
额外补充说明下,在android.util 数 据包中也提供了一个类Xml,不过这个类就是把以上package简单封装了下。
读取XML主要有2种方法:DOM与SAX(Simple API for XML),在这里对这2种方法分别加以说明。
DOM(文档对象模型),为XML文档的解析定义了一组接口,解析器读入整个文档,然后构造一个驻留内存的树结构,然后代码就可以使用DOM接口来 操组整个树结构,其他点如下:
· 优点:整个文档树都在内存当中,便于操作;支持删除、修改、重新排列等多功能。
· 缺点:将整个文档调入内存(经常包含大量无用的节点),浪费时间和空间。
· 使用场合:一旦解析了文档还需要多次访问这些数据,而且资源比较充足(如内存、CPU等)。
为了解决DOM解析XML引起的这些问题,出现了SAX。SAX解析XML文档为事件驱动,详细说明请阅读Android读写XML(中)–SAX 。当解析器发现元素开始、元素结束,文本、文档的开始或者结束时,发送 事件,在程序中编写响应这些事件的代码,其特点如下:
· 优点:不用事先调入整个文档,占用资源少。尤其在嵌入式环境中,极力推荐采用SAX进行解析XML文档。
· 缺点:不像DOM一样将文档长期驻留在内存,数据不是持久的,事件过后,如没有保存数据,那么数据就会丢失。
· 使用场合:机器性能有限,尤其是在嵌入式环境,如Android,极力推荐采用SAX进行解析XML文档。
大多数时间,使用 SAX 是比较安全的,并且 Android 提供了一种传统的 SAX 使用方法,以及一个便捷的 SAX 包装器。如果XML文档比较小,那么 DOM 可能是一种比较简单的方法。如果XML文档比较大,但只需要文档的一部分,则 XML Pull 解析器可能是更为有效的方法。最后对于编写 XML,Pull 解析器包也提供了一种便捷的方法,详细说明请阅读Android读写XML(下)——数据写入XML文档 。因此,无论我们的 XML 需求如何,Android 都能在一定程度上满足我们的需求。
下面我们详细介绍采用DOM的方法,读取XML文档的思路,这基本上与XML的结构是完全一样的。首先加载XML文档(Document),然后获 取文档的根结点(Element),然后获取根结点中所有子节点的列表(NodeList),然后使用再获取子节点列表中的需要读取的结点。根据以上思 路,简要写个读取XML文件的例子如下:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import android.content.Context;
void ReadXML()
{
DocumentBuilderFactory docBuilderFactory = null;
DocumentBuilder docBuilder = null;
Document doc = null;
try {
docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilder = docBuilderFactory.newDocumentBuilder();
//xml file 放到 assets目录中的
doc = docBuilder.parse(context.getResources().getAssets().open(”weather.xml”));
//root element
Element root = doc.getDocumentElement();
//Do something here
//get a NodeList by tagname
NodeList nodeList = root.getElementsByTagName(”tag”);
for(int i =0;i< nodeList.getLength();i++)
{
Node nd = nodeList.item(i);
//Read Node
}
} catch (IOException e) {
} catch (SAXException e) {
} catch (ParserConfigurationException e) {
} finally {
doc = null;
docBuilder = null;
docBuilderFactory = null;
}
}
以上代码比较简单,就不在此详细解析了。
采用DOM读取XML文件,需要加载整个XML文件,在XML文件比较大的情况下,会导致Android设备内存紧张,为了避免这个问题,也可以采 用SAX的方法读取XML文件,不过SAX对结点的排序、增加结点等方面的操作相比DOM就有些复杂了。根据XML文件大小、数据处理的需求,选择合适的 读取的方法。
对于XML的写入,一方面可以采用前面介绍的这些package;另外一方面也可以按照XML的标准,将数据以字符串的形式直接写入文件,这也是种 很不错的方法。在这里推荐IBM开源社区中一篇比较好的文章 Android 上使用 XML ,有兴趣的可以去深入学习下。
总结说明
XML作为一种简单的文件格式,作为网络上数据交换的基础,而且得到了大部分数据库的支持(直接将XML文件插入数据库),XML文件的读写只是基 础,相信在以后的网络、数据库的开发中会经常使用。
Android读写XML(中)——SAX 收藏
在Android读写XML(上)—— package说明 中,详细介绍了使用 DOM方法读取XML文档,由于使用DOM方法需要将整个XML文档加载内存中,对系统资源占用比较多,这对内存比较紧张的Android系统来说,使用 DOM方法读取XML文档会有很大的限制。 使用SAX方法读取XML,对内存资源的占用的比较少,因此在嵌入式设备中极力推荐使用,Android也不例外,本篇幅详细说明Android中如何使 用SAX读取XML文档。
SAX采用基于事件驱动的处理方式,它将XML文档转换成一系列的事件,由单独的事件处理器来决定如何处理。为了了解如何使用SAX API处理XML文档,这里介绍一下SAX所使用的基于事件驱动的处理模式。
基于事件驱动的处理模式
基于事件的处理模式主要围绕着事件源 以及事件处理器 来工作的。一个可以产生 事件的对象被称为事件源 ,而可以对事件产生响应的对象就被叫做事件处理器 。事件源 与事件处理对象是通过在事件源中的事件注册方法连接的。当事件源产生时间后,调用事件处理器相应的方法,一个事件获得处理。当在事件源调用事件处理器中特 定方法的时候,会传递个事件标志以及其响应事件的状态信息,这样事件处理器才能够根据事件信息来决定自己的行为。
在SAX接口中,事件源是org.xml.sax包中的XMLReader,它通过parser()方法来开始解析XML文档,并根据文档的内容产 生事件。而事件处理器则是org.xml.sax包中的ContentHander、DTDHander、ErrorHandler,以及 EntityResolver这4个接口,它们分别处理事件源在解析XML文档过程中产生的不同种类的事件。而事件源XMLReader与这4个事件处理 器的连接是通过在XMLReader中的相应事件处理器注册方法setXXXX()来完成的,详细介绍请见下表:
以上的4个事件源处理器接口,在开发中没有必要直接从这4个接口直接继承,因为org.xml.sax.helper包为我们提供了类 DefaultHandler,其继承了这4个个接口,在实际开发中直接从DefaultHandler继承并实现相关函数就可以了。在这4个接口中,最 重要的是ContentHanlder接口,下面就其中的方法加以说明,如下:
以上就是解析一个XML文档,事件处理的过程。这里我们对org.xml.sax.XMLReader中的方法做下补充说明:除了前面介绍的一系列 事件处理器注册方法set/getXXXX()外,还有个重要的函数:parse(InputSource input)–Parse an XML document,开始解析一个XML文档。
按照应用程序开发的流程,简要介绍下SAX的使用方法
1. 首先,编写了解XML文档的结构,按照XML文档的结构,编写具体的数据结构,类似于:XXXXList,XXXXItem,最好与XML的文档保持一 致。
2. 其次,开始实现事件处理对象,Android SDK为我们提供了DefaultHandler,其继承了ContentHandler 、DTDHandler、 EntityResolver、 ErrorHandler的所有接口。我们在DefaultHandler的基础上,按照需求实现ContentHanlder的所有接口,这里需要注意 2个方面的问题:
1. 事件处理的顺序,处理时间的位置:一般在startDocument()初始化工作,在endDocument()中收尾的处理工 作;startElement()—characters()—endDocument()是一个XML节点读取的过程,startElement()用 来初始判断,characters()获取节点的字符数据,endDocument()将数据写入数据结构。
2. 异常SAXException的处理;
3. 然后,XML实体解析,过程如下:
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
XMLReader xmlreader = parser.getXMLReader();
URL rrl = new URL(urlstring);
InputSource is = new InputSource(url.openStream());
Xmlreader.setContentHanlder(XXXX);
Xmlreader.parse(is);
4. 最后,在Activity中显示数据,一般先将XML中读取的数据,选择合适的Adaper对数据进行封装,然后使用ListView控件来显示 数据。
以上就是SAX读取XML的过程,并显示出最终的数据。以上需要注意的是SAXParserFactory ,SAXParser类来自 javax.xml.parsers包中。
总结说明
SAX读取XML文档的方法,占用内存比较少,但是开发流程相比DOM就复杂多了,具体采用哪种方法比较合适,大家可以在开发的过程中来深刻体会之 间的差别。
Android读写XML(下)——创建XML文档 收藏
在前面的2篇文章Android读写XML(上)—— package说明 、Android读写XML(中)—— SAX 中想必大家对XML文件读取的方法已经比较熟悉了,在这里我们就不多说了,直接说明如何将信息写成XML文件,首先介绍Andoid SDK中的相关类。
类 | 说明 |
XmlSerializer | Define an interface to serialziation of XML Infoset.定义一个接口来实现XML信息的串行化。 |
什么是串行化?
对象的串型化,也有叫做对象的序列话,并不只是简单的把对象保存在存储器上,它可以使我们在流中传输对象,使对象变的可以像基本数据一样传递。
下面,我们就直接来看个具体的例子来说明,如何使用XmlSerializer。
private String writeXml(){
XmlSerializer serializer = Xml.newSerializer();
StringWriter writer = new StringWriter();
try{
serializer.setOutput(writer);
// <?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
serializer.startDocument(”UTF-8″,true);
// <blog number=”1″>
serializer.startTag(”",”blog”);
serializer.attribute(”",”number”,String.valueOf(1));
//<message data=”2009-09-23″>
serializer.startTag(”",”message”);
serializer.attribute(”",”date”,”2009-09-23″);
// <title>Android XML</title>
serializer.startTag(”",”title”);
serializer.text(”Android XML”);
serializer.endTag(”",”title”);
// <url>http://www.moandroid.com/?p=508 </url>
serializer.startTag(”",”url”);
serializer.text(”http://www.moandroid.com/?p=508″);
serializer.endTag(”",”url”);
//</message>
serializer.endTag(”",”message”);
// </blog>
serializer.endTag(”",”blog”);
serializer.endDocument();
return writer.toString();
}
catch(Exception e)
{
throw new RuntimeException(e);
}
}
我们先将writeXml()产生的字符串输出 ,看是否是按照我们设计的那样,使用Log.v(“XML”, writeXml())输出调试信息。运行程序,在DDMS中查看程序输出的调试信息,如何查看调试信息请阅读Android DDMS如何使用?
输出的字符串如下:
<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
<blog number=”1″>
<message data=”2009-09-23″>
<title>Android XML</title>
<url>http://www.moandroid.com/?p=508</url>
</message>
</blog>
看了运行的结果,对于上面代码的功能,估计大家就明白了,不再这里详细解析。
下面,进一步将字符串写入文件 ,代码如下:
public boolean Write(String path,String txt)
{
try
{
OutputStream os = openFileOutput(path,MODE_PRIVATE);
OutputStreamWriter osw=new OutputStreamWriter(os);
osw.write(txt);
osw.close();
os.close();
}
catch(FileNotFoundException e)
{
return false;
}
catch(IOException e)
{
return false;
}
return true;
}
}
在onCreate()中增加如下代码:Write(”blog.xml”,writeXml())。运行程序,打开DDMS查看写入的XML文 档,文件存放在data/data/{package}/files文件夹下,如下:
还可以将这个文件从File Explorer中导出到电脑中查看XML文档的具体内容,与输出的字符串完全一样。
总结说明
XML文件的写入就完成了,想必大家对串行化也有应该有一些了解,具体的需要引用那些package请大家到Android SDK去仔细查看吧。
=======================
百度文库到的。