ÏÂÃæÊÇ¿ªÊ¼Android±à³ÌµÄºÃ·½·¨£º
- ÕÒһЩÓëÄãÏë×öÊÂÇéÀàËƵĴúÂë
- µ÷ÕûËü£¬³¢ÊÔÈÃËü×öÄãÏñ×öµÄÊÂÇé
- ¾ÀúÎÊÌâ
- ʹÓÃStackOverflow½â¾öÎÊÌâ
¡¡¡¡¶Ôÿ¸öÄãÏñÌí¼ÓµÄÌØÕ÷Öظ´ÉÏÊö¹ý³Ì¡£ÕâÖÖ·½·¨Äܹ»¼¤ÀøÄ㣬ÒòΪÄãÔÚ±£³Ö²»¶Ïµü´ú£¬²»¾ÒâÖÐÄãѧµ½Á˺ܶࡣȻ¶ø£¬µ±Äã·¢²¼Ó¦ÓÃʱÄ㻹Ҫ×öһЩ¸üÉîÈëµÄÊÂÇé¡£
¡¡¡¡´ÓһЩ¿ÉÕý³£¹¤×÷µÄ´úÂëµ½Ò»¸ö¿ÉŵÄÓ¦ÓóÌÐòÊÇÒ»¸ö¾Þ´óµÄÌøÔ¾£¬Ïà±ÈiOSƽ̨Android¸üÊÇÈç´Ë ¡£µ±ÔÚiOSÉÏ·¢²¼Ó¦ÓÃʱֻÊÇÔÚÒ»¸öÉ豸ÉÏÌøÔ¾–ÄãµÄÊÖ»ú–¶ÔºÜ¶àÉ豸¶øÑÔ¶¼ºÜÏàËƖͬÑù´óСµÄÆÁÄ»£¬¶¼ÓкܺõÄÓ²¼þ£¬95%ÉÏÔËÐÐÏàͬ°æ±¾µÄ²Ù×÷ϵͳ¡£ÔÚAndroidÓ¦ÓÃÖÐÄã²»»áÓöµ½ÕâÖÖÇé¿ö¡£
¡¡¡¡ÄãµÄ³ÌÐò±ØÐëÄܹ»´¦ÀíÒ»ÇУº´ÓÆÁÄ»£¬´¦ÀíÆ÷£¬¶¨ÖƵIJÙ×÷ϵͳ£¬API²ã¼¶ÒÔ¼°ÈκÎÆäËûµÄÌض¨É豸¡£
¡¡¡¡ÕâÊÇÎÒ¶ÔʹAndroidÓ¦ÓÃÊæ·þÆðÀ´µÄ¸öÈ˽¨Òé¡£
¡¡Ä¿±êÆÁÄ»³ß´ç¼°½â¾ö·½·¨
¡¡¡¡ÔÚAndroidÊÀ½çÀïÄ¿Ç°Óг¬¹ý100ÖֵIJ»Í¬ÆÁÄ»³ß´ç£¬µ«½â¾ö·½·¨Ò²ºÜ·á¸»¡£ÎªÊ¹ÄãµÄÓ¦ÓÃÊÊÓ¦²»Í¬µÄÆÁÄ»ÅäÖÃÓÐÁ½¼þÊÂÇéÄãÐèҪȷ¶¨£º
- Äã¶Ô²»Í¬µÄÆÁÄ»³ß´çÓÐÒ»¸öºÃµÄ²¼¾ÖºÍ½á¹¹
- ÄãµÄͼÏñÔÚ²»Í¬·Ö±æÂÊϹ¤×÷Á¼ºÃ
¡¡¡¡ÕâЩ¶¼ÊǶÀÁ¢µÄÈÎÎñ£¬Äã¿ÉÄÜÓÐÒ»¸ö³¬¼¶µÄtablet²¼¾Ö£¬µ«ÉÏÃæµÄͼÐο´ÆðÀ´ºÜÔã¸â¡£ÎÒÃÇ»áÒÀ´ÎÌÖÂÛËûÃÇ¡£
¡¡Îª²»Í¬µÄÆÁÄ»¶øÉè¼Æ
¡¡¡¡1.ͨ³£»áÓÃScrollView ºÍ ListView ÇáËɸ㶨
¡¡¡¡µ±ÎÒÃÇÓÐһϵÁв»Í¬³ß´çµÄ´óÆÁÊÖ»úʱ£¬ËüÃÇÖ®¼ä×î´óµÄ²»Í¬¾ÍÊÇÆÁÄ»µÄ¸ß¶È¡£Òò´ËScrollViewºÍListViewͨ³£¿ÉÊÇÓÐЧµÄ¹¤×÷£¬ËäÈ»ÓÐʱËüÃDz¢²»ÄÜÍêÈ«¸²¸ÇÈ«²¿ÆÁÄ»¡£ÔÚOpenSignalÖеÄDashboard±êÇ©ÏÂÎÒÃÇ¿ÉÒÔ¿´µ½ËùÓв¿¼þÒ»ÆøºÇ³É£¬²»´æÔÚ»¬¶¯¡¢¶ÔÓÚÐí¶à¸ß¼¶ÀàÐͱêÇ©ÖУ¬»¬¶¯Õ¹Ê¾²¢²»¼ûµÃÊÇÒ»¼þ»µÊ¡£Èç¹ûÄãÄܹ»ÎªÄãËùÓеÄÉè¼ÆÆ¥Åäµ½¸÷ÖÖÆÁÄ»ÉÏÃæÈ¥£¬ÄÇô×îºÃ²»¹ý¡£·ñÔò£¬ÕâÁ½¸ö¿Ø¼þ»áÈÃÄãÓÃ×îСµÄ¿ª·¢´ú¼ÛÀ´±£Ö¤ÄãµÄÈí¼þÔÚ´ó¶àÊýÆÁÄ»ÉÏÕý³£Õ¹Ê¾¡£
¡¡¡¡Dashboard style µÄÉè¼Æ²»ÐèÒªscroll
¡¡¡¡2: ʹÓÃÎļþ¼Ð. Android µÄ×ÊÔ´Îļþ¼Ð½á¹¹·Ç³£Ç¿´ó, ËüÔÊÐí¿ª·¢Õß½«²»Í¬µÄͼƬ¡¢×Ö·û´®¡¢²¼¾ÖÎļþ¡¢ÍâÐΡ¢ÑÕÉ«ÕâЩ×ÊÔ´£¬ÔÚapi¡¢´úÂë¡¢ÆÁÄ»³ß´çµÈ²¿·Ö. ÏÂÃæÊÇÒ»¸öÀý×Ó£¬Õ¹Ê¾ÁËÔÚ×ÊÔ´Îļþ¼ÐÏÂÄã¿ÉÒÔÔõÑù×ö:
¡¡¡¡ÔÚ values-small Îļþ¼ÐÖдæ·ÅÁËÒ»¸ö bools.xml Îļþ, ÎļþÖÐÓÐÈçϼ¸ÐдúÂë:
|
< resources > < bool name = "small_screen" >true
|
¡¡¡¡ÔÚ´úÂëÖÐÎÒ¿ÉÕâÑùÒýÓÃ:
|
if (getResources().getBoolean(R.bool.small_screen)){ getSupportActionBar().hide(); } |
¡¡¡¡ÔÚС³ß´çÉ豸ÖÐbooleanÖµ½«ÖÃΪtrue ÎÒ´Ëʱ½«Òò´ËActionBarÀ´½ÚÊ¡¿Õ¼ä. Õâ¶Î´úÂëÕýÊÇ·Ç·²µÄActionBarSherlock À©Õ¹¿âÖеÄÒ»²¿·Ö,ÉÔºóÔÙÏêϸ½éÉÜ. ÔÚvalues-sw360dpÎļþ¼ÐÖУ¬´æ·Å¶ÔÓ¦ÆÁÄ»¿íÓÚ360dpµÄ×ÊÔ´Îļþ¡£ÓëÉÏÃæÏàͬµÄλÖã¬ÓÐÈçÏ´úÂë
|
< resources > < bool name = "small_screen" >false
|
¡¡¡¡¶ÔÓÚ´óÆÁÄ»¶øÑÔ£¬ActionBar¾ÍÖÃΪÁËÏÔʾ״̬.
¡¡¡¡ÎÒ²»ÐèÒª½« bools.xml Îļþ·ÅÈë values-sw400dpÎļþ¼ÐÖÐ, ÒòΪ²Ù×÷ϵͳ»á×Ô¶¯°´ÏàӦ·¾¶ËÑË÷. ÀýÈçÒ»¸öÉ豸¿í 600dp (600/160=3.75 Ó¢´ç, Õâ¾ÍÊÇÎÒÃÇͨ³£Ëù˵µÄ7Ƭװ) ²Ù×÷ϵͳ»áÔÚvalues-sw600dp ºÍÆä°üº¬µÄµÄÎļþ¼ÐÖÐËÑË÷ bools.xml Îļþ, ÈôûÓÐÕÒµ½ÔòËÑË÷ values-sw400dp Îļþ¼Ð,ÔÚËÑË÷ values-sw360dp Îļþ¼ÐÒÔ´ËÀàÍÆ.
¡¡¡¡½¨Òé3:160dp = 1Ó¢´ç¡£320 dp = 2Ó¢´ç¡£dp = dip
¡¡¡¡½¨Òé4:Äã¿ÉÒÔÓÃÕâЩĿ¼½á¹¹¼¼ÇÉÀ´Ó¦¸¶ËùÓÐ×ÊÔ´ÀàÐÍ£¬±ÈÈçÄãµÄXML²¼¾ÖÓÃÖ¸¶¨µÄϵͳĿ¼Ãû³Æ
¡¡¡¡À´½â¾öÕâ¸öÎÊÌ⣬È磺layout-sw360dpĿ¼¿ÉÒÔÆ¥ÅäÄ¿±ê¿íÊÇ360dpµÄ»úÆ÷¡£Èç¹ûÄãÒ²ÒªÖ§³ÖºáÊúÆÁ²¼¾ÖÇл»µÄ»°£¬¿ÉÒÔÓÃÈçÏÂĿ¼£º
¡¡¡¡layout-sw360dp-land
¡¡¡¡layout-sw360dp-port
¡¡¡¡±ð¼±£¬ÄãÓÐÒ»°ëµÄÓû§ÊÇ˵°¢À²®ÓïµÄ£¿ÄǾͽ«²¼¾ÖÃû³Æ¸ÄΪÏÂÃæµÄÑù×Ó°É£º
¡¡¡¡layout-sw360dp-land
¡¡¡¡layout-sw360dp-port
¡¡¡¡layout-sw360dp-land-ar
¡¡¡¡layout-sw360dp-port-ar
¡¡¡¡Ç°Á½¸ö¿ÉÒÔÊÊÓÃÓÚËùÓÐÓïÑÔ£¬-ar´ú±í°¢À²®Óï¡£
¡¡¡¡½¨Òé5£º×ÊÔ´¹æÔò¼ò½é£º
¡¡¡¡XXX //Àý×Ó£ºÃ»ÓÐÌí¼ÓĿ¼Ãû£ºÄ¬ÈÏ-ÊÊÓÃÓÚNexus One£¬Droid 2,S2
¡¡¡¡XXX-sw360dp // ±È½Ï´óµÄÊÖ»ú – Galaxy Nexus, S3, S4
¡¡¡¡XXX-sw600dp // 7¡¨ ƽ°å
¡¡¡¡XXX-sw720dp // 10” ƽ°å
¡¡¡¡ÔÚKindleÉ豸ÓÐЩ²»Í¬£¬ÈçÏ£º
¡¡¡¡XXX-large-mdpi // kindle fire 7¡¨
¡¡¡¡XXX-large-hdpi // kindle fire 7¡¨ HD
¡¡¡¡½¨Òé6£ºÈç¹ûÄã²»Ïë²Ã¼ôËùÓеIJ¼¾ÖÎļþ£¬Äã¿ÉÒÔÓÃdimens.xmlÎļþ¡£ÄãÒªÊÇÁôÐÄÎÒÉÏÃæµÄÎÄÕ£¬Äã¾Í»á×¢Òâµ½ÔÚÎÒµÄvaluesĿ¼ÀïÓкܶàdimens.xml£¬ÕâÑùÊÇÒòΪÎÒ¸üϲ»¶ÔÚÒ»¸ölayout.xmlÀïÉèÖÃÖµ£¬ÔÚÿһ¸ö²¼¾ÖÎļþÀïÎÒϲ»¶ÕâÑù×ö£º
|
< ImageView android:layout_centerHorizontal = "true" android:layout_marginTop = "@dimen/small_margin" android:layout_width = "@dimen/dashBoardWidth" android:layout_height = "@dimen/dashBoardHeight" android:id = "@+id/dashboard" /> small_marginÊÇÔÚdimen.xmlÎļþÀﶨÒåµÄ£º < resources > < dimen name = "small_margin" >4dp
|
¡¡¡¡Õâ¸ö4dp±äÁ¿ÔÚËùÓÐdimenÎļþÀï¡£ÎÒÓиöExcelÎļþ£¬ÀïÃæ´´½¨ÁËËùÓв»Í¬µÄ»ùÓÚ²»Í¬ÒòËØËùÐèµÄ³ß´ç¶¨Òå¡£Ò²ÐíÄã»áÎÊ£ºÎªÊ²Ã´²»ÈÃandroid OSÀ´´¦ÀíËùÓгߴçµÄÎÊÌ⣿Ϊʲô²»ÄØ£¬ÎªÊ²Ã´²»ÓÃÒ»¸övaluesĿ¼ºÍÒ»¸ö²¼¾ÖĿ¼À´´úÌæËùÓÐдËÀµÄÊýÖµÄØ£¿Äǵ±È»ÊÇ¿ÉÒԵģ¬Èç¹ûÉèÖõõ±£¬¶¼»áµÃµ½ËùÓеijߴ磬µ«ÊǶÔÓÚÓÐЩԪËØ¿´ÆðÀ´¾Í²»ÊÇÄÇôºÃ¼ÆËã³ß´çÁË¡£
¡¡¡¡½¨Òé7:Èÿհ׿ռä´óÓÚͼÏñ¿Õ¼ä¡£ÈÃͼÏñ¿Õ¼ä´óÓÚ°´Å¥µÄ´óС¡£Èç¹û½«°´Å¥£¬¶àÑ¡¿ò£¬Çл»¿Ø¼þ·Å´óºóÊǺܳóªµÄ¡£Ò»¸ö100dip(0.63")´óСµÄ°´Å¥ÊDz»ÏëÔÚƽ°åÉÏÏÔʾΪÔÀ´Á½±¶¿í¶È200dip(1.25")µÄ.ÔÒòÊÇÆÁÄ»±ä´óÁË£¬Õâ²»ÊÇ˵ƽ°åÊǸø¾ÞÈËÓõġ£ÎÒÃÇ¿ÉÒÔÕâÑù×ö£¬ÔÚ°´Å¥Ôö¼ÓµÄ¿Õ¼äºÍͼƬÀ©Õ¹µÄ¿Õ¼äÀïÌí¼Ó¿Õ°×¡£
¡¡¡¡½¨Òé8:ÓÃGraphicalLayout¹¤¾ß¿ìËÙÔ¤ÀÀ¡£GraphicalLayoutÊÇWYSIWG XML±à¼Æ÷¡£ÎÒϲ»¶Ö±½Ó±àдԪËØ-¶ø²»ÊÇÍÏ£¬¶ªÆúµÄ¿É¼û±à³Ì·½Ê½£¬µ«ÔÚÌí¼ÓһЩԪËØÖ®ºó£¬¿ÉÒÔÔÚGraphicalLayoutµÄÏÂÀÑ¡Ôñ²Ëµ¥ÀïÑ¡Ôñ²»Í¬ÆÁÄ»³ß´ç½øÐвâÊÔ¡£
¡¡¡¡ÕâÀïÓкܶàÑ¡ÏÄãÑ¡Ôñ¡£
¡¡Í¼Æ¬Ëõ·Å
¡¡¡¡½¨Òé9:²»Òª°ÑËùÓеÄͼƬ¶¼Ëõ·ÅÁË¡£Óò¼¾ÖÎļþÀ´ÊÊÓ¦²»Í¬ÆÁÄ»³ß´çµÄ·½·¨Ö»Êdzɹ¦µÄÒ»°ë£¬²¼¾ÖÀïµÄÔªËØ(È磺ͼƬ)Ò²ÒªÄÜÔڸ߷ֱæÂʵÄÆÁÄ»ÏÂÁ¼ºÃ¹¤×÷¡£ÔÚ¸ÅÄîÉϱȽϼòµ¥µÄ·½Ê½¾ÍÊÇ´´½¨Ò»Ì×ÍêÕûµÄͼƬĿ¼²¢½«ËüÃÇÓëºÜ¶àdrawableĿ¼ƥÅäÆðÀ´¡£
¡¡¡¡drawable-sw600dp-ldpi
¡¡¡¡drawable-sw600dp-mdpi
¡¡¡¡drawable-sw600dp-hdpi
¡¡¡¡drawable-sw600dp-xhdpi
¡¡¡¡drawable-sw600dp-xxhdpi
¡¡¡¡...ÆäËüµÄÀàËÆ¡£
¡¡¡¡²»ÒªÕâÑù×ö£º
¡¡¡¡Ä㲻Ҫ̫¾¡ÐÅÊéÁË¡£
¡¡¡¡Ò»°ãÀ´ËµÓÐdrawble-ldpi, drawable-hdpiµÈĿ¼¾Í×ã¹»ÁË£¬²»ÐèÒª½«ËùÓеÄÇé¿ö¶¼¼ÓÉÏ¡£
¡¡¡¡½¨Òé10:±ÜÃâʹÓÃλͼ(jpg,png)¡£¶ÔÓÚһЩͼ±êÀ´Ëµ£¬ÓÃλͼÊǸö²»´íµÄÑ¡Ôñ£¬ÒòΪËüÃÇʹÓüòµ¥¡£µ«ÊÇÈç¹û¿ÉÒÔ±ÜÃâʹÓÃλͼ£¬Äã¿ÉÒÔ½ÚÊ¡ºÜ¶à¿Õ¼ä¡£µ«Óò»Í¬µÄ·½·¨Ò²¿ÉÒÔ´ïµ½ºÜºÃµÄ½á¹û¡£
¡¡¡¡½¨Òé11:ÓÃXML»æͼ¡£Î»Í¼¶¼¿ÉÒÔÓÃXML»æͼÀ´´úÌæµÄ¡£XML»æͼ²»ÊÇÍòÄܵģ¬µ«ÊÇËüµÄ·½±ãÐÔ»¹ÊÇʹÎҸе½¾ªÑÈ¡£Android¿ª·¢ÎĵµÖÐÓÐÏêϸµÄ½éÉÜ£¬ÕâÀïÓиö¼òµ¥µÄÀý×Ó£º
|
< shape xmlns:android = "http://schemas.android.com/apk/res/android" android:shape = "rectangle" > < corners android:bottomRightRadius = "14dp" android:bottomLeftRadius = "14dp" android:topLeftRadius = "14dp" android:topRightRadius = "14dp" /> < gradient android:startColor = "@color/off_white" android:endColor = "@color/pale_yellow" android:angle = "270" android:type = "linear" /> < stroke android:width = "4dp" android:color = "@color/osm_darkerblue" />
|
¡¡¡¡ÕâÀïÊǶ¨ÒåÁËÒ»¸öÔ²½Ç¾ØÐΣ¬Ò»¸öÓн¥±äµÄ±ß(ÉîÀ¶)¡£Äã¿ÉÒÔÔÚ²¼¾ÖÎļþµÄÈκεط½À´ÒýÓ㬶øÇÒËü¿ÉÒÔÊÊÓ¦ÓÚÈκÎÆÁÄ»¡£ÓÃËü¿ÉÒÔ×ö³öÀíÏëµÄ°´Å¥¡£
¡¡¡¡½¨Òé12:Óøü¶àµÄXML»æͼ¡£ÔÙÀ´½éÉÜÒ»¸öÓÃXML»æͼÖÆ×÷³öÄܸü¼ÓÈÃÄãÐ˷ܵÄÀý×Ó£¬ÏÂÃæµÄÀ×´ï±³¾°¿´ÆðÀ´ÊDz»ÊǸü¼ÓµÄ¸´ÔÓ£º
¡¡¡¡²»ÓÃλͼ¶ÔÄãµÄUIÊÇûÓлµ´¦µÄ(³ý¹ýͼ±ê)¡£
¡¡¡¡½¨Òé13:ÈÔÈ»Óøü¶àµÄXML»æͼ(Èç¹û±ØÐ룬¾ÍÓÃλͼ)¡£ÄÇÎÒÃÇÔõÑùΪÌìÆøÐźŹ¹½¨Ò»¸ö³¬¿áµÄͼ±ê-ÈõÆÅݶ¯Ì¬µÄÒÀ¾Ý¹âµÄÇ¿¶ÈÀ´½øÐÐ×Ô¶¯Ìî³ä£¬ÒÔ¼°Ôõôµã»÷Ö¸ÕëºóÈÃÆäÐýתÄØ£¿ÕâÀïÎÒÃÇÓÃλͼºÍXML½áºÏÆðÀ´×ö¸öÀý×Ó£º
¡¡¡¡µÆÅÝÎÒÃÇÓÃPNGͼ£ºicon_magnitude_min(Ò»¸ö¿ÕµÄµÆÅÝ)ºÍicon_magnitude_max(³äÂú¹âµÄµÆÅÝ)£¬È»ºóÎÒÃǶ¯Ì¬µÄ²Ã¼ôºóÕß¡£ÎªÁËʵÏÖÕâ¸öÄ¿±êÎÒÊÇÕâÑù×öµÄ£º
|
< layer-list xmlns:android = "http://schemas.android.com/apk/res/android" > < item android:drawable = "@drawable/icon_magnitude_min" /> < item > < clip android:clipOrientation = "vertical" android:drawable = "@drawable/icon_magnitude_max" android:gravity = "top" />
|
¡¡¡¡ÔÚjava³ÌÐòÖÐÎÒ½«µÃµ½»ØÐÎÕëµÄÒýÓã¬È»ºó¿ÉÒÔÓÃËüÀ´¿ØÖƹâµÄÇ¿¶È¡£
¡¡¡¡½¨Òé14: ΪʲôҪÓÃ9-patch (µ±Äã¿ÉÒÔÓÃXML drawablesµÄʱºò)? Android¾ßÓÐʹÓÃ9-patches À´¶¨ÒådrawablesµÄÑ¡Ôñ£¬ÓÐЩ½Ì³Ì²ûÊöÁËÔõÑùÓÃËüÃÇÀ´×öÒ»¸ö°´Å¥£¬ÕâÑù¿ÉÒÔÔÚÉìÕ¹µÄʱºò±£³Ö¼¸¸ö½Ç²»±ä (²¢ÇÒ±ÜÃâÁËÏñËØ´¦Àí)¡£Èç¹ûÄãÒѾ֪µÀÔõÑùʹÓÃ9-patches£¬¿ÉÄÜÊÇ´ÓwebÉè¼ÆÖÐѧ»áµÄ£¬ÄÇôËüÃÇ»òÐíÖµµÃÒ»Óá£Èç¹ûÄã¶Ô9-patches²¢²»ÊìϤ£¬ÎÒ½¨ÒéÄãά³ÖÔÑù¡£Èç¹ûÄãÏëÊÊӦʲô¶«Î÷——ÀýÈç¹Õ½ÇµÄÔ²»¡»òÕßÑÕÉ«£¬´´½¨9¸öС¿éÒª±È´´½¨Î»Í¼¸ü¶à±»Éæ¼°£¬Õâ¾ÍÏñ»Øµ½ÁËͼÏñ±à¼Æ÷µÄʱ´ú¡£Ðí¶àÓÃ9-patches»ñµÃµÄЧ¹ûÒ²¿ÉÒÔͨ¹ýXML»ñµÃ¡£
¡¡½¨Òé15: ͨ¹ý¸²¸ÇonDraw()´´½¨×Ô¶¨Òåviews. ÓÐЩÊÂÇéXML²¢²»Ê®·ÖÔÚÐУ¬ÎÒÃÇÔÚOpenSignalºÍWeatherSignalÖл¹ýÐí¶àͼÏñ£¬Îª´ËÓÐÐí¶àµÄ¿â£¬µ«ÊÇÎÒÃÇҪΪ×Ô¶¨ÒåͼÏñ×Ô¼º±àд´úÂë¡£ÕâºÜÓÐȤ¡£»òÐíÄãÓÀÔ¶Ò²²»ÐèÒª×öÕâ¸ö£¬µ«ÎªÁËʹͼÏñ¸ß¶È¶¯Ì¬²¢×Ô¶¨Ò壬Õâ¾³£ÊÇΨһ¿ÉÐеİ취¡£
¡¡¡¡½¨Òé16:ÔÚ²»ÄÜʹÓÃXMLµÄµØ·½Ê¹ÓÃSVG. ÓÐʱºò¸²¸ÇonDraw()²¢ÇÚÇÚ¿Ò¿ÒµÄΪ×Ô¶¨Òåview±àд´úÂ뻳öÐèÒªµÄÏßÌõÓ뻡ÏßÊǹýÓÚ¼¼Êõ»¯ÁË¡£±Ï¾¹ÓÐÒ»ÖÖʸÁ¿Í¼ÏñÓïÑÔ£¬Ëü³Æ×÷…Scalable Vector Graphics£¨¿ÉÀ©Õ¹Ê¸Á¿Í¼ÐΣ©¡£ËüÒ²ÊÇÊ·ÉÏ×î¿áµÄAndroidÓ¦ÓÃÖ®Ò»—AndroidifyµÄ¶¯Á¦À´Ô´¡£ÊÂʵÉÏËûÃÇ´´½¨Õâ¸ö¿â¾ÍÊÇΪÁËÄÇ¿îÓ¦Óã¬ËûÃǽ«Ëü·¢²¼ÔÚÕâÀSVG for Android ¡£ÕâÒ²¾ÍÊÇÎÒÃÇÔÚOpenSignalÖлÒDZíÅÌËùÓõ½µÄ¡£
¡¡¡¡½¨Òé17: ¶ÔSVGÎļþGZipѹËõ. ½«ËüÃDZäµÃ¸üСËüÃǾͻᴦÀíµÄ¸ü¿ì¡£
¡¡¡¡½¨Òé18: SVG¿â²¢²»ÊÇÖ§³ÖÒ»ÇÐ. ÔÚһЩÌض¨µÄalphaͨµÀÖÐËƺõ²»ÄÜÕý³£¹¤×÷£¬ÄãÉõÖÁ²»µÃ²»ÔÚ´úÂëÖн«ËüÃÇÌÞ³ý¡£
¡¡´ïµ½ÔÚandroidËùÓа汾Àï±íʾչÏÖÒ»ÖµÄÄ¿±ê
¡¡¡¡½¨Òé19£ºÔÚһЩandroidϵͳÀÈçTouchWhizz/HTC Sense/MotoBlurµÈµÈ£©£¬Ä¬ÈϵÄbuttonsºÍÆäËûUI×é¼þ»á¸úÔÉúϵͳÀïµÄ¿´ÆðÀ´²î±ðºÜ´ó¡£ÎÒÏ£ÍûÕâ²»ÊÇÕæµÄ£¬µ«ÊÂʵȴÊÇÈç´Ë¡£
¡¡¡¡½¨Òé20£º×Ô¶¨ÒåÄãµÄUI×é¼þ¡£ÎªÁËÈ·¶¨ÄãµÄappÔÚËùÓеÄÉ豸Àï¿´ÆðÀ´ÊÇÒ»Öµģ¬Ä㽫ÐèÒª×Ô¶¨ÒåËùÓеĶ«Î÷¡£ÕâÆäʵûÓÐÄãÏëÏóÖÐÄÇôÄÑ£¬Ö»ÒªÄã×öµ½ÁË£¬Ä㽫Äܸü¼ÓºÃµØ°ÑÎÕµ½ÄãµÄappµÄչʾÍâ¹Û¡£
¡¡¡¡½¨Òé21£ºSelectorsÊÇ´´½¨buttonsµÄÀûÆ÷¡£ÎÒÃÇÔÚÉÏÃæÌáµ½ÁËÈçºÎÔÚXMLÀﶨÒåbuttonµÄ±³¾°£¬µ«ÊÇÄ㽫ÈçºÎ´´½¨Ò»¸öµ±°´ÏÂÈ¥»á¸Ä±äµÄbuttonÄØ£¿ºÜ¼òµ¥£ºÏñÏÂÃæÄÇÑùÔÚxmlÎļþÀﶨÒå±³¾°¡£¸ÃxmlÎļþ½«½ÓÊÕµ½buttonµ±Ç°×´Ì¬²¢ÇÒÔÚÍâ¹ÛÉÏ×ö³öÏàÓ¦µÄ¸Ä±ä¡£
|
|
¡¡¡¡½¨Òé22:ÔÚHoneycomb֮ǰµÄ°æ±¾Àïʱ²»´æÔÚActionBar¸úºÜ¶à animation ÑùʽµÄ£¬ËùÒÔ¿ÉÒÔʹÓÃActionBarSherlock ¸úNineOldAndroidsÀ´´úÌæ¡£Jake WhartonдµÄAndroid¿ªÔ´ ×é¼þ¶¼ÊÇÍùϼæÈݵľ«ÐĽÜ×÷¡£¸üΪ¾ªÏ²µÄÊÇ£¬ABS ÓµÓÐÇ¿´óµÄ¹¦ÄÜÓÃÀ´¶¨ÒåActionBar¡£
¡¡¡¡°ÑËÙ¶È×÷ΪĿ±ê
¡¡¡¡½¨Òé23:ÔÚÔËÐÐÂýµÄÊÖ»úÉϲâÊÔ¡£Ä㽫ÔÚÔËÐÐÂýµÄÊÖ»úÉÏ·¢ÏֺܶàÎÊÌ⣬ͬʱËüÈÃÄã×¥¿ñ£¬Ã»ÈË»áϲ»¶ÔËÐÐÂýµÄ³ÌÐò¡£
¡¡¡¡½¨Òé24:¾¡Á¿¼õÉÙXML²¼¾Ö²ã´Î¡£¸ü¶àµÄ²ã´ÎÒâζ×Åϵͳ½«Îª½âÎöÄãµÄ´úÂ븶³ö¸ü¶àµÄ¹¤×÷£¬Õ⽫»áÈÃͼÏñäÖȾµÄ¸üÂý¡£
¡¡¡¡½¨Òé25:ÓÃAndroid Lint¡£ÔÚ¹¤³ÌĿ¼ÉÏÓÒ¼üÑ¡ÔñEclipse>Android Tools>Run Lint¡£Ëü½«»áµÃµ½³ÌÐòµÄһЩÐÅÏ¢£¬²¢ÄÜÌá¸ß³ÌÐòµÄÔËÐÐËٶȣ¬»òÕßËüÄÜÈÃÄãµÃ´úÂë¸ü¼ÓÇåˬ¡£
¡¡¡¡½¨Òé26:Android Lint¿ÉÒԵõ½´íÎóÐÅÏ¢¡£Ëü¿ÉÒÔ¸øÄãµÄ´úÂëÌṩºÜÏêϸµÄÐÅÏ¢£¬²¢ÔÚÄã³ö´í֮ǰ¾Í¿ÉÒÔ¸ø×ö³öÌáʾ¡£
¡¡¡¡½¨Òé27:ÓÃ
¡¡¡¡½¨Òé28:ÓÃHierarchyViewer¿ÉÒÔÖ±¹ÛµÄ¿´µ½Äã²¼¾ÖµÄ²ã´Î¡£Õâ¸öÖÇÄܵŤ¾ß¿ÉÒÔÏÔʾ²¼¾ÖÖÐÓжàÉÙ²ã´Î£¬¶øÇÒ¿ÉÒÔÌáʾ³öÄÇЩ¿ÉÒÔÈóÌÐò±äÂý¡£
¡¡¡¡½¨Òé29:Èç¹û¿ÉÒÔ¾¡Á¿ÓÃRelativeLayout¡£AbsoluteLayoutÒѾ¹ýÆÚÁË£¬¾Í²»ÒªÓÃÁË¡£Äã¾³£»áÓöµ½ÔÚRelativeLayoutºÍLinearLayoutÖÐ×ö³öÑ¡ÔñµÄÇé¿ö£¬ÄǾÍÖ±½ÓÓÃRelativeLayouot°É£¬ÒòΪËü¿ÉÒÔÈÃÄã¼õÉÙÊÓͼ²ã´Î¡£±ÈÈ磬ÄãÏëʵÏÖÒ»¸öÈçÏÂÊÓͼ£º
¡¡¡¡ºÐ×Ó A ÔÚÆÁÄ»×ó°ë±ß |ºÐ×Ó BÔÚÆÁÄ»ÓÒ°ë±ß
¡¡¡¡ÄãÊ×ÏÈ»áÏëµ½Õâô×ö£º
|
< LinearLayout android:layout_width=”match_parent” android:layout_height=”wrap_content” android:orientation=”horizontal” > < TextView android:text=”Box A takes up left half of the screen” android:layout_width=”0dip” android:layout_height=”wrap_content” android:layout_weight=”1″ /> < TextView android:text=”Box B takes up left half of the screen” android:layout_width=”0dip” android:layout_height=”wrap_content” android:layout_weight=”1″ />
|
¡¡¡¡µÚ¶þ¸ö±íµ¥±ÈµÚÒ»¸öÄÑ¿´µÄ¶à£¬ÊÂʵÉÏÊÇÏ൱µÄÔã¸â£ºÎÒÃÇÒѾ½éÉܹýÒ»¸öÍêÕûµÄÐÂÔªËØÁË¡£µ«ÊǼÙÈçÎÒÃÇÒª¸øÿ¸öºÐ×ÓÀï¼ÓÈëÒ»¸öͼƬ£¬Ò»°ãµÄÎÒÃǽ«ÕâÑù×ö£º
¡¡¡¡ºÐ×Ó A ÔÚÆÁÄ»×ó°ë±ß ͼƬ|ºÐ×Ó BÔÚÆÁÄ»ÓÒ°ë±ß ͼƬ
¡¡¡¡ÓõÚÒ»Öз½·¨£¬ÄãµÃ´´½¨Ò»¸öÓÐÁ½¸ö²ã´ÎµÄLinearLayout£¬Èç¹ûÓõڶþÖÖ·½·¨£¬Äã¿ÉÒÔÖ±½ÓÔÚͬһ¸öRelativeLayoutÖмÓÈëͼƬ£¬±ÈÈçÒªÖ¸¶¨µÚÒ»¸öͼƬ±ØÐëÔÚ“dummy_center”µÄ×ó±ß£¬¶øÇÒÒ»¸öTextView A±ØÐëÒ²ÔÚÆä×ó²à¡£ÄÇôÄã¾ÍµÃÓÃ7¸öÔªËØ3¸öÊÓͼ²ã´ÎÁË(LinearLayout ·½Ê½)£¬¶ø(RelativeLayout·½Ê½)Ö»ÓÃ6¸öÔªËØ2¸ö²ã´Î£¬ÕâÑùËùÓеŤ×÷Ìí¼ÓÍê³É¡£
¡¡¡¡½¨Òé30£ºÓÃһЩÀ©Õ¹¹¤¾ßÈçDDMS¡£Õâ¿ÉÒÔ°ïÖúÄã·¢ÏÖһЩ²»±ØÒªµÄÍøÂçµ÷Óᢲ鿴µç³ØʹÓÃÁ¿¡¢À¬»ø»ØÊÕÐÅÏ¢£¬×´Ì¬±ä»¯(Àý×Ó£ºµ±»Øµ÷onStopºÍonDestroyʱ)µÈ¡£LittleEyeÊÇÎÒÄ¿Ç°±È½Ïϲ»¶µÄ¹¤¾ß¡£
¡¡¡¡½¨Òé31£ºÓÃAsyncTasks¡£Anroid¹¤³ÌÍŶÓÊܹ»ÁËÈËÃǾ³£ÔÚUIÏß³ÌÀïÃæʵÏÖÍøÂçµ÷ÓÃ(Òë×¢£ººÄʱ²Ù×÷£¬ÈÝÒ××èÈûUIË¢ÐÂ)£¬ËùÒÔËûÃÇʵÏÖÁËһЩ¿É²úÉú±àÒ뼶´íÎóÐÅÏ¢µÄAPI¡£µ«ÊÇÈÔÈ»ÔںܶàappÖеÄһЩ¹¤×÷»áÍÏ¿åUIỊ̈߳¬ÎÒÃÇÒª¿¼Âǵ½UI²¼¾ÖÒª¿ìÒÔ¼°Ìá¸ßUIµÄÏìÓ¦ÐÔ¡£
¡¡¡¡Ä¿±ê»úÆ÷¿Õ¼äС
¡¡¡¡½¨Òé32£ºÒ»Ð©AandroidÉ豸ÓÐ100mb¿Õ¼ä´óСµÄÏÞÖÆ¡£ÏÖÔÚÇé¿öÒÑÓб仯ÁË£¬µ«ÊÇÈÔÈ»ÓкܶàÓû§»¹»áµ£ÐÄ5Mb´óСµÄapp»áÀ˷ѿռ䡣Èç¹ûÄã¿ÉÒÔÑ¡Ôñ½«app×°ÈëSD¿¨µÄ»°£¬Õâ¾Í²»ÊÇÎÊÌâÁË£¬µ«Èç¹ûÄãµÄappÐèÒªÔÚonBootÀïÆô¶¯µÄ»°Äã¾Í²»ÄÜ×°ÈëSD¿¨ÁË(Àý×Ó£ºÈçһЩ´°ÌåС²¿¼þ).ÉõÖÁ¶ÔÓÚһЩеÄÉ豸£¬Èç¹ûÄܺܿìµÄÏÂÔØÒ»¸öСµÄAPKµÄ»°£¬Óû§»¹ÊǺܸßÐ˵ġ£
¡¡¡¡½¨Òé33£ºÓÃXML×ÊÔ´(ÎÒ·¢ÊÄÉÏ´ÎÎÒÒѾÌáÐѹýÁË)£¬Õ⽫±ÈPNG×ÊÔ´½ÚÊ¡ºÜ¶à¿Õ¼ä£¬µ±Äã½ö½öÐèÒªÒ»¸ö¿ÉÒÔÂú×ãºÜ¶àÆÁÄ»´óСµÄÅäÖÃʱ£¬Ò»¸öXMLÎļþ»á±ÈÄÜʵÏÖͬÑù¹¦ÄܵÄPNGÊ¡¿Õ¼ä¡£
¡¡¡¡½¨Òé34£ºÈç¹ûÒªÓÃPNG£¬×îºÃÓÅ»¯Ò»ÏÂ(ÓÃPNGCrush»òImageOptim)
¡¡¡¡Ä¿±êbugs
¡¡¡¡½¨Òé35:ÔÚAndroid¿ª·¢Õß¿ØÖÆ̨Àï¼ì²éËùÓб»×Ô¶¯¼ì²â³öÀ´µÄbugs.¡¡
¡¡¡¡½¨Òé36: ProGuardÏÖÔÚÊÇĬÈÏÆô¶¯×ŵÄ. ProguardÌ«ºÃÓÃÁË (Ìá¸ßÄãappµÄËٶȺͽµµÍÎļþ´óС)£¬µ«ÕâÒ²ÈÃStackTraces ·Ç³£ÄÑÒÔ´¦Àí¡£Ä㽫ÐèÒªÖØÐÂ×·×ÙÄãµÄStackTraces£¬Òò´ËÄ㽫ÐèÒª¼ÌÐø±£ÁôÔÚÿ´Î¹¹½¨Öд´½¨µÄProguardµÄÓ³ÉäÎļþ¡£ÎÒ°ÑËüÃǶ¼·Åµ½ÒÔ´úÂë°æ±¾ºÅÃüÃûµÄÎļþ¼ÐÀï¡£
¡¡¡¡½¨Òé37: ΪÁËÏÔʾStackTracesÀïµÄÐÐÊý£¬ÄãÐèÒªÐÞ¸ÄProGuardµÄÅäÖá£È·ÈÏÄãµÄproguard.cfgÓµÓÐÏÂÃæÕâ¾ä»°£º
-keepattributes SourceFile,LineNumberTable
¡¡¡¡½¨Òé38£ºÊ¹ÓÃstaged rollouts¡£²âÊÔ5%µÄ»ù´¡Óû§£¬²¢ÇÒ¹Û²ìbug±¨¸æ¡£
¡¡¡¡½¨Òé39£ºÊ¹ÓÃÕæʵÉ豸²âÊÔƽ̨¡£Device Anywhere and Perfecto MobileÌṩÁËÐéÄâ²âÊÔƽ̨£¬ÔÚÄÇÀÄã¿ÉÒÔʹÓÃÕæÕýµÄÒƶ¯É豸¡£ÎÒ·¢ÏÖËûÃÇÓÐһЩ±¿×¾£¬¼ÓÈëÁ¬Ðø²»¶ÏµØ½øÐвâÊԵĻ°£¬»áµ¼ÖÂÓÐһЩÔã¸âµÄÇé¿ö¡£Èç¹ûÄãÔÚÁªºÏ°ì¹«µÄ»·¾³À﹤×÷£¬»òÕßÓÐһЩAndroid¿ª·¢µÄºÃÓÑ£¬ÄÇôȥÆô¶¯Ò»¸ö“É豸³Ø”°É¡£
¡¡¡¡½¨Òé40: ¶àд´úÂëÉÙд²©¿Í¡£Æäʵ²»ÊǵÄ, ·ÖÏí¾ÍÊǹذ®, ÎÒÖ»ÊÇÏë²»³öµÚ40ÌõдʲôÊÇÁË¡£
תÔØÇë×¢Ã÷£º ÎÄÕÂתÔØ×Ô£º°®Ë¼×ÊÔ´Íø http://www.aseoe.com/show-17-63-1.html