Android學(xué)習(xí)筆記(一)

★布局。

相對(duì)布局

*偷炅浚靠父控件邊界(boolean) layout_alignParentTop(臀吖靠父控件上邊界); layout_alignParentRight 融师;layout_alignParentBottom右钾;layout_alignParentLeft

*) 相對(duì)父控件居中(boolean) layout_centerHorizontal;layout_centerVertical 旱爆; layout_centerInParent

*) 對(duì)齊周圍控件(指定ID) layout_alignTop 舀射;layout_alignRight ;layout_alignBottom ;layout_alignLeft ;layout_alignBaseLine

*) 拖傩耍靠周圍控件(指定id) layout_above笙僚;layout_below丰嘉;layout_toLeftOf; layout_toRightOf

線性布局:屬性:◆orientation(方向,水平horiaental(默認(rèn))、vertical(縱向))

◆高度layout_height(或?qū)挾萳ayout_width)和比重layout_weight(控件按比例分配剩余空間)二者選一拜鹤,設(shè)置weight(3),高度或?qū)挾仍O(shè)為0dp);

◆layout_gravity(重力引力):水平布局中只能設(shè)置上(top)流椒、中(center_vertial)敏簿、下(bottom);垂直布局:只能設(shè)置左(left)、中(center_horizental)、右(right);

表格布局:繼承自線性布局惯裕,縱向排列温数;stretchColumns(拉伸到合適的列下標(biāo)轻猖,傳入1帆吻,2或列下標(biāo)數(shù))

幀布局:控件疊加顯示(屬性:layout_gravity:top域那、right咙边、bottom、left次员、center败许、center_horizental、center_vertical)可兩兩組合使用屬性(共9種)淑蔚,用|連接(如:中下:bottom|center_horizental)[主要用于滑入的菜單框]


★layout_marginBottom:xxdp;上下偏移偏移量市殷,在程序中通過修改偏移量即可實(shí)現(xiàn)動(dòng)畫的效果;(包括marginTop刹衫、marginLeft醋寝、marginRight等)

網(wǎng)格布局:

◆columnCount:最大的列數(shù);

layput_column:指定控件在第幾列带迟;

◆:留白(用于某個(gè)控件不顯示音羞,用空白進(jìn)行填充);

layout_columnSpan:跨n列仓犬,但不拉伸嗅绰,需用layout_gravity=fill_horizontal拉伸;

◆rowSpan:跨n行搀继,用gravity=fill_vertical拉伸窘面;

★[通用屬性]

◆外邊距:margin(四邊一起設(shè)置)、marginTop叽躯、marginRight财边、marginBottom、marginLeft点骑;

◆內(nèi)邊距:padding(四邊一起設(shè)置)制圈、paddingTop、paddingRight畔况、paddingBottom鲸鹦、paddingLeft;

◆設(shè)置控件內(nèi)部重力引力(控制控件內(nèi)的內(nèi)容):gravity(區(qū)別于layout_geavity:設(shè)置當(dāng)前控件相對(duì)于父控件的重力引力(控制控件本身));

◆match_parent:匹配父容器大絮喂颉馋嗜;wrap_content:自適應(yīng)內(nèi)容;

◆背景:background;

◆是否為單行:boolean singLine吵瞻;


Android res目錄

是一個(gè)資源目葛菇,包括:

◆圖片; 布局資源眯停;? 文本、數(shù)組莺债、顏色資源;? 未編譯的資源齐邦;

◆values 用于文本國際化(I18N):不同國家地區(qū)的用戶〈肽矗可使用本地文字;

values-zh-rCN:中國大陸丐吓;valures-zh-rHK:中國香港;values-en-rUS:美國券犁;

◆資源訪問工具:Resource;獲得Resource實(shí)例:

getRessources();

getString(id);

getInteger(資源id);


★raw文件:原始格式的文件,不會(huì)被壓縮(編譯)族操;默認(rèn)沒有苛坚,須在res文件夾下創(chuàng)建。只能讀色难;對(duì)同一個(gè)資源若需國際化則放置在此文件夾中泼舱,并設(shè)定不同國家的文件夾。

手機(jī)中默認(rèn)編碼為UTF-8;

打開Raw文件輸入流枷莉,用Resource的getResource. openRawResource(id);返回一個(gè)InputStream;可用一個(gè)BufferedReader接收,但必須指定編碼娇昙,new BufferedReader(new InputStreamReader(in,”GBK”));

assets目錄。資產(chǎn)

允許存放任意的文件笤妙、文件夾冒掌;但不會(huì)生成資源訪問id;提供了專門的方法來獲得文件輸入流劃列出文件列表蹲盘;只能讀出股毫,不能寫入;也不會(huì)被編譯召衔;

獲得資產(chǎn)訪問工具:String[]getAsset().list(path):獲得子目錄中的文件名稱列表铃诬;getAsset().open(文件路徑)、.open(文件、mode):獲得文件輸入流趣席;[mode為固定參數(shù):MODE_PRIVATE(默認(rèn)):私有兵志,只允許當(dāng)前應(yīng)用使用;……]

(此處assets即為相對(duì)根目錄宣肚,注意添加“/”問題)想罕。

先把Asset文件復(fù)制到SD卡,才可進(jìn)行更改和訪問霉涨;


Appliaction

在應(yīng)用啟動(dòng)時(shí)按价,系統(tǒng)自動(dòng)創(chuàng)建Application實(shí)例,并調(diào)用它的onCreat()方法嵌纲。但系統(tǒng)默認(rèn)的Application的onCreat()方法沒有代碼俘枫;

可繼承Application,重寫onCreat()方法腥沽,在應(yīng)用啟動(dòng)時(shí)逮走,執(zhí)行自定義的一段代碼。(多用于連網(wǎng)今阳,初始化界面,拷貝數(shù)據(jù)等)

使用步驟:

繼承并重寫Application的onCreat方法

在清單中配置:在application中添加 name=”創(chuàng)建的類名”师溅;在應(yīng)用一啟動(dòng)就執(zhí)行。

進(jìn)程盾舌。在操作系統(tǒng)中墓臭,并行執(zhí)行的任務(wù)。

線程妖谴。在進(jìn)程內(nèi)部并行的任務(wù)窿锉。


java中創(chuàng)建線程的兩種方式:

●繼承Thread;啟動(dòng)后直接執(zhí)行內(nèi)部代碼嗡载;不可共享數(shù)據(jù)洼滚;

●實(shí)現(xiàn)Runnable接口遥巴;可放到其他線程中去執(zhí)享幽,new Thread(new runable).start()值桩。可共享數(shù)據(jù)斯入;

線程調(diào)度器刻两。負(fù)責(zé)在多個(gè)線程間切換執(zhí)行磅摹,為線程分配時(shí)間片;線程間競爭的關(guān)系饼灿;

線程狀態(tài)碍彭。new? runnable? running? block(阻塞態(tài)) dead(消亡態(tài)庇忌,不能再啟動(dòng))舰褪;

線程在.start()后進(jìn)入了runnable()后不一定就馬上執(zhí)行占拍,只是進(jìn)行了可運(yùn)行態(tài)。

線程作用:

§將大的任務(wù)表牢,切分為多個(gè)并行子任務(wù)初茶;

§阻塞的代碼要與其他代碼并行浊闪;

§間隔執(zhí)行的任務(wù)搁宾;

[sleep()和yield()是主動(dòng)暫停和讓出cpu盖腿,而interrupt()是被動(dòng)打斷损同、join()是被動(dòng)暫停去執(zhí)行另外調(diào)用此方法的線程膏燃。yield是讓步給優(yōu)先級(jí)相同的線程何什,若沒有相同或更高優(yōu)先級(jí)的線程則繼續(xù)執(zhí)行。]


◆推薦使用Runnable接口伶贰,還可繼承其他類黍衙。

◆線程優(yōu)先級(jí)越高荠诬,獲得執(zhí)行的機(jī)會(huì)就越多,但盡可能使用常量望迎。

多線程共享數(shù)據(jù)凌外。一個(gè)線程正在修改數(shù)據(jù)康辑,另一個(gè)線程同時(shí)訪問數(shù)據(jù)疮薇;

守護(hù)線程:

[守護(hù)線程即是將當(dāng)前線程作為后臺(tái)線程我注,一直執(zhí)行但骨,當(dāng)其他線程結(jié)束時(shí)可不關(guān)閉這個(gè)線程直接退出。]

使用守護(hù)線程的時(shí)機(jī):定時(shí)備份掠抬、計(jì)時(shí)器两波、GC-垃圾回收器;

.join()

在將一個(gè)計(jì)算分成若干個(gè)線程分別執(zhí)行時(shí)单起,必須為每個(gè)線程爭取到資源劣坊,故須加.join()方法,否則結(jié)果會(huì)不正確括儒。可放到線程池中去執(zhí)行帮寻。

t1.join():等待調(diào)用該方法的線程結(jié)束后再繼續(xù)執(zhí)行本線程赠摇;在多個(gè)相同線程同時(shí)啟動(dòng)時(shí)就對(duì)每個(gè)線程調(diào)用此方法藕帜,用于平均每個(gè)線程的cpu操作時(shí)間洽故,否則易出錯(cuò)时甚。


★synchronized標(biāo)記。同步標(biāo)識(shí)梨熙,可修飾方法咽扇、代碼塊陕壹,但不能修飾構(gòu)造器,屬性把敞;

讓一個(gè)代碼塊執(zhí)行完后再去執(zhí)行另外一個(gè)代碼塊奋早,過程為:加鎖-修改-釋放鎖。其作用是多線程共享數(shù)據(jù)時(shí)的數(shù)據(jù)安全耽装。有一個(gè)synchronized標(biāo)識(shí)就會(huì)創(chuàng)建一個(gè)監(jiān)視器掉奄。

◆將會(huì)產(chǎn)生爭奪的資源作為synchronized的鎖

◆一個(gè)線程執(zhí)行到synchronized代碼塊時(shí)诞仓,必須先獲得得到同步鎖才能執(zhí)行墅拭;

◆如果得不到同步鎖谍婉,必須在synchronized代碼塊前等待镀钓;

◆非靜態(tài)的同步方法(同步方法的同步鎖為其本身this):獲得當(dāng)前對(duì)象的鎖丁溅;

◆靜態(tài)的同步方法:獲得“類對(duì)象”的鎖唧瘾;

◆同步的代碼塊:synchronized(對(duì)象){.同步代碼、集合.};

◆獲得指定對(duì)象的鎖:this求豫、類對(duì)象蝠嘉、存在訪問的數(shù)據(jù)對(duì)象杯巨、專門當(dāng)作鎖的對(duì)象服爷;

線程安全:StringBuffer、Vector舔涎、HashTable

線程不安全:StringBuilder逗爹、ArrayList掘而、HashMap

[線程安全是因?yàn)樗械姆椒恿藄ynchronized關(guān)鍵字;對(duì)線程不安全的類圃郊、方法可加上synchronized關(guān)鍵字即成線程安全持舆;但線程安全效率低伪窖,僅用于多線程時(shí)覆山。]


★生產(chǎn)者消費(fèi)者問題簇宽。

一種線程間通信

等待和通知機(jī)制。當(dāng)生產(chǎn)者生產(chǎn)過多譬嚣,若中間容器放滿時(shí)就讓生產(chǎn)者暫停等待一會(huì)兒拜银,在中間容器上添加:wait();否則中間容器還可放了時(shí)就通知生產(chǎn)者繼續(xù)生產(chǎn)尼桶,在中間容器上添加:notifyAll();消費(fèi)者類似泵督。

◆wait()外面總是一個(gè)循環(huán)判斷 小腊,以對(duì)并發(fā)下的訪問處理;

在等待wait()蜒简、通知notify()外面搓茬,必須有一個(gè)synchronized以創(chuàng)建一個(gè)監(jiān)視器卷仑,在監(jiān)視器中才可等待和通知锡凝。在執(zhí)行wait()等待時(shí)會(huì)釋放鎖。

★線程本地共享ThreadLocal(綁定):在當(dāng)前線程上锚扎,可以綁定一個(gè)數(shù)據(jù)馁启,

當(dāng)執(zhí)行到后面組件代碼時(shí)驾孔,可從當(dāng)前線程獲得數(shù)據(jù)

方法:

◆set(數(shù)據(jù)) ? 在當(dāng)前線程綁定數(shù)據(jù)

◆get() ????? 從當(dāng)前線程獲取數(shù)據(jù)

◆remove()??? 從當(dāng)前線程移除數(shù)據(jù)

線程工具類

Timer / TimerTask:計(jì)時(shí)任務(wù)惯疙,用來執(zhí)行定時(shí)任務(wù)翠勉,或間隔任務(wù)。

timer.schedule(new TimeTask(){..},..)


★線程池霉颠。典型使用:

ExecutorService pool = Executors.newCachedThreadPool();//創(chuàng)建一個(gè)線程池

for?(inti?=?0;?i?<?10000;?i++)?{

pool.execute(new?runnable(i));??//把任務(wù)放入線程池对碌,自動(dòng)執(zhí)行。

}

ExecutorService?pool?=?Executors.newFixedThreadPool(3);//放入三個(gè)線程


●在異步任務(wù)中也提供了線程池:

Executor pool = AsyncTask.SERIAL_EXECUTOR;? //不定線程數(shù)

Executor pool= AsyncTask.THREAD_POOL_EXECUTOR;? //包含5個(gè)線程掉分;足夠俭缓;

Android都是單線程模型。所有的界面顯示酥郭、用戶操作、組件控制,必須在主線程執(zhí)行。

◆若在主界面中處理大量運(yùn)算超時(shí)后會(huì)出現(xiàn)ANR乏矾。

[ANR :Application Not Responding 應(yīng)用無響應(yīng)。主線程執(zhí)行時(shí),程序阻塞在一段代碼中说墨。主線程無法更新界面顯示,也無法響應(yīng)用戶的其他操作;用戶在界面點(diǎn)擊后5秒后無響應(yīng)就也彈出ANR;]

Android線程通信船惨。如須在工作線程中要更新界面顯示怜浅,要向主線程發(fā)送消息自点。自己定義的工作線程不能更新UI界面,只有在主線程中才能更新。


原文地址:Android學(xué)習(xí)筆記(一)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末潦牛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌师倔,老刑警劉巖瓷胧,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門怕敬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來虽填,“玉大人桑驱,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長沙兰。 經(jīng)常有香客問我,道長桑包,這世上最難降的妖魔是什么跳夭? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮邪意,結(jié)果婚禮上酒贬,老公的妹妹穿的比我還像新娘锭吨。我一直安慰自己躏将,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布壁榕。 她就那樣靜靜地躺著麸澜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪碘菜。 梳的紋絲不亂的頭發(fā)上凹蜈,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天,我揣著相機(jī)與錄音忍啸,去河邊找鬼仰坦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛计雌,可吹牛的內(nèi)容都是我干的悄晃。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼白粉,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼传泊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鸭巴,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤眷细,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后鹃祖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溪椎,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年恬口,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了校读。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡祖能,死狀恐怖歉秫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情养铸,我是刑警寧澤雁芙,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布轧膘,位于F島的核電站,受9級(jí)特大地震影響兔甘,放射性物質(zhì)發(fā)生泄漏谎碍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一洞焙、第九天 我趴在偏房一處隱蔽的房頂上張望蟆淀。 院中可真熱鬧,春花似錦澡匪、人聲如沸熔任。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽笋敞。三九已至,卻和暖如春荠瘪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赛惩。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來泰國打工哀墓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人喷兼。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓篮绰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親季惯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吠各,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容