<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>广州萌芽工作室博客</title>
	<atom:link href="http://www.gzseed.net/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.gzseed.net</link>
	<description>Guangzhou Seed Studio&#039;s Team Blog</description>
	<lastBuildDate>Wed, 05 May 2010 01:04:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>关于工作室</title>
		<link>http://www.gzseed.net/?p=116</link>
		<comments>http://www.gzseed.net/?p=116#comments</comments>
		<pubDate>Sat, 07 Nov 2009 05:58:22 +0000</pubDate>
		<dc:creator>管理员</dc:creator>
				<category><![CDATA[关于团队]]></category>
		<category><![CDATA[B2B]]></category>
		<category><![CDATA[B2C]]></category>
		<category><![CDATA[GZSEED]]></category>
		<category><![CDATA[MYSQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SEED STUDIO]]></category>
		<category><![CDATA[商城系统]]></category>
		<category><![CDATA[广州]]></category>
		<category><![CDATA[文档管理]]></category>
		<category><![CDATA[网址设计]]></category>
		<category><![CDATA[网站建设]]></category>
		<category><![CDATA[萌芽工作室]]></category>
		<category><![CDATA[行业网站]]></category>

		<guid isPermaLink="false">http://www.gzseed.net/?p=116</guid>
		<description><![CDATA[广州萌芽工作室(Guangzhou Seed Studio)是一个专注于广州以及珠江三角洲PHP+MYSQL系统外包开发的专业团队，专业于广州PHP开发、广州网站建设、广州PHP培训、广州PHP外包、广州OA定制。
工作室业务：网站设计、程序优化、网站建设、网站设计、项目外包、服务外包、网站优化、办公系统、系统安全。
我们专注定制PHP+MYSQL高负载网络商城系统、行业门户网站、分类信息系统、B2B系统、B2C系统、企业文档管理系统、百科系统、企业门户网站………
电话：020-85524025
 手机：13480261415
 EMAIL：biaoest@gmail.com
 OICQ ：190885451
 MSN：biaoest@hotmail.com
地址：广州天河工业园华翠街100之一10号车库
网址：http://www.gzseed.com
工作室办公室，虽然只是一个车库，但是环境还不错。

]]></description>
			<content:encoded><![CDATA[<div class="announcement_post"><p>广州萌芽工作室(Guangzhou Seed Studio)是一个专注于广州以及珠江三角洲PHP+MYSQL系统外包开发的专业团队，专业于广州PHP开发、广州网站建设、广州PHP培训、广州PHP外包、广州OA定制。</p>
<p>工作室业务：网站设计、程序优化、网站建设、网站设计、项目外包、服务外包、网站优化、办公系统、系统安全。</p>
<p>我们专注定制PHP+MYSQL高负载网络商城系统、行业门户网站、分类信息系统、B2B系统、B2C系统、企业文档管理系统、百科系统、企业门户网站………</p>
<p>电话：020-85524025</p>
<p> 手机：13480261415</p>
<p> EMAIL：<a href="mailto:biaoest@gmail.com">biaoest@gmail.com</a></p>
<p> OICQ ：190885451</p>
<p> MSN：<a href="mailto:biaoest@hotmail.com">biaoest@hotmail.com</a></p>
<p>地址：广州天河工业园华翠街100之一10号车库</p>
<p>网址：<a href="http://www.gzseed.com/">http://www.gzseed.com</a></p>
<p>工作室办公室，虽然只是一个车库，但是环境还不错。</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.gzseed.net/?feed=rss2&amp;p=116</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[成功案例]幻想曲通讯VGOOO.COM</title>
		<link>http://www.gzseed.net/?p=15</link>
		<comments>http://www.gzseed.net/?p=15#comments</comments>
		<pubDate>Tue, 13 Oct 2009 02:23:33 +0000</pubDate>
		<dc:creator>biaoest</dc:creator>
				<category><![CDATA[成功案例]]></category>
		<category><![CDATA[VGOOO]]></category>
		<category><![CDATA[幻想曲]]></category>
		<category><![CDATA[幻想曲通讯]]></category>

		<guid isPermaLink="false">http://www.gzseed.net/?p=15</guid>
		<description><![CDATA[幻想曲通讯，广州最大的专业手机导航网站。
幻想曲通讯提供最新手机报价、手机大全，以及最新最热门产品的手机靓图，手机模特，和手机视频，手机论坛！
网站地址：http://www.vgooo.com


]]></description>
			<content:encoded><![CDATA[<div class="announcement_post"><p>幻想曲通讯，广州最大的专业手机导航网站。</p>
<p>幻想曲通讯提供最新手机报价、手机大全，以及最新最热门产品的手机靓图，手机模特，和手机视频，手机论坛！</p>
<p>网站地址：<a href="http://www.vgooo.com">http://www.vgooo.com</a></p>
<p><img class="alignnone size-large wp-image-16" src="http://www.gzseed.net/wp-content/uploads/2009/10/vgooo_index-567x1024.png" alt="vgooo_index" width="567" height="1024" /></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.gzseed.net/?feed=rss2&amp;p=15</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[成功案例]青岛万色品尚VANCELLE.NET</title>
		<link>http://www.gzseed.net/?p=157</link>
		<comments>http://www.gzseed.net/?p=157#comments</comments>
		<pubDate>Fri, 30 Apr 2010 04:58:49 +0000</pubDate>
		<dc:creator>biaoest</dc:creator>
				<category><![CDATA[成功案例]]></category>
		<category><![CDATA[VANCELLE]]></category>
		<category><![CDATA[万色品尚]]></category>

		<guid isPermaLink="false">http://www.gzseed.net/?p=157</guid>
		<description><![CDATA[万色品尚 – 享受个性,时尚,快乐网购新生活!时尚女包, 家居鞋,精品配饰,礼品,家纺用品,家居女装等购物商城
网站地址：http://www.vancelle.net



]]></description>
			<content:encoded><![CDATA[<div class="sticky_post"><p>万色品尚 – 享受个性,时尚,快乐网购新生活!时尚女包, 家居鞋,精品配饰,礼品,家纺用品,家居女装等购物商城<br />
网站地址：<a href="http://www.vancelle.net">http://www.vancelle.net</a></p>
<p><img class="alignnone size-full wp-image-155" title="vancelle" src="http://www.gzseed.net/wp-content/uploads/2010/04/vancelle.png" alt="vancelle" width="567" height="946" /></p>
<p><img class="alignnone size-full wp-image-156" title="vancelle_sub" src="http://www.gzseed.net/wp-content/uploads/2010/04/vancelle_sub.png" alt="vancelle_sub" width="567" height="1543" /></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.gzseed.net/?feed=rss2&amp;p=157</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[成功案例]唯色通讯520UP.COM.CN</title>
		<link>http://www.gzseed.net/?p=149</link>
		<comments>http://www.gzseed.net/?p=149#comments</comments>
		<pubDate>Fri, 30 Apr 2010 04:18:34 +0000</pubDate>
		<dc:creator>biaoest</dc:creator>
				<category><![CDATA[成功案例]]></category>
		<category><![CDATA[520UP]]></category>
		<category><![CDATA[唯色通讯]]></category>

		<guid isPermaLink="false">http://www.gzseed.net/?p=149</guid>
		<description><![CDATA[唯色通讯—专业服务 为你做到
网站地址：http://www.520up.com.cn



]]></description>
			<content:encoded><![CDATA[<div class="sticky_post"><p>唯色通讯—专业服务 为你做到</p>
<p>网站地址：<a href="http://www.vgooo.com/">http://www.520up.com.cn</a></p>
<p><img class="alignnone size-full wp-image-152" title="520up" src="http://www.gzseed.net/wp-content/uploads/2010/04/520up.png" alt="520up" width="567" height="1508" /></p>
<p><img class="alignnone size-full wp-image-153" title="520up_news" src="http://www.gzseed.net/wp-content/uploads/2010/04/520up_news.png" alt="520up_news" width="567" height="1257" /></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.gzseed.net/?feed=rss2&amp;p=149</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>extjs 最好理解类和控件的监听触发和拦截，小实例一只</title>
		<link>http://www.gzseed.net/?p=144</link>
		<comments>http://www.gzseed.net/?p=144#comments</comments>
		<pubDate>Fri, 26 Mar 2010 11:07:00 +0000</pubDate>
		<dc:creator>crosstime</dc:creator>
				<category><![CDATA[PHP+MYSQL]]></category>

		<guid isPermaLink="false">http://www.gzseed.net/?p=144</guid>
		<description><![CDATA[Person = function(name){
 this.name = name;
 this.addEvents(&#8217;walk&#8217;, &#8216;eat&#8217;, &#8217;sleep&#8217;);
}
Ext.extend(Person, Ext.util.Observable, {
 info: function(event){
  return this.name + &#8220;is&#8221; + event + &#8216;ing&#8217;;
 }
});
var person = new Person(&#8217;Ziv&#8217;);
person.on(&#8217;walk&#8217;, function(){
 Ext.Msg.alert(&#8217;event&#8217;, this.name + &#8216;在走啊走啊&#8217;);
});
person.on(&#8217;eat&#8217;, function(){
 Ext.Msg.alert(&#8217;event&#8217;, this.name + &#8216;在吃东西呢&#8217;);
});
//&#8212;&#8212;&#8212;&#8212;&#8211; 第二章 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
Ext.onReady(function(){
 Ext.get(&#8217;test&#8217;).on({
 &#8217;click&#8217;: {
  fn:  fn
 },
 &#8217;mouseover&#8217;:{
  fn:  fn,
  delay: 100,
  single: true
 }
 });
 
 Ext.get(&#8217;link1&#8242;).on(&#8217;click&#8217;, function(){
  Ext.util.Observable.capture(person, function(){
   alert(&#8217;capture1&#8242;);
   return false;
  });
 });
 
 Ext.get(&#8217;link2&#8242;).on(&#8217;click&#8217;, function(){
  Ext.util.Observable.releaseCapture(person);
 });
});
var fn = function(e, el, args){
 person.fireEvent(&#8217;walk&#8217;);
}
 
//继承Observable  目的， 在于实现一个支持事件的对象。Observable 位于Ext组件的最顶端，为组件的事件处理提供最基础功能
]]></description>
			<content:encoded><![CDATA[<p>Person = function(name){<br />
 this.name = name;<br />
 this.addEvents(&#8217;walk&#8217;, &#8216;eat&#8217;, &#8217;sleep&#8217;);<br />
}<br />
Ext.extend(Person, Ext.util.Observable, {<br />
 info: function(event){<br />
  return this.name + &#8220;is&#8221; + event + &#8216;ing&#8217;;<br />
 }<br />
});</p>
<p>var person = new Person(&#8217;Ziv&#8217;);<br />
person.on(&#8217;walk&#8217;, function(){<br />
 Ext.Msg.alert(&#8217;event&#8217;, this.name + &#8216;在走啊走啊&#8217;);<br />
});<br />
person.on(&#8217;eat&#8217;, function(){<br />
 Ext.Msg.alert(&#8217;event&#8217;, this.name + &#8216;在吃东西呢&#8217;);<br />
});</p>
<p>//&#8212;&#8212;&#8212;&#8212;&#8211; 第二章 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Ext.onReady(function(){<br />
 Ext.get(&#8217;test&#8217;).on({<br />
 &#8217;click&#8217;: {<br />
  fn:  fn<br />
 },<br />
 &#8217;mouseover&#8217;:{<br />
  fn:  fn,<br />
  delay: 100,<br />
  single: true<br />
 }<br />
 });<br />
 <br />
 Ext.get(&#8217;link1&#8242;).on(&#8217;click&#8217;, function(){<br />
  Ext.util.Observable.capture(person, function(){<br />
   alert(&#8217;capture1&#8242;);<br />
   return false;<br />
  });<br />
 });<br />
 <br />
 Ext.get(&#8217;link2&#8242;).on(&#8217;click&#8217;, function(){<br />
  Ext.util.Observable.releaseCapture(person);<br />
 });<br />
});</p>
<p>var fn = function(e, el, args){<br />
 person.fireEvent(&#8217;walk&#8217;);<br />
}</p>
<p> </p>
<p>//继承Observable  目的， 在于实现一个支持事件的对象。Observable 位于Ext组件的最顶端，为组件的事件处理提供最基础功能</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gzseed.net/?feed=rss2&amp;p=144</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决ie6png格式bug</title>
		<link>http://www.gzseed.net/?p=136</link>
		<comments>http://www.gzseed.net/?p=136#comments</comments>
		<pubDate>Sun, 29 Nov 2009 12:53:01 +0000</pubDate>
		<dc:creator>hongsite</dc:creator>
				<category><![CDATA[DIV+CSS]]></category>

		<guid isPermaLink="false">http://www.gzseed.net/?p=136</guid>
		<description><![CDATA[    PNG(Portable Network Graphics)格式图片可以表现更为绚丽多彩的颜色，常见的一些具有矢量效果的图片、图标都采用png格式，但是具有透明背景的png格式图片在IE6中却不是背景透明的，透明背景部分会显示出#DBEAED的淡灰色，表现效果很糟糕，为了使用透明背景图片只有采用gif格式了，但是gif格式会出现明显的锯齿效果，所以只有设法修复IE6的这个问题。解决的办法就是使用IE的Microsoft.AlphaImageLoader滤镜。
    如果希望使用png格式图片作为DOM元素的背景，那么就可以使用滤镜来加载png图片：
    css代码：.png{background: url(images/angel.png) no-repeat !important;_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#8221;images/angel.png&#8221;);background:none;　　width:100px;height:100px;}
    HTML代码：&#60;div class=&#8221;png&#8221;&#62;背景PNG透明&#60;/div&#62;

    如果png格式的图片不是用来做元素背景，而是直接引入的img图像，那么此时可以把此img标签的src属性替换为一张空的透明gif图像，然后再把png图片加载为元素的背景就可以了。首先要准备一张空白透明的gif图片，一般命名为blank.gif(可自己另起名字)，然后就可以替换png图像了。但是手工替换不太现实，最好一段代码就解决问题：
    css代码：
    .mypng img {
      azimuth: expression(
         this.pngSet?this.pngSet=true:
       (this.nodeName == &#8220;IMG&#8221; &#38;&#38;  this.src.toLowerCase().indexOf(&#8217;.png&#8217;)&#62;-1?
      (this.runtimeStyle.backgroundImage = &#8220;none&#8221;,
      this.runtimeStyle.filter = &#8220;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#8217;&#8221; + this.src + &#8220;&#8216;,sizingMethod=&#8217;image&#8217;)&#8221;,
      this.src = &#8220;blank.gif&#8221;)
      :  (this.origBg = this.origBg?
      this.origBg
      :this.currentStyle.backgroundImage.toString().replace(&#8217;url(&#8221;&#8216;,&#8221;).replace(&#8217;&#8221;)&#8217;,&#8221;),
      this.runtimeStyle.filter = &#8220;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#8217;&#8221; + this.origBg + &#8220;&#8216;, sizingMethod=&#8217;crop&#8217;)&#8221;,
      this.runtimeStyle.backgroundImage = &#8220;none&#8221;)),
      [...]]]></description>
			<content:encoded><![CDATA[<p>    PNG(Portable Network Graphics)格式图片可以表现更为绚丽多彩的颜色，常见的一些具有矢量效果的图片、图标都采用png格式，但是具有透明背景的png格式图片在IE6中却不是背景透明的，透明背景部分会显示出#DBEAED的淡灰色，表现效果很糟糕，为了使用透明背景图片只有采用gif格式了，但是gif格式会出现明显的锯齿效果，所以只有设法修复IE6的这个问题。解决的办法就是使用IE的Microsoft.AlphaImageLoader滤镜。</p>
<p>    如果希望使用png格式图片作为DOM元素的背景，那么就可以使用滤镜来加载png图片：<br />
    css代码：.png{background: url(images/angel.png) no-repeat !important;_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#8221;images/angel.png&#8221;);background:none;　　width:100px;height:100px;}<br />
    HTML代码：&lt;div class=&#8221;png&#8221;&gt;背景PNG透明&lt;/div&gt;</p>
<div>
<p>    如果png格式的图片不是用来做元素背景，而是直接引入的img图像，那么此时可以把此img标签的src属性替换为一张空的透明gif图像，然后再把png图片加载为元素的背景就可以了。首先要准备一张空白透明的gif图片，一般命名为blank.gif(可自己另起名字)，然后就可以替换png图像了。但是手工替换不太现实，最好一段代码就解决问题：<br />
    css代码：<br />
    .mypng img {<br />
      azimuth: expression(<br />
         this.pngSet?this.pngSet=true:<br />
       (this.nodeName == &#8220;IMG&#8221; &amp;&amp;  this.src.toLowerCase().indexOf(&#8217;.png&#8217;)&gt;-1?<br />
      (this.runtimeStyle.backgroundImage = &#8220;none&#8221;,<br />
      this.runtimeStyle.filter = &#8220;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#8217;&#8221; + this.src + &#8220;&#8216;,sizingMethod=&#8217;image&#8217;)&#8221;,<br />
      this.src = &#8220;blank.gif&#8221;)<br />
      :  (this.origBg = this.origBg?<br />
      this.origBg<br />
      :this.currentStyle.backgroundImage.toString().replace(&#8217;url(&#8221;&#8216;,&#8221;).replace(&#8217;&#8221;)&#8217;,&#8221;),<br />
      this.runtimeStyle.filter = &#8220;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#8217;&#8221; + this.origBg + &#8220;&#8216;, sizingMethod=&#8217;crop&#8217;)&#8221;,<br />
      this.runtimeStyle.backgroundImage = &#8220;none&#8221;)),<br />
      this.pngSet=true);<br />
    }<br />
    html代码：&lt;div class=&#8221;mypng&#8221;&gt;&lt;img src=&#8221;图片路径&#8221; /&gt;&lt;/div&gt;</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.gzseed.net/?feed=rss2&amp;p=136</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android1.6手势识别</title>
		<link>http://www.gzseed.net/?p=132</link>
		<comments>http://www.gzseed.net/?p=132#comments</comments>
		<pubDate>Thu, 26 Nov 2009 10:17:57 +0000</pubDate>
		<dc:creator>chrisho</dc:creator>
				<category><![CDATA[移动终端]]></category>

		<guid isPermaLink="false">http://www.gzseed.net/?p=132</guid>
		<description><![CDATA[很高兴能在Android1.6的sdk看到手势识别这一功能，之前一直在想，如何在android中实现nds游戏那样用手势（准确点应该是笔势）来控制游戏角色？现在总算看到一点曙光了，不过手势要做到笔势那样随心所欲地控制游戏人物，还有很多细节问题需要处理。
    在Android1.6的模拟器里面预装了一个叫Gestures Builder的程序，这个程序就是让你创建自己的手势的（Gestures Builder的源代码在sdk问samples里面有，有兴趣可以看看）。创建的手势将被保存到/sdcard/gestures里面，把这个文件复制到你的工程/res/raw下，你就可以在你的工程里面使用这些手势了。复制到/res/raw下的手势是只读的，也就是说你不能修改或增加手势了，如果想实现增改的话，可以直接加载sd卡里面的gestures文件。
    在例子中，我创建了这样的手势：

第二步：在layout里面创建GestureOverlayView，这个透明的view就是让你在上面画手势用的，可以叠在其他View上面：
 &#60;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&#62;
&#60;LinearLayout xmlns:android=&#8221;http://schemas.android.com/apk/res/android&#8221;
    android:orientation=&#8221;vertical&#8221;
    android:layout_width=&#8221;fill_parent&#8221;
    android:layout_height=&#8221;fill_parent&#8221;
    &#62;
&#60;TextView 
    android:layout_width=&#8221;fill_parent&#8221;
    android:layout_height=&#8221;wrap_content&#8221;
    android:text=&#8221;@string/hello&#8221;
    /&#62;
&#60;android.gesture.GestureOverlayView
    android:id=&#8221;@+id/gestures&#8221;
    android:layout_width=&#8221;fill_parent&#8221;
    android:layout_height=&#8221;0dip&#8221;
    android:layout_weight=&#8221;1.0&#8243;
    /&#62;
&#60;/LinearLayout&#62;
第三步：载入Gesture：
mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures);
        if (!mLibrary.load()) {
            finish();
        }
第四步：增加响应函数OnGesturePerformedListener：
GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);
        gestures.addOnGesturePerformedListener(this);
以上四步就可以实现简单的Gesture识别原型了：
程序运行结果如下，书写一个a字，程序识别出，然后toast一个a出来：
 
完整代码如下：
package com.ray.test;
import java.util.ArrayList;
import android.app.Activity;
import android.gesture.Gesture;
import android.gesture.GestureLibraries;
import android.gesture.GestureLibrary;
import android.gesture.GestureOverlayView;
import android.gesture.Prediction;
import android.gesture.GestureOverlayView.OnGesturePerformedListener;
import android.os.Bundle;
import android.widget.Toast;
public class TestGesture extends Activity implements OnGesturePerformedListener{
 GestureLibrary mLibrary;
    @Override
    public void [...]]]></description>
			<content:encoded><![CDATA[<p>很高兴能在Android1.6的sdk看到手势识别这一功能，之前一直在想，如何在android中实现nds游戏那样用手势（准确点应该是笔势）来控制游戏角色？现在总算看到一点曙光了，不过手势要做到笔势那样随心所欲地控制游戏人物，还有很多细节问题需要处理。</p>
<p>    在Android1.6的模拟器里面预装了一个叫<span>Gestures Builder的程序，这个程序就是让你创建自己的手势的（Gestures Builder的源代码在sdk问samples里面有，有兴趣可以看看）。创建的手势将被保存到<span>/sdcard/gestures里</span>面，把这个文件复制到你的工程<code>/res/raw下，你就可以在你的工程里面使用这些手势了。复制到<span><code>/res/raw下的手势是只读的，也就是说你不能修改或增加手势了，如果想实现增改的话，可以直接加载sd卡里面的gestures文件。</code></span></code></span></p>
<p>    在例子中，我创建了这样的手势：</p>
<p><img class="alignnone size-full wp-image-131" src="http://www.gzseed.net/wp-content/uploads/2009/11/53068318-4f51-33ef-810c-b431d066fd80.png" alt="53068318-4f51-33ef-810c-b431d066fd80" width="320" height="480" /></p>
<p>第二步：在layout里面创建<span>GestureOverlayView，这个透明的view就是让你在上面画手势用的，可以叠在其他View上面：</span></p>
<p> &lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;LinearLayout xmlns:android=&#8221;<a href="http://schemas.android.com/apk/res/android">http://schemas.android.com/apk/res/android</a>&#8221;<br />
    android:orientation=&#8221;vertical&#8221;<br />
    android:layout_width=&#8221;fill_parent&#8221;<br />
    android:layout_height=&#8221;fill_parent&#8221;<br />
    &gt;<br />
&lt;TextView <br />
    android:layout_width=&#8221;fill_parent&#8221;<br />
    android:layout_height=&#8221;wrap_content&#8221;<br />
    android:text=&#8221;@string/hello&#8221;<br />
    /&gt;<br />
&lt;android.gesture.GestureOverlayView<br />
    android:id=&#8221;@+id/gestures&#8221;<br />
    android:layout_width=&#8221;fill_parent&#8221;<br />
    android:layout_height=&#8221;0dip&#8221;<br />
    android:layout_weight=&#8221;1.0&#8243;<br />
    /&gt;<br />
&lt;/LinearLayout&gt;</p>
<p>第三步：载入Gesture：</p>
<p>mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures);<br />
        if (!mLibrary.load()) {<br />
            finish();<br />
        }</p>
<p>第四步：增加响应函数O<span>nGesturePerformedListener<span>：</span></span></p>
<p><span><span>GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);<br />
        gestures.addOnGesturePerformedListener(this);</span></span></p>
<p>以上四步就可以实现简单的Gesture识别原型了：</p>
<p>程序运行结果如下，书写一个a字，程序识别出，然后toast一个a出来：</p>
<p> <img src="http://www.gzseed.net/wp-content/uploads/2009/11/a0644667-f71b-39bf-aaeb-d76f1552c614.png" alt="a0644667-f71b-39bf-aaeb-d76f1552c614" width="320" height="480" /></p>
<p>完整代码如下：</p>
<p>package com.ray.test;</p>
<p>import java.util.ArrayList;</p>
<p>import android.app.Activity;<br />
import android.gesture.Gesture;<br />
import android.gesture.GestureLibraries;<br />
import android.gesture.GestureLibrary;<br />
import android.gesture.GestureOverlayView;<br />
import android.gesture.Prediction;<br />
import android.gesture.GestureOverlayView.OnGesturePerformedListener;<br />
import android.os.Bundle;<br />
import android.widget.Toast;</p>
<p>public class TestGesture extends Activity implements OnGesturePerformedListener{</p>
<p> GestureLibrary mLibrary;<br />
    @Override<br />
    public void onCreate(Bundle savedInstanceState) {<br />
        super.onCreate(savedInstanceState);<br />
        setContentView(R.layout.main);<br />
        GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);<br />
        gestures.addOnGesturePerformedListener(this);<br />
        mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures);<br />
        if (!mLibrary.load()) {<br />
            finish();<br />
        }<br />
    }</p>
<p> @Override<br />
 public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {<br />
  ArrayList predictions = mLibrary.recognize(gesture);</p>
<p>     // We want at least one prediction<br />
     if (predictions.size() &gt; 0) {<br />
         Prediction prediction = (Prediction) predictions.get(0);<br />
         // We want at least some confidence in the result<br />
         if (prediction.score &gt; 1.0) {<br />
             // Show the spell<br />
             Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT).show();<br />
         }<br />
     }<br />
  <br />
 }<br />
}</p>
<p>文章参考了android博客上面的这篇文章： <a href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/Rrgh3YnIqig/gestures-on-android-16.html">http://feedproxy.google.com/~r/blogspot/hsDu/~3/Rrgh3YnIqig/gestures-on-android-16.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gzseed.net/?feed=rss2&amp;p=132</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Div+CSS的优点</title>
		<link>http://www.gzseed.net/?p=108</link>
		<comments>http://www.gzseed.net/?p=108#comments</comments>
		<pubDate>Tue, 03 Nov 2009 14:40:23 +0000</pubDate>
		<dc:creator>hongsite</dc:creator>
				<category><![CDATA[DIV+CSS]]></category>

		<guid isPermaLink="false">http://www.gzseed.net/?p=108</guid>
		<description><![CDATA[    Div+CSS布局的优点:
    业界越来越关注DIV+CSS的标准化设计，大到各大门户网站，小到不计其数的个人网站，在Div+CSS标准化的影响下，网页设计人员已经把这一要求作为行业标准。那么什么是Div+CSS标准？Div+CSS的标准化设计到底有什么好处？
    Div 全称 division 意为“区分”使用 DIV 的方法跟使用其他 tag 的方法一样。
    如果单独使用 DIV 而不加任何 CSS, 那么它在网页中的效果和使用 &#60;P&#62;&#60;/P&#62; 是一样的。DIV本身就是容器性质的,你不但可以内嵌table还可以内嵌文本和其它的HTML代码。
    CSS是Cascading style Sheets的简称，中文译作“层叠样式表单”，在主页制作时采用CSS技术，可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。只要对相应的代码做一些简单的修改，就可以改变同一页面的不同部分，或者页数不同的网页的外观和格式。在网上没有使用过CSS的网页可能不好找。不管你用什么工具软件制作网页，都有在有意无意地使用CSS。用好CSS能使你的网页更加简炼，同样内容的网页，有的人做出来有几十KB，而高手做出来只有十几KB。
    Div+CSS标准的优点:
    1.大大缩减页面代码，提高页面浏览速度,缩减带宽成本。
    2.结构清晰，容易被搜索引擎搜索到，天生优化了seo。
    3.CSS非常容易编写。你可以象写html代码一样轻松地编写CSS。
    4.缩短改版时间。只要简单的修改几个CSS文件就可以重新设计一个有成百上千页面的站点。
    5.强大的字体控制和排版能力。CSS控制字体的能力比糟糕的FONT标签好多了，有了CSS，我们不再需要用FONT标签或者透明的1 px GIF图片来控制标题，改变字体颜色，字体样式等等。 
    6.提高易用性。使用CSS可以结构化HTML，例如：&#60;p&#62;标签只用来控制段落，heading标签只用来控制标题，table标签只用来表现格式化的数据等等。你可以增加更多的用户而不需要建立独立的版本。
 
    7.更好的控制页面布局。不用多说。
    8.表现和内容相分离。将设计部分剥离出来放在一个独立样式文件中，你可以减少未来网页无效的可能。
    9.更方便搜索引擎的搜索。用只包含结构化内容的HTML代替嵌套的标签，搜索引擎将更有效地搜索到你的内容，并可能给你一个较高的评价(ranking)。
 
    10.另外如果你不是javascrput的高手，你可以不必去写ID，只用class就可以。当客户端程序员写完程序，需要调整时候，你可以在利用他的ID进行控制。
    11.Table 中布局中，垃圾代码会很多，一些修饰的样式及布局的代码混合一起，很不利于直观。而Div 更能体现样式和结构相分离，结构的重构性强。
    12.在几乎所有的浏览器上都可以使用。
    13.以前一些非得通过图片转换实现的功能，现在只要用CSS就可以轻松实现，从而更快地下载页面。
    14.使页面的字体变得更漂亮，更容易编排，使页面真正赏心悦目。
    15.你可以轻松地控制页面的布局 。
    16.你可以将许多网页的风格格式同时更新，不用再一页一页地更新了。你可以将站点上所有的网页风格都使用一个CSS文件进行控制，只要修改这个CSS文件中相应的行，那么整个站点的所有页面都会随之发生变动。
    17.Table 布局灵活性不大，你只能遵循 table tr td 的格式。而div 你可以 div ul li 也可以 ol [...]]]></description>
			<content:encoded><![CDATA[<p>    <strong>Div+CSS布局的优点:</strong></p>
<p>    业界越来越关注DIV+CSS的标准化设计，大到各大门户网站，小到不计其数的个人网站，在Div+CSS标准化的影响下，网页设计人员已经把这一要求作为行业标准。那么什么是Div+CSS标准？Div+CSS的标准化设计到底有什么好处？</p>
<p>    Div 全称 division 意为“区分”使用 DIV 的方法跟使用其他 tag 的方法一样。</p>
<p>    如果单独使用 DIV 而不加任何 CSS, 那么它在网页中的效果和使用 &lt;P&gt;&lt;/P&gt; 是一样的。DIV本身就是容器性质的,你不但可以内嵌table还可以内嵌文本和其它的HTML代码。</p>
<p>    CSS是Cascading style Sheets的简称，中文译作“层叠样式表单”，在主页制作时采用CSS技术，可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。只要对相应的代码做一些简单的修改，就可以改变同一页面的不同部分，或者页数不同的网页的外观和格式。在网上没有使用过CSS的网页可能不好找。不管你用什么工具软件制作网页，都有在有意无意地使用CSS。用好CSS能使你的网页更加简炼，同样内容的网页，有的人做出来有几十KB，而高手做出来只有十几KB。</p>
<p>    <strong>Div+CSS标准的优点:</strong></p>
<p>    1.大大缩减页面代码，提高页面浏览速度,缩减带宽成本。</p>
<p>    2.结构清晰，容易被搜索引擎搜索到，天生优化了seo。</p>
<p>    3.CSS非常容易编写。你可以象写html代码一样轻松地编写CSS。</p>
<p>    4.缩短改版时间。只要简单的修改几个CSS文件就可以重新设计一个有成百上千页面的站点。</p>
<p>    5.强大的字体控制和排版能力。CSS控制字体的能力比糟糕的FONT标签好多了，有了CSS，我们不再需要用FONT标签或者透明的1 px GIF图片来控制标题，改变字体颜色，字体样式等等。 </p>
<p>    6.提高易用性。使用CSS可以结构化HTML，例如：&lt;p&gt;标签只用来控制段落，heading标签只用来控制标题，table标签只用来表现格式化的数据等等。你可以增加更多的用户而不需要建立独立的版本。<br />
 <br />
    7.更好的控制页面布局。不用多说。</p>
<p>    8.表现和内容相分离。将设计部分剥离出来放在一个独立样式文件中，你可以减少未来网页无效的可能。</p>
<p>    9.更方便搜索引擎的搜索。用只包含结构化内容的HTML代替嵌套的标签，搜索引擎将更有效地搜索到你的内容，并可能给你一个较高的评价(ranking)。<br />
 <br />
    10.另外如果你不是javascrput的高手，你可以不必去写ID，只用class就可以。当客户端程序员写完程序，需要调整时候，你可以在利用他的ID进行控制。</p>
<p>    11.Table 中布局中，垃圾代码会很多，一些修饰的样式及布局的代码混合一起，很不利于直观。而Div 更能体现样式和结构相分离，结构的重构性强。</p>
<p>    12.在几乎所有的浏览器上都可以使用。</p>
<p>    13.以前一些非得通过图片转换实现的功能，现在只要用CSS就可以轻松实现，从而更快地下载页面。</p>
<p>    14.使页面的字体变得更漂亮，更容易编排，使页面真正赏心悦目。</p>
<p>    15.你可以轻松地控制页面的布局 。</p>
<p>    16.你可以将许多网页的风格格式同时更新，不用再一页一页地更新了。你可以将站点上所有的网页风格都使用一个CSS文件进行控制，只要修改这个CSS文件中相应的行，那么整个站点的所有页面都会随之发生变动。</p>
<p>    17.Table 布局灵活性不大，你只能遵循 table tr td 的格式。而div 你可以 div ul li 也可以 ol li 还可以 ul li ……但标准语法最好有序的写。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gzseed.net/?feed=rss2&amp;p=108</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>正则表式一只</title>
		<link>http://www.gzseed.net/?p=105</link>
		<comments>http://www.gzseed.net/?p=105#comments</comments>
		<pubDate>Thu, 22 Oct 2009 13:14:53 +0000</pubDate>
		<dc:creator>crosstime</dc:creator>
				<category><![CDATA[PHP+MYSQL]]></category>

		<guid isPermaLink="false">http://www.gzseed.net/?p=105</guid>
		<description><![CDATA[PHP正则表达式主要用于字符串的模式分割、匹配、查找及替换操作。使用正则表达式在某些简单的环境下可能效率不高，因此如何更好的使用PHP正则表达式需要综合考虑
我是个PHP废柴，是起源于网上的一篇文章，这篇文章由浅入深的阐述了PHP正则表达式使用的方法，我觉得是一个很好的入门材料，不过学成还是要靠个人，在使用的过程中，还是会不断地忘记，因此反反复复的阅读了这篇文章有四五遍，对于其中一些比较困难的知识点，甚至要用很久才能消化，但是只要能见坚持着看完，你会发现自己对于正则的运用能力就会显著提高。
PHP正则表达式的定义：
用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。
PHP中的正则函数：
PHP中有两套正则函数，两者功能差不多，分别为：
一套是由PCRE（Perl Compatible Regular Expression）库提供的。使用“preg_”为前缀命名的函数；
一套由POSIX（Portable Operating System Interface of Unix ）扩展提供的。使用以“ereg_”为前缀命名的函数；（POSIX的正则函数库，自PHP 5.3以后，就不在推荐使用，从PHP6以后，就将被移除）
由于POSIX正则即将推出历史舞台，并且PCRE和perl的形式差不多，更利于我们在perl和php之间切换，所以这里重点介绍PCRE正则的使用。
PCRE正则表达式
PCRE全称为Perl Compatible Regular Expression，意思是Perl兼容正则表达式。
在PCRE中，通常将模式表达式（即正则表达式）包含在两个反斜线“/”之间，如“/apple/”。
正则中重要的几个概念有：元字符、转义、模式单元（重复）、反义、引用和断言，这些概念都可以在文章[1]中轻松的理解和掌握。
常用的元字符(Meta-character)：
元字符 说明
\A 匹配字符串串首的原子
\Z 匹配字符串串尾的原子
\b 匹配单词的边界 /\bis/ 匹配头为is的字符串 /is\b/ 匹配尾为is的字符串 /\bis\b/ 定界
\B 匹配除单词边界之外的任意字符 /\Bis/ 匹配单词“This”中的“is”
\d 匹配一个数字；等价于[0-9]
\D 匹配除数字以外任何一个字符；等价于[^0-9]
\w 匹配一个英文字母、数字或下划线；等价于[0-9a-zA-Z_]
\W 匹配除英文字母、数字和下划线以外任何一个字符；等价于[^0-9a-zA-Z_]
\s 匹配一个空白字符；等价于[\f\t\v]
\S 匹配除空白字符以外任何一个字符；等价于[^\f\t\v]
\f 匹配一个换页符等价于 \x0c 或 \cL
匹配一个换行符；等价于 \x0a 或 \cJ
匹配一个回车符等价于\x0d 或 \cM
\t 匹配一个制表符；等价于 \x09\或\cl
\v 匹配一个垂直制表符；等价于\x0b或\ck
\oNN 匹配一个八进制数字
\xNN 匹配一个十六进制数字
\cC 匹配一个控制字符
模式修正符（Pattern Modifiers）：
模式修正符在忽略大小写、匹配多行中使用特别多，掌握了这一个修正符，往往能解决我们遇到的很多问题。
i －可同时匹配大小写字母
M －将字符串视为多行
S －将字符串视为单行，换行符做普通字符看待，使“.”匹配任何字符
X －模式中的空白忽略不计
U －匹配到最近的字符串
e －将替换的字符串作为表达使用
格式：/apple/i匹配“apple”或“Apple”等，忽略大小写。 [...]]]></description>
			<content:encoded><![CDATA[<p>PHP正则表达式主要用于字符串的模式分割、匹配、查找及替换操作。使用正则表达式在某些简单的环境下可能效率不高，因此如何更好的使用PHP正则表达式需要综合考虑</p>
<p>我是个PHP废柴，是起源于网上的一篇文章，这篇文章由浅入深的阐述了PHP正则表达式使用的方法，我觉得是一个很好的入门材料，不过学成还是要靠个人，在使用的过程中，还是会不断地忘记，因此反反复复的阅读了这篇文章有四五遍，对于其中一些比较困难的知识点，甚至要用很久才能消化，但是只要能见坚持着看完，你会发现自己对于正则的运用能力就会显著提高。</p>
<p>PHP正则表达式的定义：</p>
<p>用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。</p>
<p>PHP中的正则函数：</p>
<p>PHP中有两套正则函数，两者功能差不多，分别为：</p>
<p>一套是由PCRE（Perl Compatible Regular Expression）库提供的。使用“preg_”为前缀命名的函数；</p>
<p>一套由POSIX（Portable Operating System Interface of Unix ）扩展提供的。使用以“ereg_”为前缀命名的函数；（POSIX的正则函数库，自PHP 5.3以后，就不在推荐使用，从PHP6以后，就将被移除）</p>
<p>由于POSIX正则即将推出历史舞台，并且PCRE和perl的形式差不多，更利于我们在perl和php之间切换，所以这里重点介绍PCRE正则的使用。</p>
<p>PCRE正则表达式</p>
<p>PCRE全称为Perl Compatible Regular Expression，意思是Perl兼容正则表达式。</p>
<p>在PCRE中，通常将模式表达式（即正则表达式）包含在两个反斜线“/”之间，如“/apple/”。</p>
<p>正则中重要的几个概念有：元字符、转义、模式单元（重复）、反义、引用和断言，这些概念都可以在文章[1]中轻松的理解和掌握。</p>
<p>常用的元字符(Meta-character)：</p>
<p>元字符 说明</p>
<p>\A 匹配字符串串首的原子</p>
<p>\Z 匹配字符串串尾的原子</p>
<p>\b 匹配单词的边界 /\bis/ 匹配头为is的字符串 /is\b/ 匹配尾为is的字符串 /\bis\b/ 定界</p>
<p>\B 匹配除单词边界之外的任意字符 /\Bis/ 匹配单词“This”中的“is”</p>
<p>\d 匹配一个数字；等价于[0-9]</p>
<p>\D 匹配除数字以外任何一个字符；等价于[^0-9]</p>
<p>\w 匹配一个英文字母、数字或下划线；等价于[0-9a-zA-Z_]</p>
<p>\W 匹配除英文字母、数字和下划线以外任何一个字符；等价于[^0-9a-zA-Z_]</p>
<p>\s 匹配一个空白字符；等价于[\f\t\v]</p>
<p>\S 匹配除空白字符以外任何一个字符；等价于[^\f\t\v]</p>
<p>\f 匹配一个换页符等价于 \x0c 或 \cL</p>
<p>匹配一个换行符；等价于 \x0a 或 \cJ</p>
<p>匹配一个回车符等价于\x0d 或 \cM</p>
<p>\t 匹配一个制表符；等价于 \x09\或\cl</p>
<p>\v 匹配一个垂直制表符；等价于\x0b或\ck</p>
<p>\oNN 匹配一个八进制数字</p>
<p>\xNN 匹配一个十六进制数字</p>
<p>\cC 匹配一个控制字符</p>
<p>模式修正符（Pattern Modifiers）：</p>
<p>模式修正符在忽略大小写、匹配多行中使用特别多，掌握了这一个修正符，往往能解决我们遇到的很多问题。</p>
<p>i －可同时匹配大小写字母</p>
<p>M －将字符串视为多行</p>
<p>S －将字符串视为单行，换行符做普通字符看待，使“.”匹配任何字符</p>
<p>X －模式中的空白忽略不计</p>
<p>U －匹配到最近的字符串</p>
<p>e －将替换的字符串作为表达使用</p>
<p>格式：/apple/i匹配“apple”或“Apple”等，忽略大小写。 /i</p>
<p>PCRE的模式单元：</p>
<p>//1 提取第一位的属性</p>
<p>/^\d{2} ([\W])\d{2}\\1\d{4}$匹配“12-31-2006”、“09/27/1996”、“86 01 4321”等字符串。但上述正则表达式不匹配“12/34-5678”的格式。这是因为模式“[\W]”的结果“/”已经被存储。下个位置“\1”引用时，其匹配模式也是字符“/”。</p>
<p>当不需要存储匹配结果时使用非存储模式单元“（？：）”</p>
<p>例如/(?:a|b|c)(D|E|F)\\1g/ 将匹配“aEEg”。在一些正则表达式中，使用非存储模式单元是必要的。否则，需要改变其后引用的顺序。上例还可以写成/（a|b|c）(C|E|F)\2g/。</p>
<p>PCRE正则表达式函数：</p>
<p>preg_match()和preg_match_all() preg_quote() preg_split() preg_grep() preg_replace() 函数的具体使用，我们可以通过PHP手册来找到，下面分享一些平时积累的正则表达式：</p>
<p>匹配action属性</p>
<p>$str = &#8221;; $match = &#8221;; preg_match_all(&#8217;/\s+action=\&#8221;(?!http:)(.*?)\&#8221;\s/&#8217;, $str, $match); print_r($match); 在正则中使用回调函数</p>
<p>/** * replace some string by callback function * */ function callback_replace() { $url = &#8216;http://esfang.house.sina.com.cn&#8217;; $str = &#8221;; $str = preg_replace ( &#8216;/(?&lt;=\saction=\&#8221;)(?!http:)(.*?)(?=\&#8221;\s)/e&#8217;, &#8217;search(\$url, \\1)&#8217;, $str ); echo $str; } function search($url, $match){ return $url . &#8216;/&#8217; . $match; } 带断言的正则匹配</p>
<p>$match = &#8221;; $str = &#8216;xxxxxx.com.cn bold font paragraph text&#8217;; preg_match_all ( &#8216;/(?&lt;=).*(?=)/&#8217;, $str, $match ); echo &#8220;匹配没有属性的HTML标签中的内容：&#8221;; print_r ( $match ); 替换HTML源码中的地址</p>
<p>$form_html = preg_replace ( &#8216;/(?&lt;=\saction=\&#8221;|\ssrc=\&#8221;|\shref=\&#8221;)(?!http:|javascript)(.*?)(?=\&#8221;\s)/e&#8217;, &#8216;add_url(\$url, \&#8217;\\1\&#8217;)', $form_html ); 最后，正则工具虽然强大，但是从效率和编写时间上来讲，有的时候可能没有explode来的更直接，对于一些紧急或者要求不高的任务，简单、粗暴的方法也许更好。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gzseed.net/?feed=rss2&amp;p=105</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android数据存取之Preferences</title>
		<link>http://www.gzseed.net/?p=96</link>
		<comments>http://www.gzseed.net/?p=96#comments</comments>
		<pubDate>Sun, 18 Oct 2009 13:09:56 +0000</pubDate>
		<dc:creator>chrisho</dc:creator>
				<category><![CDATA[移动终端]]></category>

		<guid isPermaLink="false">http://www.gzseed.net/?p=96</guid>
		<description><![CDATA[这种方式应该是用起来最简单的Android读写外部数据的方法了。他的用法基本上和J2SE(java.util.prefs.Preferences)中的用法一样，以一种简单、 透明的方式来保存一些用户个性化设置的字体、颜色、位置等参数信息。一般的应用程序都会提供“设置”或者“首选项”的这样的界面，那么这些设置最后就可以 通过Preferences来保存，而程序员不需要知道它到底以什么形式保存的，保存在了什么地方。当然，如果你愿意保存其他的东西，也没有什么限制。只是在性能上不知道会有什么问题。]]></description>
			<content:encoded><![CDATA[<p>这种方式应该是用起来最简单的Android读写外部数据的方法了。他的用法基本上和J2SE(java.util.prefs.Preferences)中的用法一样，以一种简单、 透明的方式来保存一些用户个性化设置的字体、颜色、位置等参数信息。一般的应用程序都会提供“设置”或者“首选项”的这样的界面，那么这些设置最后就可以 通过Preferences来保存，而程序员不需要知道它到底以什么形式保存的，保存在了什么地方。当然，如果你愿意保存其他的东西，也没有什么限制。只是在性能上不知道会有什么问题。</p>
<p>在Android系统中，这些信息以XML文件的形式保存在 <strong>/data/data/<em>PACKAGE_NAME</em>/shared_prefs </strong>目录下。</p>
<p><strong>数据读取</strong></p>
<li>
<div style="width: 532px"><span>String PREFS_NAME = </span><span>&#8220;Note.sample.roiding.com&#8221;</span><span>;   </span></div>
</li>
<li>
<div style="width: 532px">SharedPreferences settings = getSharedPreferences(PREFS_NAME, <span>0</span><span>);   </span></div>
</li>
<li>
<div style="width: 532px"><span>boolean</span><span> silent = settings.getBoolean(</span><span>&#8220;silentMode&#8221;</span><span>, </span><span>false</span><span>);   </span></div>
</li>
<li>
<div style="width: 532px">String hello = settings.getString(<span>&#8220;hello&#8221;</span><span>, </span><span>&#8220;Hi&#8221;</span><span>);  </span></div>
</li>
<p>SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);<br />
通过名称，得到一个SharedPreferences，顾名思义，这个Preferences是共享的，共享的范围据现在同一个Package中，这里面说所的Package和Java里面的那个Package不同，貌似这里面的Package是指在AndroidManifest.xml文件中:</p>
<p> </p>
<div style="width: 503px"><span>&lt;</span>manifest<span> </span><span>xmlns:android</span><span>=</span>&#8220;http://schemas.android.com/apk/res/android&#8221;<span>  </span></div>
<p> </p>
<li>
<div style="width: 503px"><span>package</span><span>=</span>&#8220;com.roiding.sample.note&#8221;<span>  </span></div>
</li>
<li>
<div style="width: 503px"><span>android:version<span style="background-color: #ffff00">Code</span></span><span>=</span>&#8220;1&#8243;<span>  </span></div>
</li>
<li>
<div style="width: 503px"><span>android:versionName</span><span>=</span>&#8220;1.0.0&#8243;<span>&gt;</span><span>  </span></div>
</li>
<p> </p>
<p>这里面的package。根据我目前的实验结果看，是这样的，欢迎指正。后面的那个int是用来声明读写模式，先不管那么多了，暂时就知道设为0(android.content.Context.MODE_PRIVATE)就可以了。</p>
<li>boolean silent = settings.getBoolean(”silentMode”, false);<br />
获得一个boolean值，这里就会看到用Preferences的好处了：可以提供一个缺省值。也就是说如果Preference中不存在这个值的话，那么就用后面的值作为返回指，这样就省去了我们的if什么什么为空的判断。</li>
<p> </p>
<p><strong>数据写入</strong></p>
<p> </p>
<div style="width: 532px"><span>String PREFS_NAME = </span><span>&#8220;Note.sample.roiding.com&#8221;</span><span>;   </span></div>
<p> </p>
<li>
<div style="width: 532px">SharedPreferences settings = getSharedPreferences(PREFS_NAME, <span>0</span><span>);   </span></div>
</li>
<li>
<div style="width: 532px">SharedPreferences.Editor editor = settings.edit();  </div>
</li>
<li>
<div style="width: 532px">editor.putBoolean(<span>&#8220;silentMode&#8221;</span><span>, </span><span>true</span><span>);   </span></div>
</li>
<li>
<div style="width: 532px">editor.putString(<span>&#8220;hello&#8221;</span><span>, </span><span>&#8220;Hello~&#8221;</span><span>);   </span></div>
</li>
<li>
<div style="width: 532px">editor.commit(); </div>
</li>
]]></content:encoded>
			<wfw:commentRss>http://www.gzseed.net/?feed=rss2&amp;p=96</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->