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