由於剛入門Android教程,首先就下載配置了兩天,各種草泥馬。。。先是被牆,各種配置錯誤,然后還給我來個gradle版本不對,下載gradle-4.4-all花了老半天,最后還是從別人的網盤下載的。學習資料不多,下面是我在菜鳥教程一字一字敲的,加強了一下理解嗎。雖說還是菜鳥都不如的。畢竟花了老半天...
MainActivity
onCreate (Bundle instance)
Bundle : final 類 一種字符串到變量的映射
放入鍵值對的形式,另一個Activity來取數據的時候;
通過key取值
bundle.putString("key","values");
它是一個簡單的數據攜帶包,該對象也包含了多個方法來存入數據
R--activity_main.xml
Maanifest文件:
無論開發什么組件作為應用程序的一部分,都需要在應用程序
根目錄下的Manifest.xml中聲明所有的組件,這個文件是Android
操作系統和應用程序之間的接口,因此,如果
沒有在這個文件中聲明你的組件,將無法被操作系統識別。
android:name屬性指定一個Activity類子類的全名,
android:label屬性用於指定一個活動,可以使用標簽來指定多個活動
意圖過濾器:intent-filter
<activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity>
action被命名為android.intent.action.MAIN,
表明這個活動被用作程序的入口
category 被命名為:android.intent.category.LAUNCHER
表明應用程序可以通過設備啟動器的圖標來啟動。
@String 指的是string.xml,
用於指定不同的Android應用程序組件:
活動元素
服務元素
廣播接收元素
內容提供者元素
Strings文件位於res/value文件夾下,
它包含應用程序使用到的所有文本,
R文件:它是活動的java文件如MainActivity.java
的和資源如strings.xml之間的膠水。自動生成。
//
Layout文件:
activity_main.xml是在res/layout目錄下的文件
當應用程序構建它的界面時被引用,可以
頻繁修改這個文件來改變應用程序的布局。
其中的textview是一個控件,用於構建用戶圖形界面,
它包含許多不同的屬性,諸如android:layout_width, android:layout_height等用來設置它的寬度和高度等。
res/支持的資源:
color/ 定義顏色狀態列表的xml文件,保存在res/values/color文件夾下
drawable 圖片文件
menu 定義應用程序的xml文件,如選項菜單,上下文菜單,子菜單
被保存在res/menu/文件夾下,通過R.menu類訪問
valeus/ 包含簡單值,如字符串 整數 顏色等
的xml文件,這里有一些資源命名規范,
arrays.xml代表數組資源,通過R.array類訪問,
integers代表整數資源 ,通過R.integer類訪問,
bool.xml代表布爾值資源,通過R.bool類訪問,
dimens.xml代表維度值,通過R.dimen類訪問;
strings.xml代表字符串資源,通過R.string訪問;
xml/ 可以通過Resources.getXML()來運行時讀取任意的
XML文件,可以在這里保存運行時使用的各種配置文件
替代資源:
你的應用程序需要為特定的設備配置提供替代的資源支持。比如說,
你需要為不同的屏幕分辨率提供替代的圖片資源,
以下步驟:
res/創建一個新的目錄,以<resource_name>_<confug_qualifier>
的方式命名;這里的resource_name 可以是以上的任意資源,如圖片。布局等,
在這個目錄下保存響應 的替代資源,這些資源文件必須
與默認生成的資源文件名一致,
然而這些文件將確定的內容進行替代,
示例: http://www.runoob.com/android/android-resources.html
訪問資源:
應用程序開發中,需要訪問定義好的資源,不論是通過代碼還是
xml文件。
當Android應用程序被編譯,生成一個R類,其中包含了所有res/目錄下資源的id
通過子類+資源名或者直接使用資源ID來訪問資源。
訪問res/drawable/myimage.png,並將其設置到ImageView上,
//獲取定義為myimageview的ImageView
ImageView imgageView = (ImgageView)findViewByid(R.id.myimageview);
//ImageView獲取在res/下的drawable子目錄下名為myimage的圖片
imageView.setImageResource(R.drawable.myimage);
如res/values/strings.xml以下定義:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello, World!</string>
</resources>
現在在ID為msg的TextVIew對象上使用資源ID來設置文本;
TextView msgTextView = (TextVIew)findViewbuId(R.id.msg);
msgText.setText(R.string.hello);
在xml中訪問:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="opaque_red">#f00</color> <string name="hello">Hello!</string> </resources>
布局文件中可以這樣:
android:text = "@String/hello"/>
android:textColor = "@color/opaque_red"
活動(Activity)
活動代表了具有用於界面的單一屏幕:如java的窗口或者幀,Android
的活動是ContextThemeWrapper類的子類:
Android初始化它的程序是通過活動中的onCreate()回調的調用開始的
Activity類定義了下面的回調:
onCreate() 第一個回調,在活動第一次創建時調用
onStart() 這個回調在活動中為用戶可見時調用
onResume() 這個回調在應用程序與用戶開始可交互的時候調用
onPause() 被暫停的活動無法接受用戶輸入,不能執行任何代碼
當前的活動將要被暫停,上一個活動將要恢復時調用
onStop() 當活動在不可見時調用
onDestory() 當活動被銷毀之前調用
onRestart() 當活動被停止以后重新打開是調用
Log.d() 方法用來生成日志信息。
活動類從項目的res/layout中的XML文件中加載所有的UI組件
下面的語句從res/layout/activity_main.xml文件中加載UI組件
setContentView(R.layout.activity_main);
一個應用程序可以有1個或多個活動,而沒有任何限制。每個為應用程序所定義的活動都需要在AndroidManifest.xml中聲明。
在意圖過濾器標簽中需要包含MAIN動作和
LAUNCHER類別
服務(service)
服務是一個后台運行的組件,執行長時間元素且不需要用戶交互的
任務,應用被銷毀也依然可以存在
基本包含兩種狀態
Started: 組件,如活動,通過startService()啟動了服務,則服務
是Start狀態,服務可以在后天無限期運行,即使啟動它的組件已經被銷毀。
Bound
當Android的應用程序組件通過bindService()綁定了
服務,則服務是Bound狀態,它提供了
一個客戶服務器接口允許組件和服務進行交互,如
發送請求,獲取結果,甚至通過IPC來進行跨進程通信。
服務擁有生命周期方法,可以實現監控服務狀態的變化,
可以在合適的階段執行工作。
onCreate=>onStart()=>running=>onDestroy
要創建服務,需要創建一個繼承Service基類
或者它們的已知子類的java類,
基類定義了不同的回調方法和多數重要方法。
回調方法如下:
onStartCommand()
onBind()
onUnbind()
onCreate() 當服務通過onStartCommand()
和onBind()被第一次創建的時候,系統調用該方法,
要求一次性安裝。
onDestory() 當服務不在有用或被銷毀時,系統調用該方法,
你的服務需要實現該方法來清理任何資源,如線程,已注冊
的監聽器,接收器。
public class HelloService extends Service{
int mstartMode(); 、、標識服務被殺死之后的行為
IBinder mbinder; //綁定的客戶端接口
//通過bindService()綁定到服務的客戶端
public IBinder onBind(Intent intent){
return mBinder;
}
}
廣播接收器(Broadcast Receivers)
用於響應來自其他應用程序或者系統的
廣播消息。這些消息有時被稱為
事件或者意圖,應用程序可以初始化廣播來讓其他的
應用程序知道一些數據已經被下載到設備,
使系統的廣播意圖配合廣播接收器工作:
1.創建廣播接收器
2.注冊廣播接收器
public class MyReceiver extend BroadcastReceiver{
public void onReceive(Context context,Intent intent){
Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();
}
}
應用程序通過AndroidManifest.xml中注冊廣播接收器類監聽
制定的廣播意圖,假設我們將要注冊MyReceiver來
監聽系統產生的ACTION_BOOT_COMPLETED事件,
Android 碎片(Fragment)
活動的一部分,是活動更加模塊化的設計,
碎片擁有自己的布局,自己的行為以及自己的生命周期回調
活動正在運行的時候,可以在活動中添加或者移除碎片
可以合並多個碎片在一個單一的活動中來構建多欄的UI
碎片可以被用在多個活動中。
碎片的生命周期和它的宿主活動緊密相連,活動被暫停,
碎片也別停止
碎片可以實現行為而沒有用戶界面
API版本11加入的
方式:
繼承Fragment類來創建,可以通過使用元素在活動中的布局文件
聲明碎片來在你的活動中插入碎片。
在引入碎片之前,由於每次給定的一個事件點在屏幕上只能顯示
單一的活動,因此我們有一個局限。我們無法分割設備屏幕並且獨立的控制不同的部分。伴隨着碎片的引入,我們獲得了更大的靈活性,並使得一個時間點只能在屏幕上有一個單一活動的限制被移除。現在我們可以有單一的活動,但每個活動由多個碎片組裝,每個碎片有自己的布局,
事件和完整的生命周期。
Android內容提供者(Content Provider)
內容提供者組件通過請求從一個應用程序向其他的應用程序提供數據。
這些請求由類ContentResolver的方法類處理,內容提供者可以使用
不同的方式類存儲數據,可以存在數據庫,文件,或者網絡
內容提供者可以讓內容集中,必要時可以有多個應用程序來訪問。
和數據庫很像,一般存儲在SQLite數據庫。
內容提供者被實現為類:ContentProvider類的子類
創建內容提供者:
首先,需要繼承ContentProviderbase來創建詭異而內容提供者
其次,需要定義用於訪問內容的url地址
創建數據庫保存內容,在框架中重寫
onCreate()方法來使用SQLiteOpenHelper的方法
創建或者打開提供者的數據庫,應用程序啟動,它的每個內容提供者的 onCreate() 方法將在應用程序主線程中被調用。
隨后在補充吧。