锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
standard
singleTop
singleTask
singleInstance
鍙互鏍規嵁瀹為檯鐨勯渶姹備負Activity璁劇疆瀵瑰簲鐨勫惎鍔ㄦā寮忥紝浠庤屽彲浠ラ伩鍏嶅垱寤哄ぇ閲忛噸澶嶇殑Activity絳夐棶棰樸?br />
璁劇疆Activity鐨勫惎鍔ㄦā寮忥紝鍙渶瑕佸湪AndroidManifest.xml閲屽搴旂殑<activity>鏍囩璁劇疆android:launchMode灞炴э紝渚嬪錛?br />
銆銆浣嗗鏋滃緢涓嶅垢鐨勶紝浣犲仛涓嶅埌涓嶈浣犵殑紼嬪簭鍚僀PU錛屼綘灝卞彧濂戒嬌鐢⊿urfaceView鏉ュ己鍒跺埛鏂皊urface浜嗭紝涓嶇劧緋葷粺鐨?a >UI榪涚▼寰堝彲鑳芥姠涓嶈繃浣犻偅浜涘悆CPU鐨勭嚎紼嬨?/span>
銆銆褰撶劧鍏跺疄涓嶆榪欎袱縐嶆柟娉曟潵鍒鋒柊Surface鐨勶紝榪欎袱縐嶅彧鏄函Java搴旂敤姣旇緝甯歌鐨勬柟娉曘?/p>
銆銆SurfaceView鍜孷iew鏈鏈川鐨勫尯鍒湪浜庯紝surfaceView鏄湪涓涓柊璧風殑鍗曠嫭綰跨▼涓彲浠ラ噸鏂扮粯鍒剁敾闈㈣孷iew蹇呴』鍦║I鐨勪富綰跨▼涓洿鏂扮敾闈€?/p>
銆銆閭d箞鍦║I鐨勪富綰跨▼涓洿鏂扮敾闈?鍙兘浼氬紩鍙戦棶棰橈紝姣斿浣犳洿鏂扮敾闈㈢殑鏃墮棿榪囬暱錛岄偅涔堜綘鐨勪富UI綰跨▼浼氳浣犳鍦ㄧ敾鐨勫嚱鏁伴樆濉炪傞偅涔堝皢鏃犳硶鍝嶅簲鎸夐敭錛岃Е灞忕瓑娑堟伅銆?/p>
銆 銆褰撲嬌鐢╯urfaceView 鐢變簬鏄湪鏂扮殑綰跨▼涓洿鏂扮敾闈㈡墍浠ヤ笉浼氶樆濉炰綘鐨刄I涓葷嚎紼嬨備絾榪欎篃甯︽潵浜嗗彟澶栦竴涓棶棰橈紝灝辨槸浜嬩歡鍚屾銆傛瘮濡備綘瑙﹀睆浜嗕竴涓嬶紝浣犻渶瑕乻urfaceView涓?thread澶勭悊錛屼竴鑸氨闇瑕佹湁涓涓猠vent queue鐨勮璁℃潵淇濆瓨touch event錛岃繖浼氱◢紼嶅鏉備竴鐐癸紝鍥犱負娑夊強鍒扮嚎紼嬪悓姝ャ?/p>
銆銆鎵浠ュ熀浜庝互涓婏紝鏍規嵁娓告垙鐗圭偣錛屼竴鑸垎鎴愪袱綾匯?/p>
銆銆1 琚姩鏇存柊鐢婚潰鐨勩傛瘮濡傛綾伙紝榪欑鐢╲iew灝卞ソ浜嗐傚洜涓虹敾闈㈢殑鏇存柊鏄緷璧栦簬 onTouch 鏉ユ洿鏂幫紝鍙互鐩存帴浣跨敤 invalidate銆?鍥犱負榪欑鎯呭喌涓嬶紝榪欎竴嬈ouch鍜屼笅涓嬈$殑Touch闇瑕佺殑鏃墮棿姣旇緝闀夸簺錛屼笉浼氫駭鐢熷獎鍝嶃?/p>
銆銆2 涓誨姩鏇存柊銆傛瘮濡備竴涓漢鍦ㄤ竴鐩磋窇鍔ㄣ傝繖灝遍渶瑕佷竴涓崟鐙殑thread涓嶅仠鐨勯噸緇樹漢鐨勭姸鎬侊紝閬垮厤闃誨main UI thread銆傛墍浠ユ樉鐒秜iew涓嶅悎閫傦紝闇瑕乻urfaceView鏉ユ帶鍒躲?/p>
android澶氬浗璇█鏂囦歡澶規枃浠舵眹鎬誨涓嬶細
涓枃錛堜腑鍥斤級錛歷alues-zh-rCN
涓枃錛堝彴婀撅級錛歷alues-zh-rTW
涓枃錛堥娓級錛歷alues-zh-rHK
鑻辮錛堢編鍥斤級錛歷alues-en-rUS
鑻辮錛堣嫳鍥斤級錛歷alues-en-rGB
鑻辨枃錛堟境澶у埄浜氾級錛歷alues-en-rAU
鑻辨枃錛堝姞鎷垮ぇ錛夛細values-en-rCA
鑻辨枃錛堢埍灝斿叞錛夛細values-en-rIE
鑻辨枃錛堝嵃搴︼級錛歷alues-en-rIN
鑻辨枃錛堟柊瑗垮叞錛夛細values-en-rNZ
鑻辨枃錛堟柊鍔犲潯錛夛細values-en-rSG
鑻辨枃錛堝崡闈烇級錛歷alues-en-rZA
闃挎媺浼枃錛堝焹鍙婏級錛歷alues-ar-rEG
闃挎媺浼枃錛堜互鑹插垪錛夛細values-ar-rIL
淇濆姞鍒╀簹鏂? values-bg-rBG
鍔犳嘲緗楀凹浜氭枃錛歷alues-ca-rES
鎹峰厠鏂囷細values-cs-rCZ
涓歸害鏂囷細values-da-rDK
寰鋒枃錛堝ゥ鍦板埄錛夛細values-de-rAT
寰鋒枃錛堢憺澹級錛歷alues-de-rCH
寰鋒枃錛堝痙鍥斤級錛歷alues-de-rDE
寰鋒枃錛堝垪鏀暒澹櫥錛夛細values-de-rLI
甯岃厞鏂囷細values-el-rGR
瑗跨彮鐗欐枃錛堣タ鐝墮錛夛細values-es-rES
瑗跨彮鐗欐枃錛堢編鍥斤級錛歷alues-es-rUS
鑺叞鏂囷紙鑺叞錛夛細values-fi-rFI
娉曟枃錛堟瘮鍒╂椂錛夛細values-fr-rBE
娉曟枃錛堝姞鎷垮ぇ錛夛細values-fr-rCA
娉曟枃錛堢憺澹級錛歷alues-fr-rCH
娉曟枃錛堟硶鍥斤級錛歷alues-fr-rFR
甯屼集鏉ユ枃錛歷alues-iw-rIL
鍗板湴鏂囷細values-hi-rIN
鍏嬬綏閲屼簹鏂囷細values-hr-rHR
鍖堢墮鍒╂枃錛歷alues-hu-rHU
鍗板害灝艱タ浜氭枃錛歷alues-in-rID
鎰忓ぇ鍒╂枃錛堢憺澹級錛歷alues-it-rCH
鎰忓ぇ鍒╂枃錛堟剰澶у埄錛夛細values-it-rIT
鏃ユ枃錛歷alues-ja-rJP
闊╂枃錛歷alues-ko-rKR
绔嬮櫠瀹涙枃錛歷alueslt-rLT
鎷夎劚緇翠簹鏂囷細values-lv-rLV
鎸▉鍗氬厠椹皵鏂囷細values-nb-rNO
鑽峰叞鏂?姣斿埄鏃?錛歷alues-nl-BE
鑽峰叞鏂囷紙鑽峰叞錛夛細values-nl-rNL
娉㈠叞鏂囷細values-pl-rPL
钁¤悇鐗欐枃錛堝反瑗匡級錛歷alues-pt-rBR
钁¤悇鐗欐枃錛堣憽钀勭墮錛夛細values-pt-rPT
緗楅┈灝間簹鏂囷細values-ro-rRO
淇勬枃錛歷alues-ru-rRU
鏂礇浼愬厠鏂囷細values-sk-rSK
鏂礇鏂囧凹浜氭枃錛歷alues-sl-rSI
濉炲皵緇翠簹鏂囷細values-sr-rRS
鐟炲吀鏂囷細values-sv-rSE
娉版枃錛歷alues-th-rTH
濉斿姞媧涜錛歷alues-tl-rPH
鍦熻沖叾鏂囷細values--r-rTR
涔屽厠鍏版枃錛歷alues-uk-rUA
瓚婂崡鏂囷細values-vi-rVN
1.鑳屾櫙鑷傚簲涓斾笉澶辯湡闂鐨勫瓨鍦?/strong> 2.9.PNG鏍煎紡銆?/strong> 3. 浣跨敤Draw9Patch.jar鍒朵綔9.PNG鍥劇墖涔嬪畾涔夋媺浼稿尯鍩熴?/strong> 鐒跺悗鐐瑰嚮File,瀵煎嚭涓篶ontent.9.png銆?br /> 絎笁姝ワ細鍦╨ayout鏂囦歡涓嬌鐢ㄥ埗浣滅殑 .9.PNG鍥劇墖. 鎴戜滑鎶奵ontent.9.png鏂囦歡鎷瘋礉鍒?res/drawable鏂囦歡澶逛笅錛屾墦寮/res/layout鐩綍涓嬬殑main.xml錛岀敵鏄庡涓嬶細 濡傚浘錛?br /> 濡傚浘錛?br /> 鍙互鐪嬪嚭錛岃竟妗嗛潪甯哥殑娓呮櫚銆備笅鍥炬槸鏈嬌鐢?9.PNG鐨勫姣斿浘錛岃屼笖涔熶笉鏄垜浠鐨勬晥鏋滐細 4.浣跨敤Draw9Patch.jar鍒朵綔9.PNG鍥劇墖涔嬪畾涔夊唴瀹瑰尯鍩熴?/strong> 5.鍒朵綔.9.PNG鐨勯珮綰ф妧宸с?/strong> 6.SDK涓浣曞鐞?.PNG鍥劇墖銆?/strong> NinePatch媯楠屾垚鍔熷垯璋冪敤鏈湴鏂規硶錛岀粯鍒跺嚭鏈緇堢殑鍥劇墖錛?/p> 7.android緋葷粺涓ぇ閲忓簲鐢ㄤ簡9.PNG鍥劇墖銆?/strong>
鍒朵綔鑷傚簲鑳屾櫙鍥劇墖鏄疷I寮鍙戠殑涓涓箍娉涢棶棰橈紝涔熸槸鐣岄潰璁捐甯堟復鏈涜В鍐崇殑闂錛屾垜鐩鎬俊鎴戜滑褰兼閮芥繁鏈変綋浼氥?br /> 姣斿,鍒楄〃鐨勮儗鏅浘涓瀹氾紝浣嗘槸鍒楄〃鐨勯珮搴﹂殢鐫鍒楄〃鏁版嵁欏逛細鍙戠敓鍙樺寲錛涙爣棰樻爮鐨勮儗鏅紝鏃犺妯睆榪樻槸绔栧睆錛岄珮鍒嗚鯨鐜囪繕鏄綆鍒嗚鯨鐜囷紝閮借兘鑷姩濉厖婊★紝鑰屼笖涓嶅け鐪熺瓑絳夎儗鏅棶棰樸?br /> 鏍規嵁浠ュ線鐨勭粡楠岋紝鎴戜滑涓鑸噰鐢ㄥ厛鍒囧浘鍚庢嫾鍑戠殑鍋氭硶錛岃繖縐嶅仛娉曟湰鏉ユ垜鎯沖湪榪欓噷鍜屽ぇ瀹朵粙緇嶄竴涓嬶紝鍏跺疄鏈夌殑鏃跺欒繕鏄緢鏈夌敤鐨勶紝浣嗘槸璇磋搗鏉ヤ細姣旇緝楹葷儲錛屽氨涓嶈榪欎釜闈為噸鐐逛簡錛岀暐鍘伙紝濡傛灉澶у鐪熺殑瑕佷粙緇嶏紝鍦ㄥ洖澶嶄腑璇存槑錛屾垜鍐嶈冭檻涓涓嬨?br /> Android閽堝榪欑鎯呭喌錛屼笓闂ㄥ埗浣滀簡涓縐?9.PNG鏍煎紡鏉ヨВ鍐寵繖涓棶棰樸?/p>
鎴戜笉鎯沖湪榪欓噷榪囧鐨勮璁篜NG鏍煎紡鐨勫畾涔夐棶棰樸備絾鏄?9.PNG紜疄鏄爣鍑嗙殑PNG鏍煎紡錛屽彧鏄湪鏈澶栭潰涓鍦堥澶栧鍔?px鐨勮竟妗嗭紝榪欎釜1px鐨勮竟妗嗗氨鏄?鐢ㄦ潵瀹氫箟鍥劇墖涓彲鎵╁睍鐨勫拰闈欐佷笉鍙樼殑鍖哄煙銆傜壒鍒鏄庯紝left鍜宼op杈規涓氦鍙夐儴鍒嗘槸鍙媺浼擱儴鍒嗭紝鏈変腑閮ㄥ垎鏄潤鎬佸尯鍩熼儴鍒嗐俽ight鍜宐ottom 杈規涓氦鍙夐儴鍒嗗垯鏄唴瀹歸儴鍒嗭紙鍙樼浉鐨勭浉褰撲簬瀹氫箟鐪嬩竴涓唴杈硅窛錛岀浼紁adding鍔熻兘錛屽悗闈㈡垜浼氬崟鐙粙緇嶄竴涓嬶級錛岃繖涓弬鏁版槸鍙夌殑, 濡備笅鍥俱?br /> 鍦ˋndroid涓互9.PNG鏍煎紡鐨勫浘鐗囨湭鑳屾櫙錛屽垯鑳藉鑷畾涔夋媺浼歌屼笉澶辯湡錛屾瘮濡傜郴緇熺殑Button灝辨槸涓涓吀鍨嬬殑渚嬪瓙銆?nbsp;
鍏跺疄鍛紝鏃犺鏄痩eft鍜宼op錛岃繕鏄痳ight鍜宐ottom閮芥槸鎶婂浘鐗囧垎鎴?鍧?(杈硅鍥涘潡鏄笉鑳界緝鏀劇殑錛屽叾浠栫殑鍥涘潡鍒欐槸鍏佽緙╂斁鐨?錛屾墍浠ュ彨鍋?.PNG銆?/p>
鍓嶉潰宸茬粡浜嗚В鍒?.PNG鏍煎紡鐨勫伐浣滄柟寮忥紝涓嬮潰鎴戜滑浣跨敤璋鋒瓕鎻愪緵鐨凞raw9Patch(榪愯android-sdk-windows\tools鐩綍涓嬬殑Draw9Patch.bat)鏉ュ埗浣?9.PNG鍥劇墖銆?br /> 絎竴姝ワ細鍑嗗瑕佹媺浼哥殑鍥劇墖銆?/em>
闈炲父灝忕殑涓寮犲浘鐗囷紝鎴戝笇鏈涗互姝や負鑳屾櫙錛屼腑闂撮儴鍒嗗~鍏呮枃绔犲唴瀹廣?br /> 絎簩姝ワ細鍒朵綔.9.PNG鍥劇墖銆?br /> 鎵撳紑Draw9Patch,鎶婂浘鐗囨嫋榪涘幓錛屽涓嬶細
榛樿鐨勬媺浼告槸鏁翠綋鎷変幾錛屽叾瀹炶竟妗嗛儴鍒嗘垜浠茍涓嶆兂鎷変幾錛屽ソ錛屾垜浠嚜宸辨潵瀹氫箟鎷変幾鍖哄煙錛屽涓嬪浘錛?br />
鏂板緩宸ョ▼Draw9Patch錛岄粯璁や富Activity涓篋raw9PatchActivity.java:1
@Override
2
public
void
onCreate(Bundle savedInstanceState)
3
{
4
super
.onCreate(savedInstanceState);
5
setContentView(R.layout.main);
6
}
01
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
03
android:orientation
=
"vertical"
04
android:layout_width
=
"fill_parent"
05
android:layout_height
=
"fill_parent"
06
android:background
=
"#777"
07
android:padding
=
"8dip"
08
>
09
<
TextView
10
android:layout_width
=
"fill_parent"
11
android:layout_height
=
"wrap_content"
12
android:text
=
"姝f枃:A NinePatchDrawable graphic is a stretchable bitmap image."
13
android:background
=
"@drawable/content"
14
android:textColor
=
"#000"
15
/>
16
</
LinearLayout
>
鎴戜滑淇敼text錛?/p> 01
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
03
android:orientation
=
"vertical"
04
android:layout_width
=
"fill_parent"
05
android:layout_height
=
"fill_parent"
06
android:background
=
"#777"
07
android:padding
=
"8dip"
08
>
09
<
TextView
10
android:layout_width
=
"fill_parent"
11
android:layout_height
=
"wrap_content"
12
android:text
=
" 姝f枃:A NinePatchDrawable graphic is a stretchable bitmap image, which Android will automatically resize to accommodate the contents of the View in which you have placed it as the background. A NinePatch drawable is a standard PNG image that includes an extra 1-pixel-wide border."
13
android:background
=
"@drawable/content"
14
android:textColor
=
"#000"
15
/>
16
</
LinearLayout
>
鍒拌繖閲屼負姝紝鎴戜滑宸茬粡鍩烘湰浼氬埗浣?9.PNG鍥劇墖浜嗐備負浜嗙煡璇嗕綋緋葷殑鍏ㄩ潰鎬у拰娣卞叆鎬э紝鎴戜滑緇х畫銆?/p>
鏄笉鏄寰楁枃瀛楀拰杈硅窛鎸ㄧ殑澶繎錛屽ソ錛屾垜浠嬌鐢╮ight鍜宐ottom杈圭殑綰挎潵瀹氫箟鍐呭鍖哄煙錛屾潵杈懼埌澧炲ぇ鍐呰竟璺濈殑鐩殑銆?br />
鎴戜滑瀹氫箟浜嗕竴涓緢灝忕殑鍐呭鍖哄煙錛屽叾浠栫殑鍦版柟鍒欒嚜鍔ㄥ厖褰撹竟妗嗭紝浠庤屼嬌鍐呰竟璺濇樉鐨勫緢澶э紝濡備笅鍥撅紝
鍦ㄨ繖閲岋紝鎴戣鐗瑰埆璇存槑錛屼竴寮濮嬩負浜嗗澶у唴杈硅窛錛屽緢瀹規槗鎯ф濈淮錛屽湪<TextView>涓敵鏄?android:padding="10dip" 涔嬬被鐨勶紝鎴戝湪榪欓噷鍔濆憡鏈嬪弸浠笉瑕佽繖涔堝仛錛屼竴鏄綘灝嗘棤娉曢鐭ヤ綘鐨勬樉紺猴紝浜屾槸榪欐瘮杈冩販娣嗭紝鍥犱負璁劇疆鍐呭鍖哄煙灝辨槸紜畾padding錛屾墍浠ユ垜鍦ㄥ墠闈㈤儴鍒嗚浠栦滑鏄?紲炰技銆傛垜涓漢璁や負閫氳繃鍐呭鍖哄煙璁懼畾padding姣斿湪甯冨眬xml涓畾涔塸adding鏇翠紭闆咃紝鏇寸畝媧侊紒
鍏充簬Draw9Patch宸ュ叿鐨勫叾浠栦嬌鐢ㄨ鏄庯紝鎴戝湪嬈′笉鍐嶇瘡榪幫紝鍥犱負瑕佽鐨勮瘽澶錛屼負浜嗚妭鐪佺瘒騫咃紝璇峰弬鑰冨畼鏂規枃妗c?/p>
瀵逛簬鍒濆Draw9Patch鐨勪漢鏉ヨ錛岃繖鍙互綆楁槸楂樼駭鎶宸э紝閭e氨鏄細鎷変幾鍖哄煙錛屽彲浠ヤ笉鏄繛緇殑錛屽彲浠ヤ笉姝竴鍧楋紝鑰屼笖鏄拰鑷畾涔夌殑杈規綰跨殑闀垮害鎴愭姣斻?/em>
鐩存帴涓婂浘璇存槑錛?br />
SDK涓撻棬閽堝9.PNG鍋氫簡瀹氫箟鍜屽鐞嗭紝榪欓噷鎴戜滑鍙槸鍋氫釜綆鍗曠殑嫻佺▼鍒嗘瀽錛孊itmap鍦ㄨ鍙栧浘鍍忔祦鏁版嵁鐨勬椂鍊欙紝浼氭妸鍒ゆ柇鍥劇墖鐨?NinePatchChunk(9Patch鏁版嵁鍧?錛屽鏋淣inePatchChunk涓嶄負絀猴紝鍒欐槸 NinePatchDrawable錛孨inePatchDrawable鍒欏張浼氫氦緇橬inePatch澶勭悊錛?/p> 1
setNinePatchState(
new
NinePatchState(
2
new
NinePatch(bitmap, bitmap.getNinePatchChunk(),
"XML 9-patch"
),
3
padding, dither), r);
1
nativeDraw(canvas.mNativeCanvas, location,
2
mBitmap.ni(), mChunk, paint !=
null
? paint.mNativePaint :
0
,
3
canvas.mDensity, mBitmap.mDensity);
閫氳繃瑙e帇闅忎究涓涓猺om錛屾壘鍒伴噷闈㈢殑framework_res.apk,閲岄潰鏈夊ぇ閲忕殑9.PNG鏍煎紡鏂囦歡錛岃騫挎硾鐨勫簲鐢ㄨ搗鏉ワ紝姣斿甯歌鐨勬湁錛?br /> 鎸夐挳錛?img src="http://pic002.cnblogs.com/images/2011/31770/2011041702450222.png" alt="" />
瑙i攣錛?img src="http://pic002.cnblogs.com/images/2011/31770/2011041702484148.png" alt="" />
涓嬫媺妗嗭細
鏍囬鏍忥細
Toast錛?img src="http://pic002.cnblogs.com/images/2011/31770/2011041702520097.png" alt="" />
榪樻湁鎼滅儲錛岄敭鐩橈紝鏀懼ぇ緙╁皬鎺т歡錛屾椂闂村姞鍑忕瓑絳夛紝鎴戝氨涓嶄竴涓鍒椾婦銆?/p> 8.鏈鍚庨佷笂涓浜涘浘渚嬶紝浠ラ(璇昏咃紝浠ュ仛鍚庨壌錛?/strong>
璧忓浘1 鏈漢涔嬩綔
璧忓浘2 涓嬫媺鎸夐挳
璧忓浘3 鏂囩珷澶撮儴鑳屾櫙
璧忓浘4 緋葷粺澶撮儴鑳屾櫙