﻿<?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>C++博客-火焰傀偶的挣扎旅程-随笔分类-android</title><link>http://www.cppblog.com/WhiteDummy/category/20439.html</link><description>纯爷们的一生就是不停地燃烧，keep on burning soul！！</description><language>zh-cn</language><lastBuildDate>Thu, 27 Jun 2013 07:12:58 GMT</lastBuildDate><pubDate>Thu, 27 Jun 2013 07:12:58 GMT</pubDate><ttl>60</ttl><item><title>关于android的webview屏幕适应</title><link>http://www.cppblog.com/WhiteDummy/archive/2013/06/25/201300.html</link><dc:creator>WhiteDummy</dc:creator><author>WhiteDummy</author><pubDate>Tue, 25 Jun 2013 09:30:00 GMT</pubDate><guid>http://www.cppblog.com/WhiteDummy/archive/2013/06/25/201300.html</guid><wfw:comment>http://www.cppblog.com/WhiteDummy/comments/201300.html</wfw:comment><comments>http://www.cppblog.com/WhiteDummy/archive/2013/06/25/201300.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/WhiteDummy/comments/commentRss/201300.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/WhiteDummy/services/trackbacks/201300.html</trackback:ping><description><![CDATA[这是我2,3个月前遇到的问题，随手记一下。<br /><br />主要是关于webview打开网页后的屏幕适应问题。<br /><br />首先贴一段网上流传的代码：<br /><br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 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: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;2</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">Support&nbsp;different&nbsp;screens&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;screenDensity&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;mMyActivity.getResources().getDisplayMetrics().densityDpi;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">switch</span><span style="color: #000000; ">&nbsp;(screenDensity){&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">case</span><span style="color: #000000; ">&nbsp;DisplayMetrics.DENSITY_LOW&nbsp;:&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mWebView.getSettings().setDefaultZoom(ZoomDensity.CLOSE);&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">case</span><span style="color: #000000; ">&nbsp;DisplayMetrics.DENSITY_MEDIUM:&nbsp;&nbsp;<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mWebView.getSettings().setDefaultZoom(ZoomDensity.MEDIUM);&nbsp;&nbsp;<br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">case</span><span style="color: #000000; ">&nbsp;DisplayMetrics.DENSITY_HIGH:&nbsp;&nbsp;<br /></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mWebView.getSettings().setDefaultZoom(ZoomDensity.FAR);&nbsp;&nbsp;<br /></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">&nbsp;;<br /></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">case</span><span style="color: #000000; ">&nbsp;DisplayMetrics.DENSITY_XHIGH:&nbsp;&nbsp;<br /></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #000000;">mWebView.getSettings().setDefaultZoom(ZoomDensity.FAR);&nbsp; </span><span style="color: #008000; "><br /></span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">&nbsp;;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">case</span><span style="color: #000000; ">&nbsp;DisplayMetrics.DENSITY_TV:&nbsp;&nbsp;<br /></span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mWebView.getSettings().setDefaultZoom(ZoomDensity.FAR);&nbsp;&nbsp;<br /></span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">&nbsp;;&nbsp;<br /></span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div><br />这段代码的不靠谱之处在于：<br />1.明明case下有五种dpi，android库却只提供close，medium，far三个缩放因子（分别对应LOW，MEDIUM，HIGH，默认是MEDIUM），即便当dpi达到<span style="color: #000000; ">XHIGH（既320DPI）时，也只能设置far，显然是不正常的。<br /><br />2.实际设备的实际dpi无法获取，因为无法得知设备的物理英寸，上面方法得到dpi值仅是个近似值。<br /><br />如果单纯用上面的代码做屏幕缩放，对于一些机型肯定是不正常，并且无法估计长宽，比如一张1280宽的图片在实际dpi为X（X &gt; 240 且 x &lt; 320），分辨率为1280的设备上,有可能会被放大1.25倍，或是1.5倍。<br /><br />如果想要得到正常的倍率，是需要配合网页端的。（这里仅讨论html5的场合，跨平台嘛）<br /><br />个人认为，由网页方面写死一个宽，再提供一个js的缩放函数（包括图片，字体），根据不同设备的分辨率来调用，是比较理想的。（当然，也可以用穷举法，一个分辨率进一个网页，用不同css和不同大小资源 =_=!）<br /><br />假设宽定位1280，则html5方面必须有：<br /></span><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #008080; ">1</span>&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">meta&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="viewport"</span><span style="color: #FF0000; ">&nbsp;content</span><span style="color: #0000FF; ">="width=1280,&nbsp;initial-scale=1.0,maximum-scale=2.0,&nbsp;minimum-scale=0.5,&nbsp;user-scalable=no,target-densitydpi=device-dpi"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span></div><span style="color: #000000;"><br />其中，target-densitydpi</span><span style="color: #0000FF; "></span><span style="color: #000000;">是最重要的，它将配合android端的以下代码使用。<br /><br /></span><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #008080; ">1</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">use&nbsp;html5&nbsp;viewport&nbsp;attribute</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">2</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;settings.setLoadWithOverviewMode(</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;settings.setUseWideViewPort(</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">);</span></div><span style="color: #000000;"><br /><br />表示我们的代码支持html5网页自适应。所谓杀什么畜生用什么刀，网页的事情，dpi适应什么的，就交给html5去做好了 = =，不用我们在更外面一层蛋疼。<br /><br />这样做之后，1280宽的图片无论在什么设备的分辨率都是正常的尺寸，不会被做倍数不明的拉伸，方便我们控制。<br /><br /><br /></span><img src ="http://www.cppblog.com/WhiteDummy/aggbug/201300.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/WhiteDummy/" target="_blank">WhiteDummy</a> 2013-06-25 17:30 <a href="http://www.cppblog.com/WhiteDummy/archive/2013/06/25/201300.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>乱七八糟的android心得</title><link>http://www.cppblog.com/WhiteDummy/archive/2013/03/21/198677.html</link><dc:creator>WhiteDummy</dc:creator><author>WhiteDummy</author><pubDate>Thu, 21 Mar 2013 07:35:00 GMT</pubDate><guid>http://www.cppblog.com/WhiteDummy/archive/2013/03/21/198677.html</guid><wfw:comment>http://www.cppblog.com/WhiteDummy/comments/198677.html</wfw:comment><comments>http://www.cppblog.com/WhiteDummy/archive/2013/03/21/198677.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/WhiteDummy/comments/commentRss/198677.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/WhiteDummy/services/trackbacks/198677.html</trackback:ping><description><![CDATA[<div><div><br />真的很乱七八糟，就当写给自己看吧，囧<br /><br />1.多线程更新ui的方法：</div> <div>众所周知，android的系统ui十分蛋疼，只能在主线程更新，也就是说，只能在ui所在的主activity处更新，包括一切的弹出对话框，动态控件的显示等。</div> <div>&nbsp;</div> <div>在其他线程时，只能通过间接更新来实现。我所用的方法就是在主线程实现一个handler成员，通过发送消息给它来更新ui。</div> <div>&nbsp;</div> <div>以下为一个简单例子：</div> <div> <div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #000000; ">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;MyActivity&nbsp;</span><span style="color: #0000FF; ">extends</span><span style="color: #000000; ">&nbsp;Activity<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">final</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;UI_MSG1&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">UI更新消息1&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">final</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;UI_MSG2&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">UI更新消息2&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;Handler&nbsp;mHandler&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Handler()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;handleMessage&nbsp;(Message&nbsp;msg)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">switch</span><span style="color: #000000; ">(msg.what)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">case</span><span style="color: #000000; ">&nbsp;UI_MSG1:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">做一些更新</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">case</span><span style="color: #000000; ">&nbsp;</span>UI_MSG2<span style="color: #000000; ">:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">做一些更新</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Handler&nbsp;GetHandler()&nbsp;{</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;mHandler;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">省略其他代码</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">如果其他地方需要更新ui，则发送更新消息给主activity对象即可</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;activity.GetHandler().sendEmptyMessage(MyActivity.UI_MSG1);</span><span style="color: #008000; ">//</span><span style="color: #008000; ">此处activity假设为一个MyActivity对象，这里只做示例用</span></div></div><div>&nbsp;</div></div> <div>&nbsp;</div> <div>2.关于findViewById：</div> <div>如果是代码中自定义的控件（即layout中没有，也无资源id），需要在程序运行中实际显示出来，也就是show的时点后，通过id获取的view才会有效。</div> <div>&nbsp;</div> <div>这里举一个获取<span style="font-family: 'Courier New'; color: windowtext; font-size: 10pt">AlertDialog</span>的例子，下面的代码通过获取view来实现居中显示：</div> <div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #008080; ">1</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">2</span>&nbsp;<span style="color: #000000; ">dlg.show();<br /></span><span style="color: #008080; ">3</span>&nbsp;<span style="color: #000000; ">TextView&nbsp;messageText&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(TextView)dlg.findViewById(android.R.id.message);</span><span style="color: #008000; ">//</span><span style="color: #008000; ">如果这行代码放在show之前，则messageText的值为0</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">4</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;messageText.setGravity(android.view.Gravity.CENTER_HORIZONTAL); <br /></span></div><span style="font-family: 'Courier New'; color: windowtext; font-size: 10pt"></span>  </div> <div>&nbsp;</div> <div>&nbsp;</div> <div>&nbsp;</div> <div>3.获取屏幕的宽高</div>  <div>受android的横屏竖屏切换机制所影响，Activity中getWindowManager().getDefaultDisplay()的getWidth()  或者getHeight()方法常常会获得颠倒的宽高，如果你的程序需要使用固定的横屏或固定的竖屏，只需比较所获取宽高的大小再根据情况重新赋值给自己的宽高变量即可，如果宽比高大则表示横屏，反之则竖屏。</div> <div>&nbsp;</div> <div>4.在view中拦截触摸/按键事件</div> <div>&nbsp;</div> <div>其实这个网上的资料很多，就是重写view类的onKeyDown/onKeyUp/onTouchEvent方法来处理自己的事件，其中onTouchEvent中又包括ACTION_MOVE，ACTION_DOWN，ACTION_UP这些事件。</div> <div>&nbsp;</div> <div>如果view有调用requestFocus，则上述方法优先响应于activity的同名方法。反之，可能会无响应。</div> <div>&nbsp;</div> <div>然后说说返回值。</div> <div>&nbsp;</div> <div>一般来说，都是直接返回父类的方法，例如：return super.onTouchEvent(event); </div> <div>&nbsp;</div> <div>上述方法最后都要返回一个布尔值，key事件的返回值只是表示是否只被这个view截取（既返回true时），如果想要继续传递给其他view，则可返回false。</div> <div>&nbsp;</div> <div>touch事件中，返回值则意味着事件是否被处理，如果返回false，则不会继续接下去的事件响应（move和up事件），如果想要保证触摸事件被处理，可以一直返回true。也可以在view初始化时设置setClickab(true)。</div> <div>&nbsp;</div> <div>5.关于waiting for the debugger to attach</div> <div>&nbsp;</div> <div>有时候一些设备通过eclipse的debug模式安装程序后，只能通过eclipse来运行，设备上则不能直接运行，这样很不方便。</div> <div>&nbsp;</div> <div>解决方法：</div> <div>&nbsp;</div> <div>在你项目的<code>manifest.xls中，加入以下权限</code></div><code> <div>&nbsp;</div> <div>&lt;uses-permission android:name="android.permission.SET_DEBUG_APP"&gt;&lt;/uses-permission&gt;</div></code></div><img src ="http://www.cppblog.com/WhiteDummy/aggbug/198677.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/WhiteDummy/" target="_blank">WhiteDummy</a> 2013-03-21 15:35 <a href="http://www.cppblog.com/WhiteDummy/archive/2013/03/21/198677.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>