﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-asfman-文章分类-Java</title><link>http://www.cnitblog.com/asfman/category/5787.html</link><description>android developer</description><language>zh-cn</language><lastBuildDate>Thu, 27 Jun 2013 06:15:52 GMT</lastBuildDate><pubDate>Thu, 27 Jun 2013 06:15:52 GMT</pubDate><ttl>60</ttl><item><title>mac下draw9path打开用户界面失去响应的原因</title><link>http://www.cnitblog.com/asfman/articles/87787.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Wed, 26 Jun 2013 10:05:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/87787.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/87787.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/87787.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/87787.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/87787.html</trackback:ping><description><![CDATA[<div>狗日的苹果居然把我的ｊａｖａ更新到了一个有问题的版本，然后最新版也不提示自动更新。</div>
<div>解决办法需上苹果官网下载ｊａｖａ更新包，手动更新ｊａｖａ</div>
<div>更新完后是build 1.6.0_51-b11-457-11M4509，有问题的那个结尾好像是５０８，所以你发现你的ｄｒａｗ９ｐａｔｈ打开异常的话，检测一下ｊａｖａ版本</div>
<div>http://support.apple.com/kb/DL1572</div>
<div>This update corrects an issue with Java applications failing to draw or respond to user input.</div>
@import url(http://www.cnitblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.cnitblog.com/asfman/aggbug/87787.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2013-06-26 18:05 <a href="http://www.cnitblog.com/asfman/articles/87787.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于onSaveInstanceState onRestoreInstanceState</title><link>http://www.cnitblog.com/asfman/articles/86780.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Mon, 19 Nov 2012 05:00:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/86780.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/86780.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/86780.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/86780.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/86780.html</trackback:ping><description><![CDATA[@import url(http://www.cnitblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
<h1 class="postTitle" style="padding: 5px; font-size: 16px; border-width: 0px 0px 1px; border-bottom-style: dashed; border-bottom-color: #cccccc; float: left; line-height: 1.5em; width: 708px; clear: both; color: #000000; font-family: verdana, 'ms song', 宋体, Arial, 微软雅黑, Helvetica, sans-serif; text-align: left; background-color: #f5fafe; "><a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/heiguy/archive/2010/10/30/1865239.html" style="margin: 0px; padding: 0px; color: #0066cc; ">onSaveInstanceState和onRestoreInstanceState触发的时机</a></h1>
<div class="clear" style="margin: 0px; padding: 0px; clear: both; font-family: verdana, 'ms song', 宋体, Arial, 微软雅黑, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #f5fafe; "></div>
<div class="postBody" style="margin: 0px; padding: 10px 2px 5px 5px; line-height: 1.5; font-family: verdana, 'ms song', 宋体, Arial, 微软雅黑, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #f5fafe; ">
<div id="cnblogs_post_body" style="margin: 0px; padding: 0px; word-break: normal !important; ">
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; ">先看Application Fundamentals上的一段话：</p>
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; ">&nbsp;</p>
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; ">&nbsp;Android calls onSaveInstanceState() before the activity becomes vulnerable to being destroyed by the system, but does not bother calling it when the instance is actually being destroyed by a user action (such as pressing the BACK key)</p>
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; ">&nbsp;</p>
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; ">从这句话可以知道，当某个activity变得&#8220;容易&#8221;被系统销毁时，该activity的onSaveInstanceState就会被执行，除非该activity是被用户主动销毁的，例如当用户按BACK键的时候。</p>
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; ">注意上面的双引号，何为&#8220;容易&#8221;？言下之意就是该activity还没有被销毁，而仅仅是一种可能性。这种可能性有哪些？通过重写一个activity的所有生命周期的onXXX方法，包括onSaveInstanceState和onRestoreInstanceState方法，我们可以清楚地知道当某个activity（假定为activity A）显示在当前task的最上层时，其onSaveInstanceState方法会在什么时候被执行，有这么几种情况：</p>
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; "><br style="margin: 0px; padding: 0px; " />
1、当用户按下HOME键时。</p>
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; ">这是显而易见的，系统不知道你按下HOME后要运行多少其他的程序，自然也不知道activity A是否会被销毁，故系统会调用onSaveInstanceState，让用户有机会保存某些非永久性的数据。以下几种情况的分析都遵循该原则</p>
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; "><br style="margin: 0px; padding: 0px; " />
2、长按HOME键，选择运行其他的程序时。</p>
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; "><br style="margin: 0px; padding: 0px; " />
3、按下电源按键（关闭屏幕显示）时。</p>
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; "><br style="margin: 0px; padding: 0px; " />
4、从activity A中启动一个新的activity时。</p>
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; "><br style="margin: 0px; padding: 0px; " />
5、屏幕方向切换时，例如从竖屏切换到横屏时。</p>
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; ">在屏幕切换之前，系统会销毁activity A，在屏幕切换之后系统又会自动地创建activity A，所以onSaveInstanceState一定会被执行</p>
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; ">&nbsp;</p>
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; ">总而言之，onSaveInstanceState的调用遵循一个重要原则，即当系统&#8220;未经你许可&#8221;时销毁了你的activity，则onSaveInstanceState会被系统调用，这是系统的责任，因为它必须要提供一个机会让你保存你的数据（当然你不保存那就随便你了）。</p>
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; ">&nbsp;</p>
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; "><br style="margin: 0px; padding: 0px; " />
至于onRestoreInstanceState方法，需要注意的是，onSaveInstanceState方法和onRestoreInstanceState方法&#8220;不一定&#8221;是成对的被调用的，onRestoreInstanceState被调用的前提是，activity A&#8220;确实&#8221;被系统销毁了，而如果仅仅是停留在有这种可能性的情况下，则该方法不会被调用，例如，当正在显示activity A的时候，用户按下HOME键回到主界面，然后用户紧接着又返回到activity A，这种情况下activity A一般不会因为内存的原因被系统销毁，故activity A的onRestoreInstanceState方法不会被执行</p>
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; "><br style="margin: 0px; padding: 0px; " />
另外，onRestoreInstanceState的bundle参数也会传递到onCreate方法中，你也可以选择在onCreate方法中做数据还原</p>
</div>
</div>
<img src ="http://www.cnitblog.com/asfman/aggbug/86780.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2012-11-19 13:00 <a href="http://www.cnitblog.com/asfman/articles/86780.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>盛大Bambook phone在mac下adb devices显示找不到解决办法</title><link>http://www.cnitblog.com/asfman/articles/85865.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Thu, 20 Sep 2012 05:33:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/85865.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/85865.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/85865.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/85865.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/85865.html</trackback:ping><description><![CDATA[在~/.android目录下创建adb_usb.ini@import url(http://www.cnitblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
<div>命令行下system_profiler SPUSBDataType 查看android手机的vendor ID.如：</div>
<div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Android:</div>
<div><br />
</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BSD Name: en3</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Product ID: 0x2323</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Vendor ID: 0x04cc &nbsp;(Philips Semiconductors)</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Version: 2.16</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Serial Number: 1EC4446DA1DAE1AE204D9C688D0A2CD</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Speed: Up to 480 Mb/sec</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Manufacturer: ST-Ericsson</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Location ID: 0x1a123000 / 5</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Current Available (mA): 500</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Current Required (mA): 500</div>
</div>
<div>把0x04cc写入刚创建的adb_usb.ini。然后adb kill-server adb start-server adb devices就可以找到设备了</div><img src ="http://www.cnitblog.com/asfman/aggbug/85865.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2012-09-20 13:33 <a href="http://www.cnitblog.com/asfman/articles/85865.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Link to Android Apps Using Android Market Links</title><link>http://www.cnitblog.com/asfman/articles/85766.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Tue, 18 Sep 2012 08:08:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/85766.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/85766.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/85766.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/85766.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/85766.html</trackback:ping><description><![CDATA[<div class="entry" style="margin: 0px 0px 0px 82px; padding: 0px 12px 8px 0px; clear: both; color: #3d3d3d; font-family: Arial, Helvetica, sans-serif; font-size: 12px; ">
<div style="margin: 0px; padding: 0px; clear: both; min-height: 1px; height: 3px; width: 507px; "></div>
<div class="shareaholic-like-buttonset" style="margin: 0px; padding: 0px; float: right; height: 30px; "><a class="shareaholic-fblike" data-shr_layout="button_count" data-shr_showfaces="false" data-shr_href="http%3A%2F%2Fandroid.kgmoney.net%2F2010%2F10%2F30%2Flink-to-android-app-using-android-market-links%2F" data-shr_title="Link+to+Android+Apps+Using+Android+Market+Links"></a></div>
<div style="margin: 0px; padding: 0px; clear: both; min-height: 1px; height: 3px; width: 507px; "></div>
<p style="margin-top: 5px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px; line-height: 15px; ">So you&#8217;ve created an Android app, put it in the Android Market, and now you&nbsp; want to promote it.&nbsp; But how do you&nbsp;<strong>link to Android apps from a webpage, email, twitter, or whatever</strong>, to your app&#8217;s listing in the market?&nbsp; It&#8217;s actually quite easy&#8211;it&#8217;s only slightly different that a normal hyperlink.&nbsp; One thing to note, however, is that&nbsp;<strong>when you click on an Android Market link, it will not work from the browser on you computer</strong>, it can only be tested on your Android device.</p>
<p style="margin-top: 5px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px; line-height: 15px; ">Anyway, there a several ways to create Android Market Links, and they are the following:</p>
<ul style="margin: 0px; padding: 0px 0px 0px 30px; ">
    <li style="margin: 0px; padding: 0px; ">Linking Directly to the App Listing</li>
    <li style="margin: 0px; padding: 0px; ">Searching by its Java Package Name</li>
    <li style="margin: 0px; padding: 0px; ">Searching by Developer Name</li>
    <li style="margin: 0px; padding: 0px; ">Searching by Keyword</li>
    <li style="margin: 0px; padding: 0px; ">Searching with a Combination of Parameters</li>
</ul>
<p style="margin-top: 5px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px; line-height: 15px; "><strong><br />
Linking Directly to the App Listing</strong>&nbsp;is the most direct way to get a visitor at your website to find your app in the market.&nbsp; This method requires you to know the Java package name of you app and looks like the following:</p>
<blockquote style="margin: 10px 10px 0px; padding: 0px 0px 0px 8px; border-left-width: 3px; border-left-style: solid; border-left-color: #e8e8e8; ">
<address lang="java" style="font-style: normal; ">http://market.android.com/details?id=&lt;packagename&gt;<br />
- or -<br />
market://details?id=&lt;packagename&gt;</address>
</blockquote>
<p style="margin-top: 5px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px; line-height: 15px; ">For example:</p>
<blockquote style="margin: 10px 10px 0px; padding: 0px 0px 0px 8px; border-left-width: 3px; border-left-style: solid; border-left-color: #e8e8e8; ">
<address style="font-style: normal; "><a href="http://market.android.com/details?id=net.kgmoney.TalkingCallerID" style="color: #086796; "><code style="margin: 0px; padding: 0px; ">http://market.android.com/details?id=net.kgmoney.TalkingCallerID</code></a><br />
- or -<code style="margin: 0px; padding: 0px; "><br />
<a href="market://details?id=net.kgmoney.TalkingCallerID" style="color: #086796; ">market://details?id=</a></code><a href="market://details?id=net.kgmoney.TalkingCallerID" style="color: #086796; "><code style="margin: 0px; padding: 0px; ">net.kgmoney.TalkingCallerID</code></a></address>
</blockquote>
<p style="margin-top: 5px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px; line-height: 15px; "><strong><br />
Searching by its Java Package Name</strong>&nbsp;is basically the same as a direct Android Market link as described above, except that it will take the user to a search results page first, where they will have to choose you app.&nbsp; I&#8217;m not really sure why this would be used in place of a direct market link, but it is done like this:</p>
<blockquote style="margin: 10px 10px 0px; padding: 0px 0px 0px 8px; border-left-width: 3px; border-left-style: solid; border-left-color: #e8e8e8; ">
<address style="font-style: normal; "><code style="margin: 0px; padding: 0px; ">http://market.android.com/search?q=pname:&lt;package&gt;</code><br />
- or -<code style="margin: 0px; padding: 0px; "><br />
</code><code style="margin: 0px; padding: 0px; ">market://search?q=pname:&lt;package&gt;</code></address>
</blockquote>
<p style="margin-top: 5px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px; line-height: 15px; ">For example:</p>
<blockquote style="margin: 10px 10px 0px; padding: 0px 0px 0px 8px; border-left-width: 3px; border-left-style: solid; border-left-color: #e8e8e8; ">
<address style="font-style: normal; "><a href="http://market.android.com/search?q=pname:net.kgmoney.TalkingCallerID" style="color: #086796; "><code style="margin: 0px; padding: 0px; ">http://market.android.com/search?q=pname:</code><code style="margin: 0px; padding: 0px; ">net.kgmoney.TalkingCallerID</code></a><br />
- or -<code style="margin: 0px; padding: 0px; "><br />
</code><a href="market://search?q=pname:net.kgmoney.TalkingCallerID" style="color: #086796; "><code style="margin: 0px; padding: 0px; ">market://search?q=pname:</code><code style="margin: 0px; padding: 0px; ">net.kgmoney.TalkingCallerID</code></a></address>
</blockquote>
<p style="margin-top: 5px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px; line-height: 15px; "><strong><br />
Searching by Developer Name</strong>&nbsp;is a slightly more general way to link to Android apps in that it will show a results page listing all the apps developed by a given developer.&nbsp; This is very useful if you would like to show existing users what else you have to offer.&nbsp; Here&#8217;s how to do it:</p>
<blockquote style="margin: 10px 10px 0px; padding: 0px 0px 0px 8px; border-left-width: 3px; border-left-style: solid; border-left-color: #e8e8e8; ">
<address style="font-style: normal; "><code style="margin: 0px; padding: 0px; ">http://market.android.com/search?q=pub:&lt;Developer&nbsp;Name&gt;</code><br />
- or -<code style="margin: 0px; padding: 0px; "><br />
market://search?q=pub:&lt;Developer Name&gt;</code></address>
</blockquote>
<p style="margin-top: 5px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px; line-height: 15px; ">For example:</p>
<blockquote style="margin: 10px 10px 0px; padding: 0px 0px 0px 8px; border-left-width: 3px; border-left-style: solid; border-left-color: #e8e8e8; ">
<address style="font-style: normal; "><a href="http://market.android.com/search?q=pub:kgmoney.net" style="color: #086796; "><code style="margin: 0px; padding: 0px; ">http://market.android.com/search?q=pub:kgmoney.net</code></a><br />
- or -<code style="margin: 0px; padding: 0px; "><br />
<a href="market://search?q=pub:kgmoney.net" style="color: #086796; ">market://search?q=pub:</a></code><a href="market://search?q=pub:kgmoney.net" style="color: #086796; "><code style="margin: 0px; padding: 0px; ">kgmoney.net</code></a></address>
</blockquote>
<p style="margin-top: 5px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px; line-height: 15px; "><strong><br />
Searching by Keyword</strong>&nbsp;makes your link even more general, allowing you to direct the user to a list of apps relating to your selected keyword.&nbsp; This is how it works:</p>
<blockquote style="margin: 10px 10px 0px; padding: 0px 0px 0px 8px; border-left-width: 3px; border-left-style: solid; border-left-color: #e8e8e8; ">
<address style="font-style: normal; "><code style="margin: 0px; padding: 0px; ">http://market.android.com/search?q=talking caller id</code><br />
- or -<br />
<code style="margin: 0px; padding: 0px; ">market://search?q=&lt;substring&gt;</code></address>
</blockquote>
<p style="margin-top: 5px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px; line-height: 15px; ">For example:</p>
<blockquote style="margin: 10px 10px 0px; padding: 0px 0px 0px 8px; border-left-width: 3px; border-left-style: solid; border-left-color: #e8e8e8; ">
<address style="font-style: normal; "><a href="http://market.android.com/search?q=talking%20caller%20id" style="color: #086796; "><code style="margin: 0px; padding: 0px; ">http://market.android.com/search?q=</code><code style="margin: 0px; padding: 0px; ">talking caller id</code></a><br />
- or -<br />
<a href="market://search?q=talking%20caller%20id" style="color: #086796; "><code style="margin: 0px; padding: 0px; ">market://search?q=</code><code style="margin: 0px; padding: 0px; ">talking caller id</code></a></address>
</blockquote>
<p style="margin-top: 5px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px; line-height: 15px; "><strong><br />
Searching with a Combination of Parameters</strong>&nbsp;simply combines the above search links.&nbsp; This is done as follows:</p>
<blockquote style="margin: 10px 10px 0px; padding: 0px 0px 0px 8px; border-left-width: 3px; border-left-style: solid; border-left-color: #e8e8e8; ">
<address style="font-style: normal; "><code style="margin: 0px; padding: 0px; ">http://market.android.com/search?q=</code><code style="margin: 0px; padding: 0px; ">&lt;substring&gt;</code><code style="margin: 0px; padding: 0px; ">&nbsp;pname:</code><code style="margin: 0px; padding: 0px; ">&lt;package&gt;</code><code style="margin: 0px; padding: 0px; ">pub:</code><code style="margin: 0px; padding: 0px; ">&lt;Developer Name&gt;</code></address>
</blockquote>
<p style="margin-top: 5px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px; line-height: 15px; ">For example:</p>
<blockquote style="margin: 10px 10px 0px; padding: 0px 0px 0px 8px; border-left-width: 3px; border-left-style: solid; border-left-color: #e8e8e8; ">
<address style="font-style: normal; "><a href="http://market.android.com/search?q=talking%20caller%20id%20pname:net.kgmoney.TalkingCallerID%20pub:kgmoney.net" style="color: #086796; "><code style="margin: 0px; padding: 0px; ">http://market.android.com/search?q=</code><code style="margin: 0px; padding: 0px; ">talking caller id</code><code style="margin: 0px; padding: 0px; ">pname:</code><code style="margin: 0px; padding: 0px; ">net.kgmoney.TalkingCallerID</code><code style="margin: 0px; padding: 0px; ">&nbsp;pub:</code><code style="margin: 0px; padding: 0px; ">kgmoney.net</code></a></address>
</blockquote>
<p style="margin-top: 5px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px; line-height: 15px; ">And there you have it.&nbsp; Start linking to your apps with Android Market links!</p>
</div>
@import url(http://www.cnitblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.cnitblog.com/asfman/aggbug/85766.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2012-09-18 16:08 <a href="http://www.cnitblog.com/asfman/articles/85766.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>android jarsigner 遇到的问题</title><link>http://www.cnitblog.com/asfman/articles/83633.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Fri, 27 Jul 2012 03:12:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/83633.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/83633.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/83633.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/83633.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/83633.html</trackback:ping><description><![CDATA[<div>#!/bin/bash</div><div>if [ "$#" -ge "1" ]&nbsp;</div><div>&nbsp; &nbsp;then</div><div><span style="white-space:pre">	</span>apkName=$1</div><div>else</div><div>&nbsp; &nbsp;echo "no argument"</div><div>&nbsp; &nbsp;exit</div><div>fi</div><div>echo "生成文件名: $apkName"</div><div>baseDirForScriptSelf=$(cd "$(dirname "$0")"; pwd)</div><div>echo "脚本所在路径：$baseDirForScriptSelf"</div><div>apkPath="$baseDirForScriptSelf/aizheke_$apkName.apk"</div><div>echo "生成文件路径: $apkPath"</div><div>#如果已经存在则删除</div><div>rm -f $apkPath</div><div>#从aizheke.apk复制为目标文件</div><div>cp $baseDirForScriptSelf/aizheke.apk $baseDirForScriptSelf/tmp.apk</div><div></div><div>keystore="$baseDirForScriptSelf/keys/aizhke.keystore"</div><div>keystoreAlias="azkkey"</div><div>password="******"</div><div>cd $baseDirForScriptSelf</div><div>zip -gv tmp.apk assets/channel.json</div><div>jarsigner -verbose -sigfile CERT -keystore $keystore -keypass $password -storepass $password tmp.apk $keystoreAlias</div><div>#jarsigner -verify -certs tmp.apk</div><div>#zipalign -cv 4 tmp.apk</div><div>zipalign -fv 4 tmp.apk $apkPath #f override</div><div>#zipalign -cv 4 $apkPath</div><div>rm -f tmp.apk<br /><br /><br />note: eclipse 生成的apk 它的sigfile不是默认根据keyalias生成的，而是生成名为CERT的sigfile,所以对eclipse生成的apk进行改动后，进行jarsigner的时候需要指定-sigfile CERT,否则会报<span style="background-color: #eeeeee; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 11.11111068725586px; line-height: 13.888888359069824px; text-align: left; ">INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES,也就是一个apk包含2个签名导致的</span></div><img src ="http://www.cnitblog.com/asfman/aggbug/83633.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2012-07-27 11:12 <a href="http://www.cnitblog.com/asfman/articles/83633.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于webview拦截</title><link>http://www.cnitblog.com/asfman/articles/81528.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Tue, 19 Jun 2012 08:40:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/81528.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/81528.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/81528.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/81528.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/81528.html</trackback:ping><description><![CDATA[1.webview不设置webviewclient<br /><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;activity</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:name=".Catch"</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android:screenOrientation="portrait"&gt;</div><div>&nbsp;<span style="white-space:pre">	</span> &nbsp; &nbsp; &nbsp; &nbsp;&lt;intent-filter&gt;</div><div><span style="white-space:pre">		</span> &nbsp; &nbsp; &nbsp; &nbsp;&lt;action android:name="android.intent.action.VIEW" /&gt;</div><div><span style="white-space:pre">		</span> &nbsp; &nbsp; &nbsp; &nbsp;&lt;category android:name="android.intent.category.DEFAULT" /&gt;</div><div><span style="white-space:pre">		</span> &nbsp; &nbsp; &nbsp; &nbsp;&lt;category android:name="android.intent.category.BROWSABLE" /&gt;</div><div><span style="white-space:pre">		</span> &nbsp; &nbsp; &nbsp; &nbsp;&lt;data android:scheme="aizheke"</div><div><span style="white-space:pre">		</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;android:host="fuck" /&gt;&nbsp;</div><div><span style="white-space:pre">			</span>&lt;/intent-filter&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/activity&gt; &nbsp;<br /><br /><br />2.设置webviewcient,重写onshouldoverriding onpagestart等。<br /><br />注意： 设置webviewcient后会使intent-filter无法捕获<br /><br /></div><img src ="http://www.cnitblog.com/asfman/aggbug/81528.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2012-06-19 16:40 <a href="http://www.cnitblog.com/asfman/articles/81528.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>getWidth()与getHeight()方法返回是0</title><link>http://www.cnitblog.com/asfman/articles/81306.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Thu, 14 Jun 2012 10:33:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/81306.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/81306.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/81306.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/81306.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/81306.html</trackback:ping><description><![CDATA[<p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; "><span style="font-size: 16px; ">getWidth()与getHeight()方法返回是0</span></p><p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; "><span style="font-size: 16px; ">&nbsp;&nbsp;上代码：</span></p><p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; "><span style="font-size: 16px; ">方法一：</span></p><p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; ">&nbsp;</p><p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; "><span style="font-family: Verdana; font-size: 18px; "><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0055ff; font-size: 16px; ">&nbsp;int</span></span>&nbsp;<span style="font-family: Verdana; font-size: 16px; ">w</span>&nbsp;<span style="font-family: Verdana; font-size: 16px; ">=</span>&nbsp;<span style="font-family: Verdana; font-size: 16px; ">View.MeasureSpec.makeMeasureSpec(</span><span style="font-family: Verdana; font-size: 16px; ">0</span><span style="font-family: Verdana; font-size: 16px; ">,View.MeasureSpec.UNSPECIFIED);</span><br /><span style="font-family: Verdana; font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;<span style="color: #0055ff; font-family: Verdana; font-size: 16px; ">int</span>&nbsp;<span style="font-family: Verdana; font-size: 16px; ">h</span>&nbsp;<span style="font-family: Verdana; font-size: 16px; ">=</span>&nbsp;<span style="font-family: Verdana; font-size: 16px; ">View.MeasureSpec.makeMeasureSpec(</span><span style="font-family: Verdana; font-size: 16px; ">0</span><span style="font-family: Verdana; font-size: 16px; ">,View.MeasureSpec.UNSPECIFIED);</span><br /><span style="font-family: Verdana; font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ssidtext.measure(w, h);</span><br /><span style="font-family: Verdana; font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;<span style="color: #0055ff; font-family: Verdana; font-size: 16px; ">int</span>&nbsp;<span style="font-family: Verdana; font-size: 16px; ">width</span>&nbsp;<span style="font-family: Verdana; font-size: 16px; ">=</span><span style="font-family: Verdana; font-size: 16px; ">ssidtext.getMeasuredWidth();</span><br /><span style="font-family: Verdana; font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;<span style="color: #0055ff; font-family: Verdana; font-size: 16px; ">int</span>&nbsp;<span style="font-family: Verdana; font-size: 16px; ">height</span>&nbsp;<span style="font-family: Verdana; font-size: 16px; ">=</span><span style="font-family: Verdana; font-size: 16px; ">ssidtext.getMeasuredHeight();</span><br /><br /><span style="font-size: 16px; ">方法二：</span></p><p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; ">&nbsp;</p><p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; "><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ViewTreeObserver vto&nbsp;</span><span style="font-size: 16px; ">=</span>&nbsp;<span style="font-size: 16px; ">ssidtext.getViewTreeObserver();</span><br /><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vto.addOnPreDrawListener(</span><span style="color: #0055ff; font-size: 16px; ">new</span>&nbsp;<span style="font-size: 16px; ">ViewTreeObserver.OnPreDrawListener() {</span><br /><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;<span style="font-size: 16px; ">public</span>&nbsp;<span style="color: #0055ff; font-size: 16px; ">boolean</span>&nbsp;<span style="font-size: 16px; ">onPreDraw() {</span><br /><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;<span style="color: #0055ff; font-size: 16px; ">int</span>&nbsp;<span style="font-size: 16px; ">height</span>&nbsp;<span style="font-size: 16px; ">=</span>&nbsp;<span style="font-size: 16px; ">ssidtext.getMeasuredHeight();</span><br /><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;<span style="color: #0055ff; font-size: 16px; ">int</span>&nbsp;<span style="font-size: 16px; ">width</span>&nbsp;<span style="font-size: 16px; ">=</span>&nbsp;<span style="font-size: 16px; ">ssidtext.getMeasuredWidth();</span><br /><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;<span style="color: #0055ff; font-size: 16px; ">return</span>&nbsp;<span style="color: #0055ff; font-size: 16px; ">true</span><span style="font-size: 16px; ">;</span><br /><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><br /><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br /><br /><br /></span><span style="font-size: 16px; ">另外还搜索到一个方法：</span><span style="font-size: 16px; "><br />-----------------------------------------------------------<br />先贴到这里。正在做试验。（<strong>试验完毕，这种方法得到的控件宽是正确的。</strong>）<br /></span></p><p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; "><span style="font-size: 16px; ">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><span style="font-size: 16px; ">ViewTreeObserver vto = mArrowUp.getViewTreeObserver(); &nbsp;</span></p><p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; "><span style="font-size: 16px; ">&nbsp; &nbsp; &nbsp; &nbsp; vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { &nbsp;</span></p><p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; "><span style="font-size: 16px; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override &nbsp;</span></p><p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; "><span style="font-size: 16px; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void onGlobalLayout() { &nbsp;</span></p><p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; "><span style="font-size: 16px; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><em><span style="font-size: 16px; ">mArrowUp</span></em><span style="font-size: 16px; ">.getViewTreeObserver().removeGlobalOnLayoutListener(this); &nbsp;</span></p><p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; "><span style="font-size: 16px; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.e("Width",Integer.toString(mArrowUp.getWidth())); &nbsp;</span></p><p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; "></p><p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; "></p><p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; "><span style="font-size: 16px; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp;</span></p><p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; "><span style="font-size: 16px; ">&nbsp; &nbsp; &nbsp; &nbsp; }); &nbsp;</span></p><p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; "></p><p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; ">&nbsp;</p><p style="font-family: Arial; font-size: 12px; background-color: #f3fafd; "><span style="font-size: 16px; ">具体用哪一种可以根据需求自己选择</span></p><img src ="http://www.cnitblog.com/asfman/aggbug/81306.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2012-06-14 18:33 <a href="http://www.cnitblog.com/asfman/articles/81306.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>android sms</title><link>http://www.cnitblog.com/asfman/articles/81207.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Tue, 12 Jun 2012 09:38:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/81207.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/81207.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/81207.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/81207.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/81207.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: from&nbsp;http://mobiforge.com/developing/story/sms-messaging-androidSending SMS MessagesTo get started, first launch Eclipse and create a new Android project. Name the project as shown in Figure 1.Fi...&nbsp;&nbsp;<a href='http://www.cnitblog.com/asfman/articles/81207.html'>阅读全文</a><img src ="http://www.cnitblog.com/asfman/aggbug/81207.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2012-06-12 17:38 <a href="http://www.cnitblog.com/asfman/articles/81207.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>shouldOverrideUrlLoading 不触发的情况</title><link>http://www.cnitblog.com/asfman/articles/81079.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Sat, 09 Jun 2012 05:15:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/81079.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/81079.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/81079.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/81079.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/81079.html</trackback:ping><description><![CDATA[<p style="margin-bottom: 1em; padding-top: 0px; padding-bottom: 0px; border: 0px; font-size: 11px; vertical-align: baseline; clear: both; word-wrap: break-word; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; line-height: 14px; text-align: left; ">After some research I conclude that despite what most of the tutorials out there say,&nbsp;<code style="margin: 0px; padding: 1px 5px; border: 0px; vertical-align: baseline; background-color: #eeeeee; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; ">shouldOverrideUrlLoading()</code>&nbsp;does not get called when:</p><ol style="margin: 0px 0px 1em 30px; padding: 0px; border: 0px; font-size: 11px; vertical-align: baseline; list-style-position: initial; list-style-image: initial; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; line-height: 14px; text-align: left; "><li style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; word-wrap: break-word; "><p style="margin-bottom: 1em; padding-top: 0px; padding-bottom: 0px; border: 0px; vertical-align: baseline; clear: both; word-wrap: break-word; ">You load a URL like</p><pre prettyprint"="" style="margin-top: 0px; margin-bottom: 10px; padding: 5px; border: 0px; vertical-align: baseline; background-color: #eeeeee; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; overflow: auto; width: auto; max-height: 600px; word-wrap: normal; "><code style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; "><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; ">loadUrl</span><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; ">(</span><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: #800000; ">"http://www.google.com"</span><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; ">);</span><span style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; "><br /></span></code></pre></li><li style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; word-wrap: break-word; "><p style="margin-bottom: 1em; padding-top: 0px; padding-bottom: 0px; border: 0px; vertical-align: baseline; clear: both; word-wrap: break-word; ">The browser redirects the user automatically via an HTTP Redirect.</p></li></ol><p style="margin-bottom: 1em; padding-top: 0px; padding-bottom: 0px; border: 0px; font-size: 11px; vertical-align: baseline; clear: both; word-wrap: break-word; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; line-height: 14px; text-align: left; "><em style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; ">It does however</em>, get called when you you click on a link inside a webpage inside the webview. IIRC the twitter authorization uses an HTTP Redirect.. Bummer, this would be helpful if it worked how all the tutorials say it does. I think this is from a very old version the Android API...<br /><br /><div><span style="white-space:pre">	</span>/*&nbsp;</div><div><span style="white-space:pre">	</span> * 有些情况不会触发这个方法，所以需要在onPageStarted里进行补漏捕获</div><div><span style="white-space:pre">	</span> * 比如：</div><div><span style="white-space:pre">	</span> * webview第一次加载loadurl loadUrl("http://www.google.com");</div><div><span style="white-space:pre">	</span> * HTTP Redirect跳转</div><div><span style="white-space:pre">	</span> * 有时网页用脚本进行网页跳转(暂时忘了具体情况，待测)</div><div><span style="white-space:pre">	</span> * 经测location.href、location.replace、window.open进行跳转能捕获到</div><div><span style="white-space:pre">	</span> */</div></p><img src ="http://www.cnitblog.com/asfman/aggbug/81079.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2012-06-09 13:15 <a href="http://www.cnitblog.com/asfman/articles/81079.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转)Android复制Assets中大于1M的Zip压缩包，并解压到SD卡中</title><link>http://www.cnitblog.com/asfman/articles/81038.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Fri, 08 Jun 2012 05:37:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/81038.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/81038.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/81038.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/81038.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/81038.html</trackback:ping><description><![CDATA[<div>package com.demo.asset;</div><div>&nbsp;</div><div>&nbsp;import java.io.File;</div><div>&nbsp;import java.io.FileOutputStream;</div><div>&nbsp;import java.io.IOException;</div><div>&nbsp;import java.io.InputStream;</div><div>&nbsp;import java.io.OutputStream;</div><div>&nbsp;import java.util.Enumeration;</div><div>&nbsp;import java.util.zip.ZipEntry;</div><div>&nbsp;import java.util.zip.ZipException;</div><div>&nbsp;import java.util.zip.ZipFile;</div><div>&nbsp;</div><div>&nbsp;import android.app.Activity;</div><div>&nbsp;import android.os.Bundle;</div><div>&nbsp;import android.os.Environment;</div><div>&nbsp;</div><div>&nbsp;public class MainActivity extends Activity {</div><div>&nbsp; &nbsp; &nbsp;/** Called when the activity is first created. */</div><div>&nbsp;</div><div>&nbsp; &nbsp; &nbsp;private String ASSETS_NAME = "SETTING.zip";</div><div>&nbsp; &nbsp; &nbsp;private String DB_PATH = Environment.getExternalStorageDirectory() + "/word/rar/";</div><div>&nbsp; &nbsp; &nbsp;private String DB_TOPATH = Environment.getExternalStorageDirectory() + "/word/db/";</div><div>&nbsp; &nbsp; &nbsp;private String DB_NAME = "SETTING.zip";</div><div>&nbsp;</div><div>&nbsp; &nbsp; &nbsp;@Override</div><div>&nbsp; &nbsp; &nbsp;public void onCreate(Bundle savedInstanceState) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;super.onCreate(savedInstanceState);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setContentView(R.layout.main);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//拷贝文件</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;copyDataBase();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} catch (IOException e) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// TODO Auto-generated catch block</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;e.printStackTrace();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//解压文件</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String path= DB_PATH + DB_NAME;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;File zipFile= new File(path);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;upZipFile(zipFile, DB_TOPATH);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} catch (ZipException e) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// TODO Auto-generated catch block</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;e.printStackTrace();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} catch (IOException e) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// TODO Auto-generated catch block</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;e.printStackTrace();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div>&nbsp; &nbsp; &nbsp;}</div><div>&nbsp;</div><div>&nbsp; &nbsp; &nbsp;private void copyDataBase() throws IOException {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Path to the just created empty db</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String outFileName = DB_PATH + DB_NAME;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 判断目录是否存在。如不存在则创建一个目录</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;File file = new File(DB_PATH);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!file.exists()) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;file.mkdirs();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;file = new File(outFileName);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!file.exists()) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;file.createNewFile();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Open your local db as the input stream</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InputStream myInput = this.getAssets().open(ASSETS_NAME);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Open the empty db as the output stream128</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OutputStream myOutput = new FileOutputStream(outFileName);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// transfer bytes from the inputfile to the outputfile130</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;byte[] buffer = new byte[1024];</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int length;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while ((length = myInput.read(buffer)) &gt; 0) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;myOutput.write(buffer, 0, length);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Close the streams136</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;myOutput.flush();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;myOutput.close();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;myInput.close();</div><div>&nbsp; &nbsp; &nbsp;}</div><div>&nbsp;</div><div>&nbsp; &nbsp; &nbsp;/**</div><div>&nbsp; &nbsp; &nbsp; * 解压缩一个文件</div><div>&nbsp; &nbsp; &nbsp; *&nbsp;</div><div>&nbsp; &nbsp; &nbsp; * @param zipFile</div><div>&nbsp; &nbsp; &nbsp; * &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;要解压的压缩文件</div><div>&nbsp; &nbsp; &nbsp; * @param folderPath</div><div>&nbsp; &nbsp; &nbsp; * &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;解压缩的目标目录</div><div>&nbsp; &nbsp; &nbsp; * @throws IOException</div><div>&nbsp; &nbsp; &nbsp; * &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 当解压缩过程出错时抛出</div><div>&nbsp; &nbsp; &nbsp; */</div><div>&nbsp; &nbsp; &nbsp;public void upZipFile(File zipFile, String folderPath) throws ZipException, IOException {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;File desDir = new File(folderPath);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!desDir.exists()) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;desDir.mkdirs();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div>&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ZipFile zf = new ZipFile(zipFile);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (Enumeration&lt;?&gt; entries = zf.entries(); entries.hasMoreElements();) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ZipEntry entry = ((ZipEntry) entries.nextElement());</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InputStream in = zf.getInputStream(entry);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String str = folderPath + File.separator + entry.getName();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;str = new String(str.getBytes("8859_1"), "GB2312");</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;File desFile = new File(str);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!desFile.exists()) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;File fileParentDir = desFile.getParentFile();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!fileParentDir.exists()) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fileParentDir.mkdirs();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;desFile.createNewFile();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OutputStream out = new FileOutputStream(desFile);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;byte buffer[] = new byte[1024];</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int realLength;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while ((realLength = in.read(buffer)) &gt; 0) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;out.write(buffer, 0, realLength);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;in.close();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;out.close();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div>&nbsp; &nbsp; &nbsp;}</div><div>&nbsp;</div><div>&nbsp;}</div><img src ="http://www.cnitblog.com/asfman/aggbug/81038.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2012-06-08 13:37 <a href="http://www.cnitblog.com/asfman/articles/81038.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于imageview的按比列缩放</title><link>http://www.cnitblog.com/asfman/articles/80594.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Thu, 31 May 2012 04:08:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/80594.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/80594.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/80594.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/80594.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/80594.html</trackback:ping><description><![CDATA[<h4>发现ImageView 默认private boolean mAdjustViewBounds = false;<br />也就是说默认imageview不是按比例缩放的。<br />需要自己设置为true<br /><br /><div>&nbsp; &nbsp; /**</div><div>&nbsp; &nbsp; &nbsp;* Set this to true if you want the ImageView to adjust its bounds</div><div>&nbsp; &nbsp; &nbsp;* to preserve the aspect ratio of its drawable.</div><div>&nbsp; &nbsp; &nbsp;* @param adjustViewBounds Whether to adjust the bounds of this view</div><div>&nbsp; &nbsp; &nbsp;* to presrve the original aspect ratio of the drawable</div><div>&nbsp; &nbsp; &nbsp;*&nbsp;</div><div>&nbsp; &nbsp; &nbsp;* @attr ref android.R.styleable#ImageView_adjustViewBounds</div><div>&nbsp; &nbsp; &nbsp;*/</div><div>&nbsp; &nbsp; @android.view.RemotableViewMethod</div><div>&nbsp; &nbsp; public void setAdjustViewBounds(boolean adjustViewBounds) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; mAdjustViewBounds = adjustViewBounds;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; if (adjustViewBounds) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setScaleType(ScaleType.FIT_CENTER);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; }</div>android:adjustViewBounds</h4><div style="margin: 0.5em 0.25em; padding: 0px; border: 0px; color: #333333; font-family: arial, sans-serif; font-size: 14px; "><div jd-tagdescr"="" style="margin: 0.25em 0px 0.75em; padding: 0px; border: 0px; line-height: 1em; "><p style="margin-top: 0.5em; margin-bottom: 0.5em; padding-top: 0px; padding-bottom: 0px; border: 0px; line-height: 1.3em; ">Set this to true if you want the ImageView to adjust its bounds to preserve the aspect ratio of its drawable.</p></div></div><img src ="http://www.cnitblog.com/asfman/aggbug/80594.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2012-05-31 12:08 <a href="http://www.cnitblog.com/asfman/articles/80594.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>（转）android 开发小结</title><link>http://www.cnitblog.com/asfman/articles/80562.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Wed, 30 May 2012 10:40:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/80562.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/80562.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/80562.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/80562.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/80562.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1：Android Permission denied(不允许连接Socket) 错误原因是： 需要访问到网络，所以，在AndroidManifest.xml中，需要进行如下配置：&nbsp;&lt;uses-permission android:name="android.permission.INTERNET" /&gt;&nbsp;&nbsp;2：ListView滚动变黑解决方法ListVi...&nbsp;&nbsp;<a href='http://www.cnitblog.com/asfman/articles/80562.html'>阅读全文</a><img src ="http://www.cnitblog.com/asfman/aggbug/80562.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2012-05-30 18:40 <a href="http://www.cnitblog.com/asfman/articles/80562.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>改变textView默认字体样式</title><link>http://www.cnitblog.com/asfman/articles/80136.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Mon, 21 May 2012 05:48:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/80136.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/80136.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/80136.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/80136.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/80136.html</trackback:ping><description><![CDATA[<div>&nbsp; &nbsp; &nbsp; &nbsp;查看源码可以发现，通过修改theme的textViewStyle进行修改，最终添加一个类似与系统的syle&nbsp;TextAppearance.Small就可以</div><div>&lt;item name="textViewStyle"&gt;@android:style/Widget.TextView&lt;/item&gt;</div><div></div><div>&nbsp; &nbsp; &lt;style name="Widget.TextView"&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;item name="android:textAppearance"&gt;?android:attr/textAppearanceSmall&lt;/item&gt;</div><div>&nbsp; &nbsp; &lt;/style&gt;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&lt;item name="textAppearanceSmall"&gt;@android:style/TextAppearance.Small&lt;/item&gt;</div><div></div><div>&nbsp; &nbsp; &lt;style name="TextAppearance.Small"&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;item name="android:textSize"&gt;14sp&lt;/item&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;item name="android:textStyle"&gt;normal&lt;/item&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;item name="android:textColor"&gt;?textColorSecondary&lt;/item&gt;</div><div>&nbsp; &nbsp; &lt;/style&gt;</div><img src ="http://www.cnitblog.com/asfman/aggbug/80136.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2012-05-21 13:48 <a href="http://www.cnitblog.com/asfman/articles/80136.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Paint drawText文字居中 </title><link>http://www.cnitblog.com/asfman/articles/80106.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Sun, 20 May 2012 10:52:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/80106.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/80106.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/80106.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/80106.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/80106.html</trackback:ping><description><![CDATA[<span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; ">在宽width高height的画布上画一字符串，使字符串水平竖直居中：&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; ">水平居中很简单,paint.setTextAlign(Align.CENTER);然后drawText的x坐标设置为width / 2即可，竖直居中稍显麻烦，可以使用FontMetrics对象计算文字高度，然后计算baseline，使文字垂直居中，代码如下：&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; ">Paint paint = new Paint();&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; ">paint.setColor(Color.BLUE);&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; ">paint.setTextSize(18);&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; ">paint.setTextAlign(Align.CENTER);&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; ">FontMetrics fontMetrics = paint.getFontMetrics();&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; ">// 计算文字高度&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; ">float fontHeight = fontMetrics.bottom - fontMetrics.top;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; ">// 计算文字baseline&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; ">float textBaseY = height - (height - fontHeight) / 2 - fontMetrics.bottom;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; text-align: left; ">canvas.drawText(text, width / 2, textBaseY, paint);</span><img src ="http://www.cnitblog.com/asfman/aggbug/80106.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2012-05-20 18:52 <a href="http://www.cnitblog.com/asfman/articles/80106.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>android gradient</title><link>http://www.cnitblog.com/asfman/articles/79910.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Tue, 15 May 2012 02:36:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/79910.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/79910.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/79910.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/79910.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/79910.html</trackback:ping><description><![CDATA[<dt id="gradient-element" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 17px; font-size: 14px; color: #333333; font-family: arial, sans-serif; "><code style="color: #000088; line-height: 1em; ">&lt;gradient&gt;</code></dt><dd style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 17px; color: #333333; font-family: arial, sans-serif; font-size: 14px; ">Specifies a gradient color for the shape.<p style="margin-top: 1em; padding-top: 0px; padding-bottom: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 1.3em; font-variant: small-caps; font-size: 1.2em; ">attributes:</p><dl style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 1.3em; "><dt style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 1.3em; font-size: 1em; "><code style="color: #882288; line-height: 1em; ">android:angle</code></dt><dd style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 1.3em; "><em>Integer</em>. The angle for the gradient, in degrees. 0 is left to right, 90 is bottom to top. It must be a multiple of 45. Default is 0.</dd><dt style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 1.3em; font-size: 1em; "><code style="color: #882288; line-height: 1em; ">android:centerX</code></dt><dd style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 1.3em; "><em>Float</em>. The relative X-position for the center of the gradient (0 - 1.0).</dd><dt style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 1.3em; font-size: 1em; "><code style="color: #882288; line-height: 1em; ">android:centerY</code></dt><dd style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 1.3em; "><em>Float</em>. The relative Y-position for the center of the gradient (0 - 1.0).</dd><dt style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 1.3em; font-size: 1em; "><code style="color: #882288; line-height: 1em; ">android:centerColor</code></dt><dd style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 1.3em; "><em>Color</em>. Optional color that comes between the start and end colors, as a hexadecimal value or&nbsp;<a href="http://developer.android.com/guide/topics/resources/more-resources.html#Color" style="color: #006699; ">color resource</a>.</dd><dt style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 1.3em; font-size: 1em; "><code style="color: #882288; line-height: 1em; ">android:endColor</code></dt><dd style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 1.3em; "><em>Color</em>. The ending color, as a hexadecimal value or&nbsp;<a href="http://developer.android.com/guide/topics/resources/more-resources.html#Color" style="color: #006699; ">color resource</a>.</dd><dt style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 1.3em; font-size: 1em; "><code style="color: #882288; line-height: 1em; ">android:gradientRadius</code></dt><dd style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 1.3em; "><em>Float</em>. The radius for the gradient. Only applied when&nbsp;<code style="color: #007000; line-height: 1em; ">android:type="radial"</code>.</dd><dt style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 1.3em; font-size: 1em; "><code style="color: #882288; line-height: 1em; ">android:startColor</code></dt><dd style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 1.3em; "><em>Color</em>. The starting color, as a hexadecimal value or&nbsp;<a href="http://developer.android.com/guide/topics/resources/more-resources.html#Color" style="color: #006699; ">color resource</a>.</dd><dt style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 1.3em; font-size: 1em; "><code style="color: #882288; line-height: 1em; ">android:type</code></dt><dd style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 1.3em; "><em>Keyword</em>. The type of gradient pattern to apply. Valid values are:<table style="margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 1em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1em; border-collapse: collapse; empty-cells: show; "><tbody style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; "><tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; "><th style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 6px; padding-right: 12px; padding-bottom: 6px; padding-left: 12px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-image: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; text-align: left; vertical-align: top; background-color: #dee8f1; ">Value</th><th style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 6px; padding-right: 12px; padding-bottom: 6px; padding-left: 12px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-image: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; text-align: left; vertical-align: top; background-color: #dee8f1; ">Description</th></tr><tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; "><td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 6px; padding-right: 12px; padding-bottom: 6px; padding-left: 12px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; text-align: left; vertical-align: top; background-color: inherit; "><code style="color: #007000; line-height: 1em; ">"linear"</code></td><td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 6px; padding-right: 12px; padding-bottom: 6px; padding-left: 12px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; text-align: left; vertical-align: top; background-color: inherit; ">A linear gradient. This is the default.</td></tr><tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; "><td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 6px; padding-right: 12px; padding-bottom: 6px; padding-left: 12px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; text-align: left; vertical-align: top; background-color: inherit; "><code style="color: #007000; line-height: 1em; ">"radial"</code></td><td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 6px; padding-right: 12px; padding-bottom: 6px; padding-left: 12px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; text-align: left; vertical-align: top; background-color: inherit; ">A radial gradient. The start color is the center color.</td></tr><tr style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; "><td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 6px; padding-right: 12px; padding-bottom: 6px; padding-left: 12px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; text-align: left; vertical-align: top; background-color: inherit; "><code style="color: #007000; line-height: 1em; ">"sweep"</code></td><td style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 6px; padding-right: 12px; padding-bottom: 6px; padding-left: 12px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; text-align: left; vertical-align: top; background-color: inherit; ">A sweeping line gradient.</td></tr></tbody></table></dd><dt style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; line-height: 1.3em; font-size: 1em; "><code style="color: #882288; line-height: 1em; ">android:useLevel</code></dt></dl></dd><img src ="http://www.cnitblog.com/asfman/aggbug/79910.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2012-05-15 10:36 <a href="http://www.cnitblog.com/asfman/articles/79910.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>蛋疼的ViewStub</title><link>http://www.cnitblog.com/asfman/articles/79747.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Fri, 11 May 2012 09:36:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/79747.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/79747.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/79747.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/79747.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/79747.html</trackback:ping><description><![CDATA[用惯了include标签，直接layout属性引入布局。ViewStub也这么去做，结果检查了n久，才发现它需要android:layout引入。真他吗的蛋疼<img src ="http://www.cnitblog.com/asfman/aggbug/79747.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2012-05-11 17:36 <a href="http://www.cnitblog.com/asfman/articles/79747.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>android eclipse java.lang.NoClassDefFoundError</title><link>http://www.cnitblog.com/asfman/articles/79204.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Mon, 23 Apr 2012 04:06:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/79204.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/79204.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/79204.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/79204.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/79204.html</trackback:ping><description><![CDATA[这个问题是有eclipse adt最新插件引起的bug，adt打包的时候只会引入libs文件夹下的类库。<br />所以只要把lib等引入库的文件夹改名成libs，重启eclipse就能解决<a href="http://code.google.com/p/android/issues/detail?id=28557"><br />http://code.google.com/p/android/issues/detail?id=28557</a><img src ="http://www.cnitblog.com/asfman/aggbug/79204.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2012-04-23 12:06 <a href="http://www.cnitblog.com/asfman/articles/79204.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Gallery one by one override OnFling</title><link>http://www.cnitblog.com/asfman/articles/77969.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Wed, 07 Mar 2012 10:23:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/77969.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/77969.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/77969.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/77969.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/77969.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;com.aizheke.aizheked.widget;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;com.aizheke.aizheked.utils.AzkHelper;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;android.content.Context;<br /><span style="color: #0000FF; ">import</span>&nbsp;android.util.AttributeSet;<br /><span style="color: #0000FF; ">import</span>&nbsp;android.view.KeyEvent;<br /><span style="color: #0000FF; ">import</span>&nbsp;android.view.MotionEvent;<br /><span style="color: #0000FF; ">import</span>&nbsp;android.widget.Gallery;<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;OnebyoneGallery&nbsp;<span style="color: #0000FF; ">extends</span>&nbsp;Gallery&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;OnebyoneGallery(Context&nbsp;context)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">super</span>(context);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;OnebyoneGallery(Context&nbsp;context,&nbsp;AttributeSet&nbsp;attrs)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">super</span>(context,&nbsp;attrs);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;OnebyoneGallery(Context&nbsp;context,&nbsp;AttributeSet&nbsp;attrs,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;defStyle)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">super</span>(context,&nbsp;attrs,&nbsp;defStyle);<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;isScrollingLeft(MotionEvent&nbsp;e1,&nbsp;MotionEvent&nbsp;e2)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AzkHelper.showLog("gallery:"&nbsp;+&nbsp;e2.getX()&nbsp;+&nbsp;",&nbsp;"&nbsp;+&nbsp;e1.getX());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;e2.getX()&nbsp;&gt;&nbsp;e1.getX();<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;onFling(MotionEvent&nbsp;e1,&nbsp;MotionEvent&nbsp;e2,&nbsp;<span style="color: #0000FF; ">float</span>&nbsp;velocityX,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">float</span>&nbsp;velocityY)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;kEvent;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(isScrollingLeft(e1,&nbsp;e2))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;Check&nbsp;if&nbsp;scrolling&nbsp;left</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kEvent&nbsp;=&nbsp;KeyEvent.KEYCODE_DPAD_LEFT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;Otherwise&nbsp;scrolling&nbsp;right</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kEvent&nbsp;=&nbsp;KeyEvent.KEYCODE_DPAD_RIGHT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onKeyDown(kEvent,&nbsp;<span style="color: #0000FF; ">null</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">true</span>;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div><img src ="http://www.cnitblog.com/asfman/aggbug/77969.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2012-03-07 18:23 <a href="http://www.cnitblog.com/asfman/articles/77969.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于broadcast receiver</title><link>http://www.cnitblog.com/asfman/articles/77692.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Mon, 20 Feb 2012 08:14:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/77692.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/77692.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/77692.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/77692.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/77692.html</trackback:ping><description><![CDATA[<div><div><span style="white-space:pre">		</span>&lt;receiver android:name=".receiver.ReLoginReceiver"&gt;</div><div><span style="white-space:pre">			</span>&lt;intent-filter&gt;</div><div><span style="white-space:pre">				</span>&lt;action android:name="com.aizheke.aizheked.action.reLogin" /&gt;</div><div><span style="white-space:pre">			</span>&lt;/intent-filter&gt;</div><div><span style="white-space:pre">		</span>&lt;/receiver&gt;<br /><br />还没找到相关解释，android:name不能设置成@string/xxx，否者用sendBroadcast(new Intent("com.aizheke.aizheked.action.reLogin"))就永远不会触发onReceive</div></div><img src ="http://www.cnitblog.com/asfman/aggbug/77692.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2012-02-20 16:14 <a href="http://www.cnitblog.com/asfman/articles/77692.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转：HTTP请求如何带参</title><link>http://www.cnitblog.com/asfman/articles/77533.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Thu, 09 Feb 2012 03:15:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/77533.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/77533.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/77533.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/77533.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/77533.html</trackback:ping><description><![CDATA[<div><h1><a href="http://www.cnblogs.com/xirihanlin/archive/2011/12/05/2276772.html">http://www.cnblogs.com/xirihanlin/archive/2011/12/05/2276772.html<br /></a><a id="cb_post_title_url" href="http://www.cnblogs.com/xirihanlin/archive/2011/12/05/2276772.html" style="color: #1a8bc8; "><br /><font color="#1a8bc8">HTTP请求如何带参</font></a></h1><div id="cnblogs_post_body" style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; "><div>这两天正好作一份API的接口文档，关于HTTP request如何传递参数不是很清楚，这里转载了他人的文档，让我明白了很多。。</div><p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">&nbsp;<a href="http://tomfish88.iteye.com/category/138221?show_full=true" style="color: #1a8bc8; ">http://tomfish88.iteye.com/category/138221?show_full=true</a>&nbsp;</p><p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">&nbsp;----------------</p><p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; "><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; ">HttpClient程序包是一个实现了 HTTP 协议的客户端编程工具包，要想熟练的掌握它，必须熟悉 HTTP协议。一个最简单的调用如下：&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">import java.io.IOException;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">import org.apache.http.HttpResponse;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">import org.apache.http.client.ClientProtocolException;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">import org.apache.http.client.HttpClient;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">import org.apache.http.client.methods.HttpGet;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">import org.apache.http.client.methods.HttpUriRequest;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">import org.apache.http.impl.client.DefaultHttpClient;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">public class Test {&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp; public static void main(String[] args) {&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 核心应用类&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpClient httpClient = new DefaultHttpClient();&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // HTTP请求&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpUriRequest request =&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new HttpGet("http://localhost/index.html");&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 打印请求信息&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(request.getRequestLine());&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 发送请求，返回响应&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpResponse response = httpClient.execute(request);&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 打印响应信息&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(response.getStatusLine());&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (ClientProtocolException e) {&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 协议错误&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (IOException e) {&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 网络异常&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp; }&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">}&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">如果HTTP服务器正常并且存在相应的服务，则上例会打印出两行结果：&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp; GET http://localhost/index.html HTTP/1.1&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp; HTTP/1.1 200 OK&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">核心对象httpClient的调用非常直观，其execute方法传入一个request对象，返回一个response对象。使用 httpClient发出HTTP请求时，系统可能抛出两种异常，分别是ClientProtocolException和IOException。第一种异常的发生通常是协议错误导致，如在构造HttpGet对象时传入的协议不对（例如不小心将&#8221;http&#8221;写成&#8221;htp&#8221;），或者服务器端返回的内容不符合HTTP协议要求等；第二种异常一般是由于网络原因引起的异常，如HTTP服务器未启动等。&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">从实际应用的角度看，HTTP协议由两大部分组成：HTTP请求和HTTP响应。那么HttpClient程序包是如何实现HTTP客户端应用的呢？实现过程中需要注意哪些问题呢？&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">HTTP请求&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">HTTP 1.1由以下几种请求组成：GET, HEAD, POST, PUT, DELETE, TRACE and OPTIONS， 程序包中分别用HttpGet, HttpHead, HttpPost, HttpPut, HttpDelete, HttpTrace, and HttpOptions 这几个类创建请求。所有的这些类均实现了HttpUriRequest接口，故可以作为execute的执行参数使用。&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">所有请求中最常用的是GET与POST两种请求，与创建GET请求的方法相同，可以用如下方法创建一个POST请求：&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">HttpUriRequest request = new HttpPost(&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "http://localhost/index.html");&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">HTTP请求格式告诉我们，有两个位置或者说两种方式可以为request提供参数：request-line方式与request-body方式。&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">request-line&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">request-line方式是指在请求行上通过URI直接提供参数。&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">（1）&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">我们可以在生成request对象时提供带参数的URI，如：&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">HttpUriRequest request = new HttpGet(&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "http://localhost/index.html?param1=value1&amp;param2=value2");&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">（2）&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">另外，HttpClient程序包为我们提供了URIUtils工具类，可以通过它生成带参数的URI，如：&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">URI uri = URIUtils.createURI("http", "localhost", -1, "/index.html",&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp; "param1=value1&amp;param2=value2", null);&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">HttpUriRequest request = new HttpGet(uri);&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">System.out.println(request.getURI());&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">上例的打印结果如下：&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp; http://localhost/index.html?param1=value1&amp;param2=value2&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">（3）&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">需要注意的是，如果参数中含有中文，需将参数进行URLEncoding处理，如：&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">String param = "param1=" + URLEncoder.encode("中国", "UTF-8") + "&amp;param2=value2";&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">URI uri = URIUtils.createURI("http", "localhost", 8080,&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">"/sshsky/index.html", param, null);&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">System.out.println(uri);&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">上例的打印结果如下：&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp; http://localhost/index.html?param1=%E4%B8%AD%E5%9B%BD&amp;param2=value2&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">（4）&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">对于参数的URLEncoding处理，HttpClient程序包为我们准备了另一个工具类：URLEncodedUtils。通过它，我们可以直观的（但是比较复杂）生成URI，如：&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">List params = new ArrayList();&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">params.add(new BasicNameValuePair("param1", "中国"));&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">params.add(new BasicNameValuePair("param2", "value2"));&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">String param = URLEncodedUtils.format(params, "UTF-8");&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">URI uri = URIUtils.createURI("http", "localhost", 8080,&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">"/sshsky/index.html", param, null);&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">System.out.println(uri);&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">上例的打印结果如下：&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp; http://localhost/index.html?param1=%E4%B8%AD%E5%9B%BD&amp;param2=value2&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">request-body&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">与request-line方式不同，request-body方式是在request-body中提供参数，此方式只能用于POST请求。在 HttpClient程序包中有两个类可以完成此项工作，它们分别是UrlEncodedFormEntity类与MultipartEntity类。这两个类均实现了HttpEntity接口。&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">（1）&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">使用最多的是UrlEncodedFormEntity类。通过该类创建的对象可以模拟传统的HTML表单传送POST请求中的参数。如下面的表单：&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&lt;form action="http://localhost/index.html" method="POST"&gt;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp; &lt;input type="text" name="param1" value="中国"/&gt;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp; &lt;input type="text" name="param2" value="value2"/&gt;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp; &lt;inupt type="submit" value="submit"/&gt;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&lt;/form&gt;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">我们可以用下面的代码实现：&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">List formParams = new ArrayList();&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">formParams.add(new BasicNameValuePair("param1", "中国"));&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">formParams.add(new BasicNameValuePair("param2", "value2"));&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">HttpEntity entity = new UrlEncodedFormEntity(formParams, "UTF-8");&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">HttpPost request = new HttpPost(&#8220;http://localhost/index.html&#8221;);&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">request.setEntity(entity);&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">当然，如果想查看HTTP数据格式，可以通过HttpEntity对象的各种方法取得。如：&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">List formParams = new ArrayList();&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">formParams.add(new BasicNameValuePair("param1", "中国"));&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">formParams.add(new BasicNameValuePair("param2", "value2"));&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formParams, "UTF-8");&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">System.out.println(entity.getContentType());&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">System.out.println(entity.getContentLength());&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">System.out.println(EntityUtils.getContentCharSet(entity));&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">System.out.println(EntityUtils.toString(entity));&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">上例的打印结果如下：&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp; Content-Type: application/x-www-form-urlencoded; charset=UTF-8&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp; 39&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp; UTF-8&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp; param1=%E4%B8%AD%E5%9B%BD&amp;param2=value2&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">（2）&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">除了传统的application/x-www-form-urlencoded表单，我们另一个经常用到的是上传文件用的表单，这种表单的类型为 multipart/form-data。在HttpClient程序扩展包（HttpMime）中专门有一个类与之对应，那就是 MultipartEntity类。此类同样实现了HttpEntity接口。如下面的表单：&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&lt;form action="http://localhost/index.html" method="POST"&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enctype="multipart/form-data"&gt;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp; &lt;input type="text" name="param1" value="中国"/&gt;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp; &lt;input type="text" name="param2" value="value2"/&gt;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp; &lt;input type="file" name="param3"/&gt;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&nbsp;&nbsp;&nbsp; &lt;inupt type="submit" value="submit"/&gt;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">&lt;/form&gt;&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">我们可以用下面的代码实现：&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">MultipartEntity entity = new MultipartEntity();&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">entity.addPart("param1", new StringBody("中国", Charset.forName("UTF-8")));&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">entity.addPart("param2", new StringBody("value2", Charset.forName("UTF-8")));&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">entity.addPart("param3", new FileBody(new File("C:\\1.txt")));&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">HttpPost request = new HttpPost(&#8220;http://localhost/index.html&#8221;);&nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; text-align: left; " /><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; text-align: left; ">request.setEntity(entity);&nbsp;</span></p></div></div><img src ="http://www.cnitblog.com/asfman/aggbug/77533.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2012-02-09 11:15 <a href="http://www.cnitblog.com/asfman/articles/77533.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>android window 一些属性说明</title><link>http://www.cnitblog.com/asfman/articles/76783.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Thu, 22 Dec 2011 07:33:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/76783.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/76783.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/76783.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/76783.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/76783.html</trackback:ping><description><![CDATA[<div><div>&lt;item name="android:windowFrame"&gt;@null&lt;/item&gt; ：Dialog的windowFrame框为无</div><div>&lt;item name="android:windowIsFloating"&gt;true&lt;/item&gt;：是否浮现在activity之上</div><div>&lt;item name="android:windowIsTranslucent"&gt;false&lt;/item&gt;:是否半透明</div><div>&lt;item name="android:windowNoTitle"&gt;true&lt;/item&gt;:是否显示title</div><div>&lt;item name="android:windowBackground"&gt;@drawable/dia_bg&lt;/item&gt;:设置dialog的背景</div><div>&lt;item name="android:backgroundDimEnabled"&gt;false&lt;/item&gt;: 背景是否模糊显示</div></div><img src ="http://www.cnitblog.com/asfman/aggbug/76783.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2011-12-22 15:33 <a href="http://www.cnitblog.com/asfman/articles/76783.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>蛋疼的selector</title><link>http://www.cnitblog.com/asfman/articles/76445.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Mon, 28 Nov 2011 10:36:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/76445.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/76445.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/76445.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/76445.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/76445.html</trackback:ping><description><![CDATA[<div><div>&lt;?xml version="1.0" encoding="utf-8"?&gt;</div><div>&lt;selector xmlns:android="http://schemas.android.com/apk/res/android"&gt;</div><div>&nbsp; &nbsp; &lt;item android:state_selected="true" android:drawable="@drawable/ic_tab_sub_mid_on" /&gt;</div><div>&nbsp; &nbsp; &lt;item android:drawable="@drawable/ic_tab_sub_mid_off" /&gt;</div><div>&lt;/selector&gt;<br />fml: 上面的item 相互交换下位置就会使state_selected失效。因为是动态生成view和赋值selector导致我在不同的方向找了n久的问题。</div></div><img src ="http://www.cnitblog.com/asfman/aggbug/76445.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2011-11-28 18:36 <a href="http://www.cnitblog.com/asfman/articles/76445.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Gallery</title><link>http://www.cnitblog.com/asfman/articles/76416.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Tue, 22 Nov 2011 12:23:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/76416.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/76416.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/76416.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/76416.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/76416.html</trackback:ping><description><![CDATA[1.Gallery的<span class="Apple-style-span" style="background-color: #ffffff; ">convertView必须设置LayoutParams才能适应gallery的长度。<br />2.gallery adapter replace后必须设置setSelection(0)使选中项不保持</span><span class="Apple-style-span" style="background-color: #ffffff; ">为</span><span class="Apple-style-span" style="background-color: #ffffff; ">上个数据的位置状态。</span><img src ="http://www.cnitblog.com/asfman/aggbug/76416.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2011-11-22 20:23 <a href="http://www.cnitblog.com/asfman/articles/76416.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Notification PendingIntent</title><link>http://www.cnitblog.com/asfman/articles/76261.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Mon, 31 Oct 2011 08:47:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/76261.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/76261.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/76261.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/76261.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/76261.html</trackback:ping><description><![CDATA[<div><div>Notification 想要点击不触发任何intent：</div><div>PendingIntent contentIntent = PendingIntent.getActivity(</div><div><span style="white-space:pre">		</span>getApplicationContext(), 0, null, 0);<span style="white-space:pre">	</span></div><div><span style="white-space:pre">		</span></div><div>Notification 想要点击返回主程序，如果程序已经打开，效果要跟长按home或者点击launcher一样：</div><div>Intent intent = new Intent(this, Main.class);</div><div>多设置下面2个</div><div>intent.setAction(Intent.ACTION_MAIN);</div><div>intent.addCategory(Intent.CATEGORY_LAUNCHER);</div><div>PendingIntent contentIntent = PendingIntent.getActivity(</div><div><span style="white-space:pre">		</span>getApplicationContext(), 0, intent, 0);<span style="white-space:pre">	</span></div><div></div><div>Notification 点击不重复触发activity，只出现单个：</div><div>Intent intent = new Intent(this, someactivity.class);</div><div>需要设置flags</div><div>intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);</div><div>PendingIntent contentIntent = PendingIntent.getActivity(</div><div><span style="white-space:pre">		</span>getApplicationContext(), 0, intent, 0);<span style="white-space:pre">	<br />&nbsp;&nbsp;&nbsp;<br /><br /><br />Ps:<br /><br /></span><span class="Apple-style-span" style="color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 12px; line-height: 19px; "><div class="postTitle" style="font-size: 14.7px; font-weight: bold; margin-bottom: 10px; color: #355ea0; font-family: verdana, arial, sans-serif; background-image: url(http://www.cnitblog.com/Skins/clover/images/bg_title.jpg); padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 25px; height: 40px; background-position: 0% 0%; background-repeat: no-repeat no-repeat; "><a id="viewpost1_TitleUrl" class="postTitle2" href="http://www.cnitblog.com/asfman/articles/75240.html" style="color: #646464; ">singleTask 问题</a></div>当主Activity设置了lauchMode为singleTask的时候， 每次长按home返回的时候都会返回到主Activity。这并不是我们想要的结果。<br /><span class="Apple-style-span" style="font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 11px; line-height: 14px; background-color: #ffffff; "><p style="margin-bottom: 1em; padding-top: 0px; padding-bottom: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 11px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; "><span style="font-size: 12pt; ">This is not a bug. When an existed "singleTask" activity is launching, all other activities above it in the stack will be destroyed.</span></p><p style="margin-bottom: 1em; padding-top: 0px; padding-bottom: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 11px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; "><span style="font-size: 12pt; ">When you press HOME and launch the activity again, ActivityManger calls an intent{act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flat=FLAG_ACTIVITY_NEW_TASK|FLAG_ACTIVITY_RESET_IF_NEEDED cmp=A}, so the result is A &gt; B &gt; HOME &gt; A.</span></p><p style="margin-bottom: 1em; padding-top: 0px; padding-bottom: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 11px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; "><span style="font-size: 12pt; ">It's different when A's launchMode is "Standard". The task which contains A will come to the foreground and keep the state the same as before.</span></p><p style="margin-bottom: 1em; padding-top: 0px; padding-bottom: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 11px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; "><span style="font-size: 12pt; ">You can create a "Standard" activity eg. C as the launcher and startActivity(A) in the onCreate method of C</span></p><p style="margin-bottom: 1em; padding-top: 0px; padding-bottom: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 11px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; "><span style="font-size: 12pt; ">OR</span></p><p style="margin-bottom: 1em; padding-top: 0px; padding-bottom: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 11px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; "><span style="font-size: 12pt; ">Just remove the launchMode="singleTask" and set FLAG_ACTIVITY_CLEAR_TOP|FLAG_ACTIVITY_SINGLE_TOP flag whenever call an intent to A</span></p><div><span style="font-size: 12pt; "><br /></span></div></span></span></div></div><img src ="http://www.cnitblog.com/asfman/aggbug/76261.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2011-10-31 16:47 <a href="http://www.cnitblog.com/asfman/articles/76261.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>查看apk packagename</title><link>http://www.cnitblog.com/asfman/articles/76251.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Fri, 28 Oct 2011 06:46:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/76251.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/76251.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/76251.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/76251.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/76251.html</trackback:ping><description><![CDATA[<div><div>查看packagename</div><div>aapt debug badging yourpkg.apk</div><div>aapt dump badging &lt;path-to-apk&gt;</div></div><img src ="http://www.cnitblog.com/asfman/aggbug/76251.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2011-10-28 14:46 <a href="http://www.cnitblog.com/asfman/articles/76251.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转：什么是HTTP HEADERS？</title><link>http://www.cnitblog.com/asfman/articles/76183.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Mon, 24 Oct 2011 08:37:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/76183.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/76183.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/76183.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/76183.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/76183.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: http://www.cnblogs.com/guyoung/archive/2011/10/20/2218647.html什么是HTTP Headers？出自：http://rlog.cn/?p=521什么是HTTP HeadersHTTP是&#8220;Hypertext Transfer Protocol&#8221;的所写，整个万维网都在使用这种协议，几乎你在浏览器里看到的大部分内容都是通...&nbsp;&nbsp;<a href='http://www.cnitblog.com/asfman/articles/76183.html'>阅读全文</a><img src ="http://www.cnitblog.com/asfman/aggbug/76183.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2011-10-24 16:37 <a href="http://www.cnitblog.com/asfman/articles/76183.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于HttpClient应该注意的</title><link>http://www.cnitblog.com/asfman/articles/76026.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Thu, 13 Oct 2011 10:59:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/76026.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/76026.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/76026.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/76026.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/76026.html</trackback:ping><description><![CDATA[<div style="font-size: 13px; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">&nbsp; &nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;DefaultHttpClient&nbsp;createHttpClient()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpParams&nbsp;params&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;BasicHttpParams();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ConnManagerParams.setMaxConnectionsPerRoute(params,&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ConnPerRouteBean(</span><span style="color: #000000; ">28</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpProtocolParams.setVersion(params,&nbsp;HttpVersion.HTTP_1_1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpProtocolParams.setContentCharset(params,&nbsp;HTTP.UTF_8);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpConnectionParams.setConnectionTimeout(params,&nbsp;</span><span style="color: #000000; ">30000</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpConnectionParams.setSoTimeout(params,&nbsp;</span><span style="color: #000000; ">30000</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SchemeRegistry&nbsp;registry&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;SchemeRegistry();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;registry.register(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Scheme(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">http</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;PlainSocketFactory<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getSocketFactory(),&nbsp;</span><span style="color: #000000; ">80</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;registry.register(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Scheme(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">https</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;PlainSocketFactory<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getSocketFactory(),&nbsp;</span><span style="color: #000000; ">443</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ThreadSafeClientConnManager&nbsp;manager&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ThreadSafeClientConnManager(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;params,&nbsp;registry);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;DefaultHttpClient(manager,&nbsp;params);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp; &nbsp; 如果一个应用只用到一个全局的HttpClient, ，那么要注意设置下<br /></span><span class="Apple-style-span" style="background-color: #ffffff; font-size: medium; ">&nbsp; &nbsp;1.ConnManagerParams.setMaxConnectionsPerRoute(params, new ConnPerRouteBean(28));&nbsp;<br />&nbsp; &nbsp;2.</span><span class="Apple-style-span" style="background-color: #ffffff; font-size: medium; ">httpClient.execute以后response.getEntity().consumeContent();<br />&nbsp;如果碰巧2个都没设置，那么这个httpclient就会一直堵塞在那里了</span></div><img src ="http://www.cnitblog.com/asfman/aggbug/76026.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2011-10-13 18:59 <a href="http://www.cnitblog.com/asfman/articles/76026.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载:ARRAYLIST VECTOR LINKEDLIST 区别与用法</title><link>http://www.cnitblog.com/asfman/articles/75666.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Wed, 28 Sep 2011 06:41:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/75666.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/75666.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/75666.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/75666.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/75666.html</trackback:ping><description><![CDATA[<div><div>ARRAYLIST VECTOR LINKEDLIST 区别与用法</div><div></div><div>ArrayList 和Vector是采用数组方式存储数据，此数组元素数大于实际存储的数据以便增加和插入元素，都允许直接序号索引元素，但是插入数据要设计到数组元素移动等内存操作，所以索引数据快插入数据慢，Vector由于使用了synchronized方法（线程安全）所以性能上比ArrayList要差，LinkedList使用双向链表实现存储，按序号索引数据需要进行向前或向后遍历，但是插入数据时只需要记录本项的前后项即可，所以插入数度较快！</div><div></div><div></div><div>线性表，链表，哈希表是常用的数据结构，在进行Java开发时，JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图通过简单的描述，向读者阐述各个类的作用以及如何正确使用这些类。&nbsp;</div><div></div><div>Collection</div><div>&#9500;List</div><div>&#9474;&#9500;LinkedList</div><div>&#9474;&#9500;ArrayList</div><div>&#9474;&#9492;Vector</div><div>&#9474;　&#9492;Stack</div><div>&#9492;Set</div><div>Map</div><div>&#9500;Hashtable</div><div>&#9500;HashMap</div><div>&#9492;WeakHashMap</div><div></div><div>Collection接口</div><div>　　Collection是最基本的集合接口，一个Collection代表一组Object，即Collection的元素（Elements）。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类，Java SDK提供的类都是继承自Collection的&#8220;子接口&#8221;如List和Set。</div><div>　　所有实现Collection接口的类都必须提供两个标准的构造函数：无参数的构造函数用于创建一个空的Collection，有一个Collection参数的构造函数用于创建一个新的Collection，这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。</div><div>　　如何遍历Collection中的每一个元素？不论Collection的实际类型如何，它都支持一个iterator()的方法，该方法返回一个迭代子，使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下：</div><div>　　　　Iterator it = collection.iterator(); // 获得一个迭代子</div><div>　　　　while(it.hasNext()) {</div><div>　　　　　　Object obj = it.next(); // 得到下一个元素</div><div>　　　　}</div><div>　　由Collection接口派生的两个接口是List和Set。</div><div></div><div>List接口</div><div>　　List是有序的Collection，使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引（元素在List中的位置，类似于数组下标）来访问List中的元素，这类似于Java的数组。</div><div>和下面要提到的Set不同，List允许有相同的元素。</div><div>　　除了具有Collection接口必备的iterator()方法外，List还提供一个listIterator()方法，返回一个ListIterator接口，和标准的Iterator接口相比，ListIterator多了一些add()之类的方法，允许添加，删除，设定元素，还能向前或向后遍历。</div><div>　　实现List接口的常用类有LinkedList，ArrayList，Vector和Stack。</div><div></div><div>LinkedList类</div><div>　　LinkedList实现了List接口，允许null元素。此外LinkedList提供额外的get，remove，insert方法在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈（stack），队列（queue）或双向队列（deque）。</div><div>　　注意LinkedList没有同步方法。如果多个线程同时访问一个List，则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List：</div><div>　　　　List list = Collections.synchronizedList(new LinkedList(...));</div><div></div><div>ArrayList类</div><div>　　ArrayList实现了可变大小的数组。它允许所有元素，包括null。ArrayList没有同步。</div><div>size，isEmpty，get，set方法运行时间为常数。但是add方法开销为分摊的常数，添加n个元素需要O(n)的时间。其他的方法运行时间为线性。</div><div>　　每个ArrayList实例都有一个容量（Capacity），即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加，但是增长算法并没有定义。当需要插入大量元素时，在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。</div><div>　　和LinkedList一样，ArrayList也是非同步的（unsynchronized）。</div><div></div><div>Vector类</div><div>　　Vector非常类似ArrayList，但是Vector是同步的。由Vector创建的Iterator，虽然和ArrayList创建的Iterator是同一接口，但是，因为Vector是同步的，当一个Iterator被创建而且正在被使用，另一个线程改变了Vector的状态（例如，添加或删除了一些元素），这时调用Iterator的方法时将抛出ConcurrentModificationException，因此必须捕获该异常。</div><div></div><div>Stack 类</div><div>　　Stack继承自Vector，实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。基本的push和pop方法，还有peek方法得到栈顶的元素，empty方法测试堆栈是否为空，search方法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。</div><div></div><div>Set接口</div><div>　　Set是一种不包含重复的元素的Collection，即任意的两个元素e1和e2都有e1.equals(e2)=false，Set最多有一个null元素。</div><div>　　很明显，Set的构造函数有一个约束条件，传入的Collection参数不能包含重复的元素。</div><div>　　请注意：必须小心操作可变对象（Mutable Object）。如果一个Set中的可变元素改变了自身状态导致Object.equals(Object)=true将导致一些问题。</div><div></div><div>Map接口</div><div>　　请注意，Map没有继承Collection接口，Map提供key到value的映射。一个Map中不能包含相同的key，每个key只能映射一个value。Map接口提供3种集合的视图，Map的内容可以被当作一组key集合，一组value集合，或者一组key-value映射。</div><div></div><div>Hashtable类</div><div>　　Hashtable继承Map接口，实现一个key-value映射的哈希表。任何非空（non-null）的对象都可作为key或者value。</div><div>　　添加数据使用put(key, value)，取出数据使用get(key)，这两个基本操作的时间开销为常数。</div><div>Hashtable通过initial capacity和load factor两个参数调整性能。通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大，这会影响像get和put这样的操作。</div><div>使用Hashtable的简单示例如下，将1，2，3放到Hashtable中，他们的key分别是&#8221;one&#8221;，&#8221;two&#8221;，&#8221;three&#8221;：</div><div>　　　　Hashtable numbers = new Hashtable();</div><div>　　　　numbers.put(&#8220;one&#8221;, new Integer(1));</div><div>　　　　numbers.put(&#8220;two&#8221;, new Integer(2));</div><div>　　　　numbers.put(&#8220;three&#8221;, new Integer(3));</div><div>　　要取出一个数，比如2，用相应的key：</div><div>　　　　Integer n = (Integer)numbers.get(&#8220;two&#8221;);</div><div>　　　　System.out.println(&#8220;two = &#8221; + n);</div><div>　　由于作为key的对象将通过计算其散列函数来确定与之对应的value的位置，因此任何作为key的对象都必须实现hashCode和equals方法。hashCode和equals方法继承自根类Object，如果你用自定义的类当作key的话，要相当小心，按照散列函数的定义，如果两个对象相同，即obj1.equals(obj2)=true，则它们的hashCode必须相同，但如果两个对象不同，则它们的hashCode不一定不同，如果两个不同对象的hashCode相同，这种现象称为冲突，冲突会导致操作哈希表的时间开销增大，所以尽量定义好的hashCode()方法，能加快哈希表的操作。</div><div>　　如果相同的对象有不同的hashCode，对哈希表的操作会出现意想不到的结果（期待的get方法返回null），要避免这种问题，只需要牢记一条：要同时复写equals方法和hashCode方法，而不要只写其中一个。</div><div>　　Hashtable是同步的。</div><div></div><div>HashMap类</div><div>　　HashMap和Hashtable类似，不同之处在于HashMap是非同步的，并且允许null，即null value和null key。，但是将HashMap视为Collection时（values()方法可返回Collection），其迭代子操作时间开销和HashMap的容量成比例。因此，如果迭代操作的性能相当重要的话，不要将HashMap的初始化容量设得过高，或者load factor过低。</div><div></div><div>WeakHashMap类</div><div>　　WeakHashMap是一种改进的HashMap，它对key实行&#8220;弱引用&#8221;，如果一个key不再被外部所引用，那么该key可以被GC回收。</div><div></div><div>总结</div><div>　　如果涉及到堆栈，队列等操作，应该考虑用List，对于需要快速插入，删除元素，应该使用LinkedList，如果需要快速随机访问元素，应该使用ArrayList。</div><div>　　如果程序在单线程环境中，或者访问仅仅在一个线程中进行，考虑非同步的类，其效率较高，如果多个线程可能同时操作一个类，应该使用同步的类。</div><div>　　要特别注意对哈希表的操作，作为key的对象要正确复写equals和hashCode方法。</div><div>　　尽量返回接口而非实际的类型，如返回List而非ArrayList，这样如果以后需要将ArrayList换成LinkedList时，客户端代码不用改变。这就是针对抽象编程。</div><div></div><div>同步性</div><div>Vector是同步的。这个类中的一些方法保证了Vector中的对象是线程安全的。而ArrayList则是异步的，因此ArrayList中的对象并不是线程安全的。因为同步的要求会影响执行的效率，所以如果你不需要线程安全的集合那么使用ArrayList是一个很好的选择，这样可以避免由于同步带来的不必要的性能开销。</div><div>数据增长</div><div>从内部实现机制来讲ArrayList和Vector都是使用数组(Array)来控制集合中的对象。当你向这两种类型中增加元素的时候，如果元素的数目超出了内部数组目前的长度它们都需要扩展内部数组的长度，Vector缺省情况下自动增长原来一倍的数组长度，ArrayList是原来的50%,所以最后你获得的这个集合所占的空间总是比你实际需要的要大。所以如果你要在集合中保存大量的数据那么使用Vector有一些优势，因为你可以通过设置集合的初始化大小来避免不必要的资源开销。</div><div>使用模式</div><div>在ArrayList和Vector中，从一个指定的位置（通过索引）查找数据或是在集合的末尾增加、移除一个元素所花费的时间是一样的，这个时间我们用O(1)表示。但是，如果在集合的其他位置增加或移除元素那么花费的时间会呈线形增长：O(n-i)，其中n代表集合中元素的个数，i代表元素增加或移除元素的索引位置。为什么会这样呢？以为在进行上述操作的时候集合中第i和第i个元素之后的所有元素都要执行位移的操作。这一切意味着什么呢？</div><div>这意味着，你只是查找特定位置的元素或只在集合的末端增加、移除元素，那么使用Vector或ArrayList都可以。如果是其他操作，你最好选择其他的集合操作类。比如，LinkList集合类在增加或移除集合中任何位置的元素所花费的时间都是一样的?O(1)，但它在索引一个元素的使用缺比较慢－O(i),其中i是索引的位置.使用ArrayList也很容易，因为你可以简单的使用索引来代替创建iterator对象的操作。LinkList也会为每个插入的元素创建对象，所有你要明白它也会带来额外的开销。</div><div>最后，在《Practical Java》一书中Peter Haggar建议使用一个简单的数组（Array）来代替Vector或ArrayList。尤其是对于执行效率要求高的程序更应如此。因为使用数组(Array)避免了同步、额外的方法调用和不必要的重新分配空间的操作。</div></div><img src ="http://www.cnitblog.com/asfman/aggbug/75666.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2011-09-28 14:41 <a href="http://www.cnitblog.com/asfman/articles/75666.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>android获得控件在屏幕中的绝对坐标</title><link>http://www.cnitblog.com/asfman/articles/75627.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Mon, 26 Sep 2011 07:51:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/75627.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/75627.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/75627.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/75627.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/75627.html</trackback:ping><description><![CDATA[<span class="Apple-style-span" style="color: #946f34; font-family: Arial, Helvetica, simsun, u5b8bu4f53; font-size: 14px; line-height: 22px; background-color: #ffffff; ">int[] location = new&nbsp; int[2] ;<br style="line-height: 22px; " />view.getLocationInWindow(location); //获取在当前窗口内的绝对坐标<br style="line-height: 22px; " />view.getLocationOnScreen(location);//获取在整个屏幕内的绝对坐标<br style="line-height: 22px; " />location [0]---&gt;x坐标,location [1]---&gt;y坐标</span><img src ="http://www.cnitblog.com/asfman/aggbug/75627.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2011-09-26 15:51 <a href="http://www.cnitblog.com/asfman/articles/75627.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Section ListView</title><link>http://www.cnitblog.com/asfman/articles/75543.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Mon, 19 Sep 2011 09:27:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/articles/75543.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/75543.html</wfw:comment><comments>http://www.cnitblog.com/asfman/articles/75543.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/75543.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/75543.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;com.asfman.section;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.ArrayList;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.HashMap;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;android.app.Activity;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;android.util.Log;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;android.view.View;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;android.view.ViewGroup;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;android.widget.BaseAdapter;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;android.widget.TextView;<br /><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;SectionAdapter&nbsp;</span><span style="color: #0000FF; ">extends</span><span style="color: #000000; ">&nbsp;BaseAdapter&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;ArrayList</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">HashMap</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">String,&nbsp;String</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">&nbsp;data;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;Activity&nbsp;activity;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;SectionAdapter(ArrayList</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">HashMap</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">String,&nbsp;String</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">&nbsp;data,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Activity&nbsp;activity)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log.i(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">info</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">size:</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;data.size());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.data&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;data;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.activity&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;activity;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;getCount()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;data.size();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Object&nbsp;getItem(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;position)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;data.get(position);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;getItemId(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;position)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;position;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;View&nbsp;getView(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;position,&nbsp;View&nbsp;convertView,&nbsp;ViewGroup&nbsp;parent)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log.i(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">info</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">getview:</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;position);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@SuppressWarnings(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">unchecked</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HashMap</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">String,&nbsp;String</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;hashMap&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(HashMap</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">String,&nbsp;String</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">)&nbsp;getItem(position);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(hashMap.get(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">type</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">)&nbsp;Log.i(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">info</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">fuckyou</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log.i(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">info</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;hashMap.get(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">type</span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ViewHolder&nbsp;viewHolder;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(hashMap.get(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">type</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">1</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(convertView&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">||</span><span style="color: #000000; ">&nbsp;(convertView.getTag(R.id.fk)&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;(Integer)&nbsp;convertView.getTag(R.id.fk)&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log.i(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">info</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">new&nbsp;1</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;convertView&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;activity.getLayoutInflater().inflate(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R.layout.simple_list_item_1,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TextView&nbsp;text1&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(TextView)&nbsp;convertView<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.findViewById(android.R.id.text1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewHolder&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ViewHolder();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewHolder.text1&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;text1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;convertView.setTag(viewHolder);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;convertView.setTag(R.id.fk,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log.i(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">info</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">old&nbsp;1</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewHolder&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(ViewHolder)&nbsp;convertView.getTag();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewHolder.text1.setText(hashMap.get(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">text1</span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(convertView&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">||</span><span style="color: #000000; ">&nbsp;(convertView.getTag(R.id.fk)&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;(Integer)&nbsp;convertView.getTag(R.id.fk)&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log.i(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">info</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">new&nbsp;2</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;convertView&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;activity.getLayoutInflater().inflate(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R.layout.two_line_list_item,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TextView&nbsp;text1&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(TextView)&nbsp;convertView<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.findViewById(android.R.id.text1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TextView&nbsp;text2&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(TextView)&nbsp;convertView<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.findViewById(android.R.id.text2);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewHolder&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ViewHolder();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewHolder.text1&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;text1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewHolder.text2&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;text2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;convertView.setTag(viewHolder);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;convertView.setTag(R.id.fk,&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log.i(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">info</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">old&nbsp;2</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewHolder&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(ViewHolder)&nbsp;convertView.getTag();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewHolder.text1.setText(hashMap.get(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">text1</span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewHolder.text2.setText(hashMap.get(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">text2</span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;convertView;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;ViewHolder&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TextView&nbsp;text1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TextView&nbsp;text2;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span></div><img src ="http://www.cnitblog.com/asfman/aggbug/75543.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2011-09-19 17:27 <a href="http://www.cnitblog.com/asfman/articles/75543.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>