1.1src文件夾和assets文件夾:
每個Android程序都包含資源目錄(src)和資產目錄(assets),資源和資產聽起來感覺沒有多大差別,但在存儲外部內容時用資源(src)比較多,其中它們的區別在於存放在資源(src)下的內容可以通過應用程序的R類進行訪問,而存放在資產(assets)下的內容會保持原始文件的格式,如果需要訪問,則必須使用AssetManager以位元組流的方式來讀取,用起來非常的不方便。為了方便使用,通常文件和數據都會保存在資源(src)目錄下
1.2res(Resource)目錄:資源目錄
可以存放一些圖標,界面文件和應用中用到的文字信息,下圖為res目錄截圖:
1.2.1 drawable-*dpi文件夾:將圖標按解析度的高低放入不同的目錄,其中draeable-hdpi用來存放高解析度的圖標,drawable-mdpi用來存放中等解析度的圖標,drawable-ldpi用來存放低解析度的圖標
1.2.2 values文件夾:用來存放文字的信息
(1)strings.xml:用來定義字元串和數值
每個string標簽生命了一個字元串,name屬性指定它的引用值
1.2.3 layout文件:用來存放界面信息
1.3 gen目錄:gen目錄下只有一個自動生成的「R.java」文件
1.4 AndroidManifest.xml 功能清單文件
1.5<project.properties>應用要求運行的最低Android版本
1.6<android 2.2> 存放Android自身的jar包
B. android app文件目錄結構
原來,只要把文件寫在這里的話,可以不用動態申請許可權,只要在manifest裡面聲明許可權就ok了;
應用程序在運行的過程中如果需要向手機上保存數據,一般是把數據保存在SDcard中的。
大部分應用是直接在SDCard的根目錄下創建一個文件夾,然後把數據保存在該文件夾中。
這樣當該應用被卸載後,這些數據還保留在SDCard中,留下了垃圾數據。
並且在API
6.0之後,根目錄文件存儲是需要用戶授權的,就算你在AndroidManifest.xml中配置了存儲許可權,用戶不授權也是寫不進去了。
SD卡讀寫許可權:
如果你想讓你的應用被卸載後,與該應用相關的數據也清除掉,該怎麼辦呢?
通過
可以得到
這個目錄裡面,一般放一些長時間保存的數據
方法可以獲取到 SDCard/ Android /data/你的應用的包名/files/ 目錄,一般放一些長時間保存的數據
通過
方法可以獲取到
如果使用上面的方法,當你的應用在被用戶卸載後,SDCard/Android/data/你的應用的包名/ 這個目錄下的所有文件都會被刪除,不會留下垃圾信息。並且
這個方法獲得的文件存儲路徑適用於6.0以後系統,只要AndroidManifest.xml配置讀寫許可權了,就不需要用戶再授權了。
正常開發中獲取存儲路徑的方法是:
可以看到,當SD卡存在或者SD卡不可被移除的時候,就調用getExternalCacheDir()方法來獲取緩存路徑,否則就調用getCacheDir()方法來獲取緩存路徑。前者獲取到的就是 /sdcard/Android/data/<application package>/cache 這個路徑,而後者獲取到的是 /data/data/<application package>/cache 這個路徑。
設置->應用->應用詳情裡面的」清除數據「與」清除緩存「選項分別對應的是data/data/<application package>/和data/data/<application package>/cache
external storage (外部存儲):
Environment.getExternalStorageDirectory()SD根目錄:/mnt/sdcard/ (6.0後寫入需要用戶授權)
context.getExternalFilesDir(dir)路徑為:/mnt/sdcard/Android/data/< package name >/files/…
context.getExternalCacheDir()路徑為:/mnt/sdcard//Android/data/< package name >/cache/…
internal storage(內部存儲):
context.getFilesDir()路徑是:/data/data/< package name >/files/…
context.getCacheDir()路徑是:/data/data/< package name >/cach/…
C. 如何用android studio開發app
一、創建一個APP項目:
1、打開軟體,在菜單中選擇file-》new project打開創建向導。
2、配置項目,確定各個名稱和存放項目存放路徑;
Application name:項目名稱
Company Domain:公司域名
Package name:app打包名稱
project location:存放路徑
3、接下來設定兼容的安卓的最小版本,這依情況而定。
4、如果不確定各個版本的區別,可以點擊「help me choose」,在打開的窗口中介紹了各個安卓版本的功能。
5、確定後最小兼容版本後,選擇項目的活動類型,這里有很多現成的模板可以使用,對於初學者選擇默認的Blank Activity即可。
6、接下來設定活動名稱,界面布局的名稱,以及界面標題,最後點擊finish完成項目的創建。
7、創建完後,在項目名-》app-》src-》main-》res-》layout下雙擊xml文件就是打開活動界面設計窗口了。
對於創建APP項目的過程本人就不多做介紹了,小夥伴們按照上面步驟操作一遍基本上都會了。我想准備接觸android studio(下面簡稱AS)的小夥伴之前應該都是用的Eclipse,AS跟Eclipse有兩點區別需要了解清楚:
第一:二者的工程結構不一樣,在Eclipse中一個Project就代表一個項目工程,而在Android Studio一個Project代表一個工作空間,相當於Eclipse中的workspace,而在Android Studio中一個Mole就相當於Eclipse中的一個Project,這個概念需要弄明白,不要混了或覺得糊塗了。
第二:新建或導入工程後,要刪除工程,Android Studio只能去workspace文件夾去刪除,而不能在開發環境中刪除。
二、代碼編寫:
作為一個菜鳥,在編寫代碼前最大的問題就是不清楚目錄結構以及操作流程,新手在編寫代碼之前必須得弄清楚下面的目錄結構:
新建工程項目後AS的Proct目錄結構如下所示:
.idea://AS生成的工程配置文件,類似Eclipse的project.properties。
app://AS創建工程中的一個Mole。
gradle://構建工具系統的jar和wrapper等,jar告訴了AS如何與系統安裝的gradle構建聯系。
External Libraries://不是一個文件夾,只是依賴lib文件,如SDK等。
新建工程項目後AS的Mole目錄結構如下所示:
build://構建目錄,相當於Eclipse中默認Java工程的bin目錄,滑鼠放在上面右鍵Show in Exploer即可打開文件夾,
編譯生成的apk也在這個目錄的outs子目錄,不過在AS的工程里是默認不顯示out目錄的,就算有編譯結果也
不顯示,右鍵打開通過文件夾直接可以看。
libs://依賴包,包含jar包和jni等包。
src://源碼,相當於eclipse的工程。
main://主文件夾
java://Java代碼,包含工程和新建是默認產生的Test工程源碼。
res://資源文件,類似Eclipse。
layout://App布局及界面元素配置,雷同Eclipse。
menu://App菜單配置,雷同Eclipse。
values://雷同Eclipse。
dimens.xml://定義css的配置文件。
strings.xml://定義字元串的配置文件。
styles.xml://定義style的配置文件。
......://arrays等其他文件。
......://assets等目錄
AndroidManifest.xml://App基本信息(Android管理文件)
ic_launcher-web.png://App圖標
build.gradle://Mole的Gradle構建腳本
其中需要重點了解以下幾個文件:
res/layout/main.xml: App主窗體布局文件,你的應用長什麼樣都在這邊定義,有Design和Text兩種模式
res/values/strings.xml :這個文件用來存放程序調用的各種字元串
src/com/example/helloandroid/MyActivity.java :這個就是我們的主程序類,等下要實現的功能都在這個文件里添加
做好准備工作後,終於可以開始寫我們的hello android了。
1、首先為應用添加一個id為hellotextView的textview和一個id為hellobutton的button,(在main.xml文件中編寫)
代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="180dp"
android:text="@string/default_message"
android:id="@+id/hellotextView" android:textColor="#00ff00" android:gravity="center"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:id="@+id/hellobutton" android:layout_gravity="center"/>
</LinearLayout>
2、代碼和控制項用到的字元串定義如下:
代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">helloandroid by hiwanz</string>
<string name="button_send">Say something</string>
<string name="default_message">Click button below!</string>
<string name="interact_message">You just clicked on the Button!</string>
</resources>
3、主程序中定義button點擊後改變textview顯示的文本,並且彈出Toast提示信息。
代碼如下:
package com.example.helloandroid;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MyActivity extends Activity {
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//得到按鈕實例
Button hellobtn = (Button)findViewById(R.id.hellobutton);
//設置監聽按鈕點擊事件
hellobtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//得到textview實例
TextView hellotv = (TextView)findViewById(R.id.hellotextView);
//彈出Toast提示按鈕被點擊了
Toast.makeText(MyActivity.this,"Clicked",Toast.LENGTH_SHORT).show();
//讀取strings.xml定義的interact_message信息並寫到textview上
hellotv.setText(R.string.interact_message);
}
});
}
}
代碼寫好後,電腦通過USB數據線連接手機,手機系統設置里的開發人員選項里打開USB調試,在IDE中直接點Run就可以在手機上看到運行的效果了。
D. 安卓程序結構目錄有哪些每個目錄的作用是什麼
和電腦安裝程序,然後查找位置一樣。你安裝在SD卡你就去SD里找,一般內都是英文的。比如:容你安裝了網路的應用,那麼你SD卡根目錄里就會有這個標題的文件夾。騰訊產品是tencent酷我音樂kuwomusic希望能幫助你。