上一篇代碼,我們學習了Android的功能以及如何用Android Studio開發第一個安卓程序。下面就要介紹Android項目結構。為日后學習打基礎。
一:Android項目結構
打開MyFristApp,可以看到如下項目目錄和文件結構:
這里對app模塊下的文件進行介紹。
1.manifests
其下的AndroidMainfest.xml為項目的配置信息文件:
2.java
主要是java源代碼和測試代碼。下面的文件是主文件:
3.res
主要是資源目錄,存儲所有的項目資源:
下面是文件夾的功能說明:
目錄結構 | 資源類型 |
res\values | 存放字符串,顏色,尺寸,數組,主題,類型等資源 |
res\layout | XML布局文件 |
res\drawable | 圖片(bmp,png,gif,jpg等) |
res\anim | XML格式的動畫資源(幀動畫和補間動畫) |
res\mipmap | 存儲系統的圖片資源 |
res\raw | 可以存放任意類型的文件,一般比較大的文件,會在Rl類中生成資源id,封裝在apk中 |
assets | 可以存放任意類型,不會被編譯,與raw相比,不會在R類中生成資源id |
下面是常用的目錄簡介:
(1)mipmap
功能:存儲系統的圖片資源
可以看到出現了兩個文件夾,一個是方形的圖片文件存放處,一個是圓形的圖片文件存放處。
后面的括號內的代表不同的分辨率,是為了使應用程序在分辨率大小不同的顯示窗體上都可以順利顯示。
(2)layout
這里存放XML布局文件,就是用戶界面布局文件,有一個系統自動生成的activity_main.xml文件,可以按可視化的圖形設計界面顯示,也可以按代碼設計界面顯示:
a:圖形設計界面
b:代碼設計界面
"android:layout_width":定義當前視圖在屏幕上所占的寬度,match_parent即填埋整個寬度。
同理android:layout_height是定義當前視圖在屏幕上所占的高度。
android:layout_width="wrap_content"
android:layout_height="wrap_content"
自適應大小,用於顯示其全部的文字內容。
在應用程序中如果使用用戶界面的組件時,則需要通過R.java文件中的R類調用。
上面都是相對布局配置。
(3)values
該目錄存放參數描述文件資源。也是XML文件。都是通過R類來調用。
4.R.java目錄
該文件將res目錄中的資源與id編號進行映射,很方便地對資源進行引用。該文件是自動生成的,不允許用戶修改。
在系統中引用資源都需要使用R類。
專業解釋是:R.java會自動收錄當前應用中所有的資源,並根據這些資源建立對應的ID,包括:布局資源、控件資源、String資源、Drawable資源等。可以簡單的把R.java理解成是當前Android應用的資源字典。
有時候會由於操作失誤造成MainActivity找不到R.java文件,這時候只需要點擊如下位置即可:
5.Gradle Scripts:build.gradle為項目的gradle配置文件。
6.Android應用程序結構分析
從上面的Android應用程序可以看到,一個Android應用程序通常由Activity類程序(Java源程序)和用戶界面布局XML文檔組成。
邏輯控制層由Java應用程序實現,表現層由XML文檔描述。
主程序和Java一樣。
7.AppCompatActivity與Activity區別
我們在寫源程序時,會有兩個繼承的父類,這兩個大體上是相同的,但有些地方還是有些區別。
當使用Eclipse開發Android應用的時候,當創建項目的時候,MainActivity自動繼承的是Activity,而在使用Android Studio開發Android應用的時候,創建項目時,自動繼承的是AppCompatActivity。
(1)AppCompatActivity簡介
AppCompatActivity是Google后來退出的Activity AS默認讓我們繼承它 因為他可以使用Android中的新特新 ToolBar 我平時使用的很少 如果使用toolbar需要繼承AppCompatActivity。
(2)AppCompatActivity默認帶標題
在繼承AppCompatActivity時,界面最上面會出現一個ActionBar,
但Activity不帶。
(3)AppCompatActivity和
requestWindowFeature(Window.FEATURE_NO_TITLE);
有沖突。
8.出現的問題
在運行代碼時,可能會出現下面的問題:
它的含義如下:

在Android Studio3.0之后的版本解決方法如下:

結果如下:
