1.Android項目目錄結(jié)構(gòu)
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)限申請與使用