一、Android應(yīng)用程序框架
src:存放的是應(yīng)用程序使用到的java文件
gen:系統(tǒng)自動生成的目錄。不需要程序員進(jìn)行修改。包含了R文件,該文件中包含了程序中使用到的資源文件對應(yīng)生成的唯一的資源ID。注意:如果R文件發(fā)生錯誤一般都是資源文件出現(xiàn)的錯誤。
assets:存放應(yīng)用程序使用的資源。在這個文件夾存在的資源需要讀取的時候使用的是二進(jìn)制流。存在于這個文件夾中的文件會被原封不動地打包進(jìn)入apk。
bin:編譯生成的目錄。主要獲取里面生成的apk文件。
libs:存放三方的jar文件的目錄。
res:資源存儲的目錄。
- res/drawable:存放的是圖片資源。存放不同分辨率對應(yīng)使用的圖片資源。按照分辨率的由小到大分別是:low-middle-high-xh-xxh。
- res/layout:包含了應(yīng)用程序中使用到的一系列的布局文件。使用的時候一般會在代碼中通過R.layout.XXX
- menu:包含了菜單中使用的item定義的內(nèi)容。
- res/value:包含了應(yīng)用程序使用到的尺寸(dimens.xml)、字符串(strings.xml)、樣式(styles.xml)等資源。通過@進(jìn)行調(diào)用。如果在xml中使用res中的資源,大部分都是通過資源文件/資源的name
- res/values-sw600dp:使用sw屬性針對屏幕進(jìn)行區(qū)分。使用在多屏幕適配的過程中。
- res/values-v11 v14:同樣在多屏幕適配中考慮。
- AndroidManifest.xml:應(yīng)用程序級別的配置文件。很重要。定義了應(yīng)用程序的主包名、版本號、最低的sdk版本和目標(biāo)sdk版本。還包括管理頁面的活動(Activity),在Activity的聲明標(biāo)簽中,存在IntetFilter,又叫做Intent的過濾器。用于過濾對應(yīng)的Intent對象來實(shí)現(xiàn)到底呈現(xiàn)的是哪一個界面。
- proguard-project.txt:用來進(jìn)行代碼混淆的文件。
- project.properties:可以修改目標(biāo)版本。
- raw:存放應(yīng)用程序中使用到的媒體資源。
二、常用的調(diào)試工具
- adb:Android Debug Bridge安卓調(diào)試橋,在PC的CMD中使用adb shell可以進(jìn)入連接在PC上的模擬器或真機(jī)的Linux環(huán)境。
- DDMS:全稱是Davik Debug Monitor Service,是Android開發(fā)環(huán)境中的Dalvik虛擬機(jī)調(diào)試監(jiān)控服務(wù)。
- AVD Manager:AVD的管理器,用于新建和管理現(xiàn)有的Android模擬器。
- LogCat:日志記錄工具。Log.i("SNG","該句代碼被執(zhí)行");
- SDK Manager:SDK的管理器,使用自動更新的方式從Google服務(wù)器下載最新的SDK版本及工具到本機(jī)。
三、Android布局介紹
- Android中所有UI(用戶界面)元素都是使用View和ViewGroup對象建立的。
(1)View是一個可以將一些信息繪制在屏幕上并與用戶產(chǎn)生交互的對象(比如:一個按鈕)
(2)ViewGroup是一個包含多個View和ViewGroup的容器,用來定義UI布局。
(3)ViewGruop是View的子類。 - UI開發(fā)分類
(1)界面布局開發(fā)——定義界面的布局。
(2)控件開發(fā)——定義單個界面元素。
(3)AdapterView與Adapter適配器開發(fā)——列表顯示。
(4)UI組件開發(fā)——對話框、通知、菜單等。
(5)自定義View、圖形圖像和動畫——通過代碼,自行繪制界面。 - 常用的布局:
(1)LinerLayout——線性布局
(2)RelativeLayout——相對布局
(3)FrameLayout——幀布局
(4)TableLayout——表格布局
(5)AbsoluteLayout——絕對布局
(6)GridLayout——網(wǎng)格布局 - 布局定義方式:
(1)定義UI布局最常用的方法是使用XML布局文件
(2)如同HTML一樣,XML為布局提供了一種可讀的結(jié)構(gòu)。
(3)XML中的每個元素都是View或ViewGroup的子孫類的對象。
(4)可以把每一個XML布局文件理解為一個由View和ViewGroup的子孫類對象組成的樹。
(5)樹根是一個ViewGroup對象,所有的葉結(jié)點(diǎn)都是View對象,樹的分支結(jié)點(diǎn)都是ViewGroup對象。
四、Android UI適配
1. 手機(jī)屏幕基本概念
- 屏幕尺寸
屏幕的對角線長度。單位為英寸。
1英寸 = 2.54厘米 - 屏幕分辨率
水平和垂直方向的像素點(diǎn)的個數(shù)。單位是px。
1px = 1像素點(diǎn)
一般以垂直像素×水平像素,如1280*720 - 屏幕像素密度
指的是每英寸上的像素點(diǎn)數(shù)。單位是dpi/ppi(dot per inch)。
屏幕像素密度與屏幕尺寸和屏幕分辨率有關(guān)。
例:5英寸19201080屏幕分辨率的手機(jī),ppi為441:[ 根號(19201920+1080*1080) ]/5 - 屏幕像素密度DPI劃分
MDPI:~160dpi 1× 320480
HDPI:~240dpi 1.5× 480800
XHDPI:~320dpi 2×
XXHDPI:~480dpi 3×
XXXHDPI:~640dpi 4×
2. dp dip px sp概念
px:像素點(diǎn),構(gòu)成圖像的最小單位。
dip/dp:device independent pixels(設(shè)備獨(dú)立像素)。也是密度無關(guān)像素。
sp:專門用于文字顯示的大小,一般為偶數(shù)。
3. UI 線性布局
1. 概念
- LinearLayout,即線性布局,其中的控件為自動按照水平或垂直的方式一次排列。
- RelativeLayout,即相對布局,其中的控件是相對于其他控件的位置進(jìn)行排布的,而且往往需要定義每一個控件的資源ID。
- TableLayout,即表格布局,屬于行和列形式的管理控件,每行為一個TableRow對象,也可以是一個View對象。在TableRow中還可以繼續(xù)添加其他的控件,每添加一個子控件就成為一列。TableLayout不會生成邊框。<strong>它是線性布局的子類。</strong>
- FrameLayout,即幀布局,默認(rèn)是按照左上角(0,0)開始排布,定義的控件每一個都是以畫面的形式進(jìn)行呈現(xiàn)。最開始定義的控件出現(xiàn)在最下方,最后定義的控件出現(xiàn)在最上面。可用在手機(jī)聯(lián)系人的字母導(dǎo)航顯示上,或者用于幀動畫。
- AbsoluteLayout,即絕對布局,又可稱為坐標(biāo)布局,可以直接指定子元素的絕對位置,簡單直接,直觀性強(qiáng)。
- GirdLayout,即網(wǎng)格布局,可實(shí)現(xiàn)合并行和列的效果。是在Android4.0后出現(xiàn)的布局。
2. XML中LinearLayout布局的各種屬性</h2>
- orientation:用來指定當(dāng)前的線性布局排布的方向(horizontal/vertical),默認(rèn)為水平。
- margin和padding:控件可以設(shè)置margin和padding。
- wrap_content關(guān)鍵字:環(huán)繞內(nèi)容(和內(nèi)容同寬)。
- match_parent關(guān)鍵字:匹配父類(和父類同寬)。
- gravity:表示控件的內(nèi)部內(nèi)容的對齊方式(類似text-align)。
- layout_gravity:用于設(shè)置該view在父類中的對齊方式。 <strong>注意:如果線性布局的排布方式為水平,那么控件的layout_gravity在水平方向上就不起作用;垂直排布類似。</strong>
- layout_weight——LinearLayout特有的屬性:表示比重,可實(shí)現(xiàn)百分比布局。 <strong>如果控件為“<i>match_parent</i>”,則layout_weight的值與占用比重是反相關(guān)的,其值越大,占用的比重越小。</strong> <strong>如果控件為“<i>wrap_content</i>”,則對比重的判斷會變成正相關(guān),其值越小,占用的比重越小。</strong> <strong>注意:系統(tǒng)會先給無權(quán)重的控件分配空間后再對需要百分比的空間大小進(jìn)行百分比的劃分。</strong>
3. XML中RelativeLayout布局中的各種屬性</h2>
- layout_alignParentXXX:對齊父容器XXX部
- layout_marginXXX:表示間距
- layout_centerVertical:垂直居中
- layout_centerHorizontal:水平居中
- layout_centerInparent:正中央
- layout_alignXXX:表示對齊方式
- layout_toRightOf:在某個控件對齊
- layout_alignBaseline:基準(zhǔn)線對齊
- layout_below:位于下方
4. XML中TableLayout布局中的各種屬性
- collapseColumns:如果該列被標(biāo)志,則該列會被隱藏。
- stretchColums:拉伸某一列,使得布局顯得不緊湊。
- shrinkColumns:回縮某一列,使得整體內(nèi)容得以呈現(xiàn)。
- TableRow的寬和高可以不指定,系統(tǒng)會自動給定對應(yīng)的寬和高。
5. XML中AbsoluteLayout布局中的各種屬性
- layout_x:確定X坐標(biāo),以左上角為頂點(diǎn)。
- layout_y:確定Y坐標(biāo),以左上角為頂點(diǎn)。
6. XML中GridLayout網(wǎng)格布局
- 234為布局內(nèi)控件的屬性設(shè)置,56為布局標(biāo)簽的屬性設(shè)置。
- layout_columnSpan:擴(kuò)展列的數(shù)目。
- layout_rowSpan:擴(kuò)展行的數(shù)目。
- layout_gravity:填充方式。
- columCount:列規(guī)定。
- rowCount:行規(guī)定。