ÐÂÒ»´ú Android ¿ª·¢ÕßӦעÒâµÄ 40 ÌõÓÅ»¯½¨Òé

µ¼Óï ÏÂÃæÊÇ¿ªÊ¼Android±à³ÌµÄºÃ·½·¨£ºÕÒһЩÓëÄãÏë×öÊÂÇéÀàËƵĴúÂëµ÷ÕûËü£¬³¢ÊÔÈÃËü×öÄãÏñ×öµÄÊÂÇé¾­ÀúÎÊÌâʹÓÃStackOverflow½â¾öÎÊÌâ¡¡¡¡¶Ôÿ¸öÄãÏñÌí¼ÓµÄÌØÕ÷Öظ´ÉÏÊö¹ý³Ì¡£ÕâÖÖ·½·¨Äܹ»¼¤ÀøÄ㣬ÒòΪÄãÔÚ±£³Ö²»¶Ï

ÏÂÃæÊÇ¿ªÊ¼Android±à³ÌµÄºÃ·½·¨£º

  •  ÕÒһЩÓëÄãÏë×öÊÂÇéÀàËƵĴúÂë
  •  µ÷ÕûËü£¬³¢ÊÔÈÃËü×öÄãÏñ×öµÄÊÂÇé
  •  ¾­ÀúÎÊÌâ
  •  Ê¹ÓÃStackOverflow½â¾öÎÊÌâ

¡¡¡¡¶Ôÿ¸öÄãÏñÌí¼ÓµÄÌØÕ÷Öظ´ÉÏÊö¹ý³Ì¡£ÕâÖÖ·½·¨Äܹ»¼¤ÀøÄ㣬ÒòΪÄãÔÚ±£³Ö²»¶Ïµü´ú£¬²»¾­ÒâÖÐÄãѧµ½Á˺ܶࡣȻ¶ø£¬µ±Äã·¢²¼Ó¦ÓÃʱÄ㻹Ҫ×öһЩ¸üÉîÈëµÄÊÂÇé¡£

¡¡¡¡´ÓһЩ¿ÉÕý³£¹¤×÷µÄ´úÂëµ½Ò»¸ö¿ÉŵÄÓ¦ÓóÌÐòÊÇÒ»¸ö¾Þ´óµÄÌøÔ¾£¬Ïà±ÈiOSƽ̨Android¸üÊÇÈç´Ë ¡£µ±ÔÚiOSÉÏ·¢²¼Ó¦ÓÃʱֻÊÇÔÚÒ»¸öÉ豸ÉÏÌøÔ¾–ÄãµÄÊÖ»ú–¶ÔºÜ¶àÉ豸¶øÑÔ¶¼ºÜÏàËƖͬÑù´óСµÄÆÁÄ»£¬¶¼ÓкܺõÄÓ²¼þ£¬95%ÉÏÔËÐÐÏàͬ°æ±¾µÄ²Ù×÷ϵͳ¡£ÔÚAndroidÓ¦ÓÃÖÐÄã²»»áÓöµ½ÕâÖÖÇé¿ö¡£

¡¡¡¡ÄãµÄ³ÌÐò±ØÐëÄܹ»´¦ÀíÒ»ÇУº´ÓÆÁÄ»£¬´¦ÀíÆ÷£¬¶¨ÖƵIJÙ×÷ϵͳ£¬API²ã¼¶ÒÔ¼°ÈκÎÆäËûµÄÌض¨É豸¡£

¡¡¡¡ÕâÊÇÎÒ¶ÔʹAndroidÓ¦ÓÃÊæ·þÆðÀ´µÄ¸öÈ˽¨Òé¡£

¡¡Ä¿±êÆÁÄ»³ß´ç¼°½â¾ö·½·¨

¡¡¡¡ÔÚAndroidÊÀ½çÀïÄ¿Ç°Óг¬¹ý100ÖֵIJ»Í¬ÆÁÄ»³ß´ç£¬µ«½â¾ö·½·¨Ò²ºÜ·á¸»¡£ÎªÊ¹ÄãµÄÓ¦ÓÃÊÊÓ¦²»Í¬µÄÆÁÄ»ÅäÖÃÓÐÁ½¼þÊÂÇéÄãÐèҪȷ¶¨£º

  1. Äã¶Ô²»Í¬µÄÆÁÄ»³ß´çÓÐÒ»¸öºÃµÄ²¼¾ÖºÍ½á¹¹
  2. ÄãµÄͼÏñÔÚ²»Í¬·Ö±æÂÊϹ¤×÷Á¼ºÃ

¡¡¡¡ÕâЩ¶¼ÊǶÀÁ¢µÄÈÎÎñ£¬Äã¿ÉÄÜÓÐÒ»¸ö³¬¼¶µÄtablet²¼¾Ö£¬µ«ÉÏÃæµÄͼÐο´ÆðÀ´ºÜÔã¸â¡£ÎÒÃÇ»áÒÀ´ÎÌÖÂÛËûÃÇ¡£

¡¡Îª²»Í¬µÄÆÁÄ»¶øÉè¼Æ

¡¡¡¡1.ͨ³£»áÓÃScrollView ºÍ ListView ÇáËɸ㶨

¡¡¡¡µ±ÎÒÃÇÓÐһϵÁв»Í¬³ß´çµÄ´óÆÁÊÖ»úʱ£¬ËüÃÇÖ®¼ä×î´óµÄ²»Í¬¾ÍÊÇÆÁÄ»µÄ¸ß¶È¡£Òò´ËScrollViewºÍListViewͨ³£¿ÉÊÇÓÐЧµÄ¹¤×÷£¬ËäÈ»ÓÐʱËüÃDz¢²»ÄÜÍêÈ«¸²¸ÇÈ«²¿ÆÁÄ»¡£ÔÚOpenSignalÖеÄDashboard±êÇ©ÏÂÎÒÃÇ¿ÉÒÔ¿´µ½ËùÓв¿¼þÒ»ÆøºÇ³É£¬²»´æÔÚ»¬¶¯¡¢¶ÔÓÚÐí¶à¸ß¼¶ÀàÐͱêÇ©ÖУ¬»¬¶¯Õ¹Ê¾²¢²»¼ûµÃÊÇÒ»¼þ»µÊ¡£Èç¹ûÄãÄܹ»ÎªÄãËùÓеÄÉè¼ÆÆ¥Åäµ½¸÷ÖÖÆÁÄ»ÉÏÃæÈ¥£¬ÄÇô×îºÃ²»¹ý¡£·ñÔò£¬ÕâÁ½¸ö¿Ø¼þ»áÈÃÄãÓÃ×îСµÄ¿ª·¢´ú¼ÛÀ´±£Ö¤ÄãµÄÈí¼þÔÚ´ó¶àÊýÆÁÄ»ÉÏÕý³£Õ¹Ê¾¡£

opensignal_dashboard1

¡¡¡¡Dashboard style µÄÉè¼Æ²»ÐèÒªscroll

¡¡¡¡2: ʹÓÃÎļþ¼Ð. Android µÄ×ÊÔ´Îļþ¼Ð½á¹¹·Ç³£Ç¿´ó, ËüÔÊÐí¿ª·¢Õß½«²»Í¬µÄͼƬ¡¢×Ö·û´®¡¢²¼¾ÖÎļþ¡¢ÍâÐΡ¢ÑÕÉ«ÕâЩ×ÊÔ´£¬ÔÚapi¡¢´úÂë¡¢ÆÁÄ»³ß´çµÈ²¿·Ö. ÏÂÃæÊÇÒ»¸öÀý×Ó£¬Õ¹Ê¾ÁËÔÚ×ÊÔ´Îļþ¼ÐÏÂÄã¿ÉÒÔÔõÑù×ö:

Screen Shot 2013-07-29 at 10.32.18

¡¡¡¡ÔÚ values-small Îļþ¼ÐÖдæ·ÅÁËÒ»¸ö bools.xml Îļþ, ÎļþÖÐÓÐÈçϼ¸ÐдúÂë:

 
 
 
<resources>
<bool name="small_screen">truebool>
resources>

¡¡¡¡ÔÚ´úÂëÖÐÎÒ¿ÉÕâÑùÒýÓÃ:

 
 
 
if(getResources().getBoolean(R.bool.small_screen)){
getSupportActionBar().hide();
}

¡¡¡¡ÔÚС³ß´çÉ豸ÖÐbooleanÖµ½«ÖÃΪtrue ÎÒ´Ëʱ½«Òò´ËActionBarÀ´½ÚÊ¡¿Õ¼ä. Õâ¶Î´úÂëÕýÊÇ·Ç·²µÄActionBarSherlock À©Õ¹¿âÖеÄÒ»²¿·Ö,ÉÔºóÔÙÏêϸ½éÉÜ. ÔÚvalues-sw360dpÎļþ¼ÐÖУ¬´æ·Å¶ÔÓ¦ÆÁÄ»¿íÓÚ360dpµÄ×ÊÔ´Îļþ¡£ÓëÉÏÃæÏàͬµÄλÖã¬ÓÐÈçÏ´úÂë

 
 
 
<resources>
<bool name="small_screen">falsebool>
resources>

¡¡¡¡¶ÔÓÚ´óÆÁÄ»¶øÑÔ£¬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">4dpdimen>
resources>

¡¡¡¡Õâ¸ö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"/>
shape>

¡¡¡¡ÕâÀïÊǶ¨ÒåÁËÒ»¸öÔ²½Ç¾ØÐΣ¬Ò»¸öÓн¥±äµÄ±ß(ÉîÀ¶)¡£Äã¿ÉÒÔÔÚ²¼¾ÖÎļþµÄÈκεط½À´ÒýÓ㬶øÇÒËü¿ÉÒÔÊÊÓ¦ÓÚÈκÎÆÁÄ»¡£ÓÃËü¿ÉÒÔ×ö³öÀíÏëµÄ°´Å¥¡£

¡¡¡¡½¨Òé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"
/>
item>
layer-list>

¡¡¡¡ÔÚ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µ±Ç°×´Ì¬²¢ÇÒÔÚÍâ¹ÛÉÏ×ö³öÏàÓ¦µÄ¸Ä±ä¡£

 
 
 
 
 
 
xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/btn_bg_selected" />
<item android:state_focused="true" android:drawable="@drawable/btn_bg" />
<item android:drawable="@drawable/btn_bg" />
selector>

¡¡¡¡½¨Òé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:ÓÿÉÒÔ°ïÖúÄã¼õÉÙÊÓͼ²ã´Î½á¹¹¡£ÕâÊÇÒ»ÖÖ¼òµ¥µÄ·½Ê½À´È¥³ý¶àÓàµÄ²ã´Î¡£ºÃµÄÎÄÕ¶¼¶Ô´ËÓÐËù½âÊÍ£¬¶øÇÒÔÚ Android DeveloperÖÐËüÒ²ÏÔµÃÓëÖÚ²»Í¬¡£

¡¡¡¡½¨Òé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″
/>
LinearLayout>
That works just fine, but you could also use:
<RelativeLayout
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=”match_parent”
android:layout_height=”wrap_content”
android:layout_toLeftOf=”@+id/dummy_center”
/>
<View
android:id=”@+id/dummy_center”
android:layout_width=”0dip”
android:layout_height=”0dip”
android:layout_gravity=”center”
/>
<TextView
android:text=”Box B takes up left half of the screen”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_toRightOf=”@+id/dummy_center”
/>
RelativeLayout>

¡¡¡¡µÚ¶þ¸ö±íµ¥±ÈµÚÒ»¸öÄÑ¿´µÄ¶à£¬ÊÂʵÉÏÊÇÏ൱µÄÔã¸â£ºÎÒÃÇÒѾ­½éÉܹýÒ»¸öÍêÕûµÄÐÂÔªËØÁË¡£µ«ÊǼÙÈçÎÒÃÇÒª¸øÿ¸öºÐ×ÓÀï¼ÓÈëÒ»¸öͼƬ£¬Ò»°ãµÄÎÒÃǽ«ÕâÑù×ö£º

¡¡¡¡ºÐ×Ó 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/ true ÐÂÒ»´ú Android ¿ª·¢ÕßӦעÒâµÄ 40 ÌõÓÅ»¯½¨Òé http://www.aseoe.com/show-17-63-1.html report <£¿php echo strlen($content) / 2; ?> ÏÂÃæÊÇ¿ªÊ¼Android±à³ÌµÄºÃ·½·¨£ºÕÒһЩÓëÄãÏë×öÊÂÇéÀàËƵĴúÂëµ÷ÕûËü£¬³¢ÊÔÈÃËü×öÄãÏñ×öµÄÊÂÇé¾­ÀúÎÊÌâʹÓÃStackOverflow½â¾öÎÊÌâ¡¡¡¡¶Ôÿ¸öÄãÏñÌí¼ÓµÄÌØÕ÷Öظ´ÉÏÊö¹ý³Ì¡£ÕâÖÖ·½·¨Äܹ»¼¤ÀøÄ㣬ÒòΪÄãÔÚ±£³Ö²»¶Ï
TAG:ÐÂÒ»´ú Android ¿ª·¢Õß
±¾Õ¾»¶Ó­ÈκÎÐÎʽµÄתÔØ£¬µ«ÇëÎñ±Ø×¢Ã÷³ö´¦£¬×ðÖØËûÈËÀͶ¯³É¹û
תÔØÇë×¢Ã÷£º ÎÄÕÂתÔØ×Ô£º°®Ë¼×ÊÔ´Íø http://www.aseoe.com/show-17-63-1.html

[Ç°¶Ë²å¼þÍƼö] Plugin

1 2 3 4
  • jQueryʵÏÖÖð×ÖÖð¾äÏÔʾ²å¼þl-by-l.min.js
  • jQuery´ø·½Ïò¸ÐÖªµÄÊó±ê»¬¹ýͼƬ±ß¿òÌØЧ²å¼þ
  • jQuery HotKeys¼àÌý¼üÅÌ°´ÏÂʼþkeydown²å¼þ
  • ÏìӦʽÎÞÏÞÂÖ²¥jQueryÐýתľÂí²å¼þ
ÏìӦʽÎÞÏÞÂÖ²¥jQueryÐýתľÂí²å¼þ
webÇ°¶Ë¿ª·¢
°®Ë¼×ÊÔ´Íø Copyright 2012-2014 Www.Aseoe.Com All rights reserved.(½úICP±¸13001436ºÅ-1)