[{"data":1,"prerenderedAt":107},["ShallowReactive",2],{"\u002F2012-11-30-android%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93":3},{"id":4,"title":5,"body":6,"date":84,"description":12,"extension":85,"meta":86,"navigation":89,"path":101,"seo":102,"stem":103,"tags":104,"__hash__":106},"blogs\u002F_legacy\u002F2012\u002F2012-11-30-android%e5%ad%a6%e4%b9%a0%e6%80%bb%e7%bb%93.md","Android学习总结",{"type":7,"value":8,"toc":77},"minimark",[9,13,16,20,23,26,29,57,60,63,66],[10,11,12],"p",{},"历经近一个多月的时间，终于完成了自己的第一个android应用。途中虽然遇到不少纠结和dt的问题，可是现在回头看来却都没有留下什么深刻的印象。",[10,14,15],{},"所以趁着还没有彻底忘记之前把还记得的几处记录一下。",[17,18,19],"h2",{"id":19},"自定义textview的ondraw不触发",[10,21,22],{},"对textview进行定制之后ondraw就没有办法触发了，虽然查了资料据说要调用setWillNotDraw(false)才行。可是就算执行了还是不绘制，最后才发现问题所在。是因为排版的问题导致了textview的高度是0，由于原本设计时是想靠ondraw绘制来占高度的，结果ondraw却没有办法调用。似乎android在高度为0时为了节省资源就不调用绘制函数了。",[17,24,25],{"id":25},"textview的settextsize和gettextsize问题",[10,27,28],{},"这个问题纠结了很久，调试了半天才发现bug所在。textview在对字体进行设置时调用settextsize有好几个不同的传入值类型，目的是为了适应类似retina的功能。就好像px、dp之类的单位，之前一直没有在意过这些。所以就遇到了这个问题，具体的原因是这样的：",[30,31,32,38,41,46,49,54],"blockquote",{},[10,33,34],{},[35,36,37],"strong",{},"public void setTextSize (float size)",[10,39,40],{},"Set the default text size to the given value, interpreted as \"scaled pixel\" units. This size is adjusted based on the current density and user font size preference.",[10,42,43],{},[35,44,45],{},"public void setTextSize (int unit, float size)",[10,47,48],{},"Set the default text size to a given unit and value. See TypedValue for the possible dimension units.",[10,50,51],{},[35,52,53],{},"public float getTextSize ()",[10,55,56],{},"Returns the size (in pixels) of the default text size in this TextView.",[10,58,59],{},"settextsize在设置之后gettextsize的值就会不同，因为gettextsize的unit是pixels，而settextsize的是scaled pixel……",[17,61,62],{"id":62},"canvas的清空问题",[10,64,65],{},"由于是使用的多层绘制，所以canvas在使用时每次都必须清空。找了好久才找到一个不错的方法：",[67,68,73],"pre",{"className":69,"code":71,"language":72},[70],"language-text","Paint paint = new Paint();\npaint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));\ncanvas.drawPaint(paint);\npaint.setXfermode(new PorterDuffXfermode(Mode.SRC));\n","text",[74,75,71],"code",{"__ignoreMap":76},"",{"title":76,"searchDepth":78,"depth":79,"links":80},2,3,[81,82,83],{"id":19,"depth":78,"text":19},{"id":25,"depth":78,"text":25},{"id":62,"depth":78,"text":62},"2012-11-30","md",{"layout":87,"status":88,"published":89,"author":90,"author_login":91,"author_email":92,"author_url":93,"wordpress_id":94,"wordpress_url":95,"date_gmt":96,"excerpt":97},"post","publish",true,{"display_name":91,"login":91,"email":92,"url":93},"chaoshikari","chaoshikari@gmail.com","\u002F",518,"\u002F\u002F?p=518","2012-11-30 04:38:18 +0000",{"type":7,"value":98},[99],[10,100,12],{},"\u002F2012-11-30-android学习总结",{"title":5,"description":12},"_legacy\u002F2012\u002F2012-11-30-android%e5%ad%a6%e4%b9%a0%e6%80%bb%e7%bb%93",[105],"Android","_Qyhx1r6UH6d_BALDjSDNmGqz3LWZGq9SwZZEzNhuxs",1788763182704]