Android 基礎(chǔ)知識分享

1.Android項目目錄結(jié)構(gòu)

android項目目錄示意圖.png
  • module的含義
    module相當(dāng)于一個個獨立的項目,可以起到解耦作用,app中可以引入多個module,單個module通常是為了實現(xiàn)一個獨立的功能,如:掃碼、圖片處理等。

  • assets、java、jniLibs、res個文件夾的含義
    assets:內(nèi)置靜態(tài)資源,應(yīng)用安裝后無需任何特殊處理,代碼可通過getResources().getAssets().open(String path)打開文件;
    java:應(yīng)用代碼;
    jniLibs:涉及底層方法的一些.so庫文件,比如視頻的壓縮與處理等方法;
    res:應(yīng)用資源文件,該目錄下包含了圖片資源文件夾、布局文件、菜單文件、圖形資源、樣式尺寸等文件。

  • app/build.gradle文件
    該文件是對應(yīng)用一些基本的設(shè)置,如匹配系統(tǒng)版本、應(yīng)用ID,應(yīng)用版本、編譯時使用的系統(tǒng)版本、build參數(shù)等信息;應(yīng)用需要引入的庫也需要在此設(shè)置,常見形式如下:

compileSdkVersion 26
buildToolsVersion '26.0.2'
defaultConfig {
    applicationId "com.jscmcc.zhyq"
    minSdkVersion 16
    targetSdkVersion 19
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile project(':CordovaLib')
    compile 'org.apache.cordova:framework:6.2.3:release@aar'
    compile 'com.android.support:design:26.1.0'
    compile 'com.afap:utils:0.1.1@aar'
    compile 'org.greenrobot:eventbus:3.0.0'
    compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
}

2.Android中頁面布局的適配

  • 常用布局介紹:RelativeLayout、LinearLayout、GridLayout等
    RelativeLayout:絕對布局,常用作view有堆疊的情形;
    LinearLayout:線性布局,最常使用,該布局有權(quán)重屬性;
    GridLayout等:異性布局,另外還有table形式的布局,不過都不常用。
    *補充一點:google提供了Flex布局,類似css的使用方式。

  • 各尺寸單位簡介:dp、sp、px、 pt、mm、in
    dp:相對尺寸,最常使用,通常不管實際物理像素大小,認(rèn)為手機寬度為360dp;
    sp:相對尺寸,用作設(shè)置文字的大小;
    px:絕對像素,呈現(xiàn)在不同手機上的效果大不一樣,不建議使用。

  • 自適應(yīng)屏幕,相對布局的使用
    1.盡量避免使用絕對值;
    2.充分利用權(quán)重;
    3.使用絕對布局時可以利用margin和padding,以及位于parent的位置。

  • Fragment的作用與一般用法

3.Android常用組件:Activity、Service、Broadcast、Provider

  • Application
    應(yīng)用程序上下文對象,應(yīng)用未被Kill期間,該實例一直存在,應(yīng)用的初始化多在此進(jìn)行,全局對象也在此實例化。

  • Activity
    應(yīng)用可見窗口,最常用到的組件,View、操作等都在此進(jìn)行,不過隨著業(yè)務(wù)場景的增多,Activity會比較臃腫,android為此引入了fragment;

  • Service
    常用來執(zhí)行后臺任務(wù),可自行設(shè)置啟動、結(jié)束條件,可定時喚起(有限制),用于執(zhí)行如后臺文件上傳、后臺位置獲取等;

  • Broadcast
    廣播,通常用來監(jiān)聽手機設(shè)備的通用狀態(tài)(如開機、網(wǎng)絡(luò)變化、電量、是否充電燈),或者應(yīng)用內(nèi)約定的廣播,起到傳遞消息的作用。最常用的就是監(jiān)聽系統(tǒng)廣播,用來做自動啟動、斷網(wǎng)后暫停下載等;

  • Provider
    系統(tǒng)級別的數(shù)據(jù)共享,如訪問聯(lián)系人、短信等,不常用;

  • Fragment
    Android2.3中開始引入的一個概念,用來解耦應(yīng)用,提高復(fù)用程度,同時提高各類設(shè)備的適配度,主要用來分割各個獨立功能,可在Activity中進(jìn)行多Fragment協(xié)同調(diào)度處理,如在pad上可一屏展示郵件列表和詳情(左側(cè)列表右側(cè)詳情),而手機由于屏幕大小限制通常都是列表和詳情分開,利用Fragment實現(xiàn)列表和詳情單獨功能,由Activity調(diào)度處理,可實現(xiàn)快速復(fù)用開發(fā)。

  • View的自定義
    幾乎所有可見的空間都是繼承自View,如果有需求系統(tǒng)空間無法滿足,可以自行繼承View,實現(xiàn)其onDraw()(其他的方法一般不需要涉及)方法,如一些特效。

  • ListView與RecycleView
    ListView和RecycleView類似,主要用于大數(shù)據(jù)量的同類展示,通過設(shè)置Holder老優(yōu)化性能,配合適配器,實現(xiàn)巨量數(shù)據(jù)的展示。

4.Android中圖片相關(guān)要點

  • drawable-xhdpi(同mipmap-xhdpi)等含義與dpi計算方式
    dpi計算.png

    通常情況下,也是為了減輕UI工作量和apk包的體積,只需要提供一套圖片,xxhdpi即可,另外在布局時需要注意采用相對布局,可以節(jié)省很多工作量。
    應(yīng)用會自動需要與自身設(shè)備匹配的圖片文件,如果沒有找到,會去其他dpi下面找。
  • drawable的自定義:shape、selector、layer-list
    shape:繪制簡單的圖形,如圓形、橢圓、圓角矩形、漸變色、直線等規(guī)則圖形,特點就是矢量,不會失真,體積很小,加載性能高;

selector:配置不同狀態(tài)對應(yīng)的不同圖片,如配置一個按鈕的背景時,可以設(shè)置常規(guī)背景、點擊后背景、禁用時背景;(其他屬性還有選中狀態(tài)、觸摸狀態(tài)等)

layer-list:圖片堆疊,多張圖片進(jìn)行堆疊實現(xiàn)效果,通過順序的調(diào)整可實現(xiàn)想要的效果。

  • tint的使用
    在API>=21時,可利用tint來實現(xiàn)多主題圖片色的變換,如圖片本身是黑色的,通過設(shè)置tint可實現(xiàn)著色處理。

*補充:vector可利用path構(gòu)造復(fù)雜的矢量圖形,官方提供了一套常用的圖標(biāo)

5.Android中網(wǎng)絡(luò)請求

  • Network操作不能處于UI線程
    歷史演進(jìn):安卓4.0及以后禁止在UI主線程進(jìn)行網(wǎng)絡(luò)耗時操作,網(wǎng)絡(luò)請求必須放到io線程;安卓7.0后貌似對smb和ftp等協(xié)議也禁止;

  • 常用異步操作AsyncTask、Handler、Thread、RxJava庫
    AsyncTask:官方提供的輕量級異步類
    Thread+Handler:自行維護(hù)網(wǎng)路請求,以及請求完畢后通過handle處理后續(xù)邏輯;
    RxJava:一個流式異步庫,可以自由變換操作所處的線程。

  • 常見會話保持形式與處理
    Android中并不會像瀏覽器一樣自動保存和攜帶Cookie信息,所以通常的會話保持形式就是使用token,認(rèn)證后的請求攜帶該值發(fā)送請求;如果服務(wù)端不支持,也可以人工改造使之能夠適應(yīng)cookie形式的項目,通常是采用攔截器自定攔截、保存、攜帶cookie信息。

  • Http、Https的不同處理方式

  • 其他如SMB、FTP等協(xié)議

6.Android中常見的持久化本地存儲

  • SharedPreferences
    小數(shù)據(jù)量的存儲,通常用來存放一些系統(tǒng)個性化設(shè)置,其實質(zhì)是一個xml文件,存在于應(yīng)用沙盒中;

  • Database
    大數(shù)據(jù)量存儲,支持常見的sql,手機中的數(shù)據(jù)庫其實是一個.db文件,root的情況下可直接拷貝出使用sqlite工具打開;

  • File
    常見存儲方式,特點是數(shù)據(jù)格式自由,保存路徑自由,可用來存儲諸如緩存圖片、臨時文件等。

7.混合式開發(fā)的應(yīng)用

  • 自定義xml格式,并原生解析為自繪View
    由于View可自行繪制,如果需要應(yīng)用具備原生體驗效果,可采用此模式,不過前期約定解析和繪制工作量會很大且不移維護(hù)。

  • 使用WebView進(jìn)行混合調(diào)用,JS Bridge
    最常用的方式,也是最標(biāo)準(zhǔn)的方式,通過JS Bridge可實現(xiàn)html與Native的相互調(diào)用。

8.其他注意點

  • 國際化與string.xml作用
  • xxx-V21形式的作用
  • 權(quán)限申請與使用
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,247評論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,520評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,362評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,805評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,541評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,896評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,887評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,062評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,608評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,356評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,555評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,077評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,769評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,175評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,489評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,289評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,516評論 2 379

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