Android四大組件分別為activity、service、content provider、broadcast receiver。

濮陽(yáng)縣ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
一、android四大組件詳解
1、activity
(1)一個(gè)Activity通常就是一個(gè)單獨(dú)的屏幕(窗口)。
(2)Activity之間通過(guò)Intent進(jìn)行通信。
(3)android應(yīng)用中每一個(gè)Activity都必須要在AndroidManifest.xml配置文件中聲明,否則系統(tǒng)將不識(shí)別也不執(zhí)行該Activity。
2、service
(1)service用于在后臺(tái)完成用戶指定的操作。service分為兩種:
(a)started(啟動(dòng)):當(dāng)應(yīng)用程序組件(如activity)調(diào)用startService()方法啟動(dòng)服務(wù)時(shí),服務(wù)處于started狀態(tài)。
(b)bound(綁定):當(dāng)應(yīng)用程序組件調(diào)用bindService()方法綁定到服務(wù)時(shí),服務(wù)處于bound狀態(tài)。
(2)startService()與bindService()區(qū)別:
(a)started service(啟動(dòng)服務(wù))是由其他組件調(diào)用startService()方法啟動(dòng)的,這導(dǎo)致服務(wù)的onStartCommand()方法被調(diào)用。當(dāng)服務(wù)是started狀態(tài)時(shí),其生命周期與啟動(dòng)它的組件無(wú)關(guān),并且可以在后臺(tái)無(wú)限期運(yùn)行,即使啟動(dòng)服務(wù)的組件已經(jīng)被銷毀。因此,服務(wù)需要在完成任務(wù)后調(diào)用stopSelf()方法停止,或者由其他組件調(diào)用stopService()方法停止。
(b)使用bindService()方法啟用服務(wù),調(diào)用者與服務(wù)綁定在了一起,調(diào)用者一旦退出,服務(wù)也就終止,大有“不求同時(shí)生,必須同時(shí)死”的特點(diǎn)。
(3)開發(fā)人員需要在應(yīng)用程序配置文件中聲明全部的service,使用標(biāo)簽。
(4)Service通常位于后臺(tái)運(yùn)行,它一般不需要與用戶交互,因此Service組件沒(méi)有圖形用戶界面。Service組件需要繼承Service基類。Service組件通常用于為其他組件提供后臺(tái)服務(wù)或監(jiān)控其他組件的運(yùn)行狀態(tài)。
3、content provider
(1)android平臺(tái)提供了Content Provider使一個(gè)應(yīng)用程序的指定數(shù)據(jù)集提供給其他應(yīng)用程序。其他應(yīng)用可以通過(guò)ContentResolver類從該內(nèi)容提供者中獲取或存入數(shù)據(jù)。
(2)只有需要在多個(gè)應(yīng)用程序間共享數(shù)據(jù)是才需要內(nèi)容提供者。例如,通訊錄數(shù)據(jù)被多個(gè)應(yīng)用程序使用,且必須存儲(chǔ)在一個(gè)內(nèi)容提供者中。它的好處是統(tǒng)一數(shù)據(jù)訪問(wèn)方式。
(3)ContentProvider實(shí)現(xiàn)數(shù)據(jù)共享。ContentProvider用于保存和獲取數(shù)據(jù),并使其對(duì)所有應(yīng)用程序可見。這是不同應(yīng)用程序間共享數(shù)據(jù)的唯一方式,因?yàn)閍ndroid沒(méi)有提供所有應(yīng)用共同訪問(wèn)的公共存儲(chǔ)區(qū)。
(4)開發(fā)人員不會(huì)直接使用ContentProvider類的對(duì)象,大多數(shù)是通過(guò)ContentResolver對(duì)象實(shí)現(xiàn)對(duì)ContentProvider的操作。
(5)ContentProvider使用URI來(lái)唯一標(biāo)識(shí)其數(shù)據(jù)集,這里的URI以content://作為前綴,表示該數(shù)據(jù)由ContentProvider來(lái)管理。
4、broadcast receiver
(1)你的應(yīng)用可以使用它對(duì)外部事件進(jìn)行過(guò)濾,只對(duì)感興趣的外部事件(如當(dāng)電話呼入時(shí),或者數(shù)據(jù)網(wǎng)絡(luò)可用時(shí))進(jìn)行接收并做出響應(yīng)。廣播接收器沒(méi)有用戶界面。然而,它們可以啟動(dòng)一個(gè)activity或serice來(lái)響應(yīng)它們收到的信息,或者用NotificationManager來(lái)通知用戶。通知可以用很多種方式來(lái)吸引用戶的注意力,例如閃動(dòng)背燈、震動(dòng)、播放聲音等。一般來(lái)說(shuō)是在狀態(tài)欄上放一個(gè)持久的圖標(biāo),用戶可以打開它并獲取消息。
(2)廣播接收者的注冊(cè)有兩種方法,分別是程序動(dòng)態(tài)注冊(cè)和AndroidManifest文件中進(jìn)行靜態(tài)注冊(cè)。
(3)動(dòng)態(tài)注冊(cè)廣播接收器特點(diǎn)是當(dāng)用來(lái)注冊(cè)的Activity關(guān)掉后,廣播也就失效了。靜態(tài)注冊(cè)無(wú)需擔(dān)憂廣播接收器是否被關(guān)閉,只要設(shè)備是開啟狀態(tài),廣播接收器也是打開著的。也就是說(shuō)哪怕app本身未啟動(dòng),該app訂閱的廣播在
1, View是除了Android四大組件外,最常用的東西
2,什么是View:
View是android中所有控件的父類,比如TextView,LinearLayout等等
其中LinearLayout繼承自控件組ViewGroup,當(dāng)然ViewGroup也是繼承自View
3,View的位置
top:左上角縱坐標(biāo)
left:左上角橫坐標(biāo)
right:右下角橫坐標(biāo)
bottom:右下角縱坐標(biāo)
如下圖:
4,view的MotionEvent和TouchSlop
4.1MotionEvent:
ACTION_DOWN:手指接觸屏幕
ACTION_MOVE:手指在屏幕上滑動(dòng)
ACTION_UP:手指離開屏幕。
4.2TouchSlop
處理滑動(dòng)時(shí)的過(guò)濾條件,簡(jiǎn)單來(lái)說(shuō)就是,手指在屏幕上的一次操作算不算滑動(dòng)。
系統(tǒng)默認(rèn)值:ViewConfiguration.get(context).getScaledTouchSlop()
5,getX()getY()和getRawX()和getRawY()
前兩者相對(duì)于父控件View 后兩者相對(duì)于手機(jī)屏幕
6,VelocityTracker,GestureDetector,Scroller
6.1VelocityTracker:滑動(dòng)速度,在view的ontouch事件中,查看速度
6.2 GestureDetector:手勢(shì)判斷,比如長(zhǎng)按,點(diǎn)擊,雙擊等,很少用,可以用 ontouch事件來(lái)代替
6.3Scroller:彈性滑動(dòng)對(duì)象,實(shí)現(xiàn)view的位置改變等
7,原始滑動(dòng)方式
7.1:ScrollerTo和Scroller By()
實(shí)現(xiàn)簡(jiǎn)單 但是只能滑動(dòng)view里面的子元素
7.2:改變view參數(shù)
實(shí)現(xiàn)復(fù)雜,但是如果view有交互,這種方式比較好
7.3:動(dòng)畫
適用于沒(méi)有交互的,或者動(dòng)畫復(fù)雜的view的滑動(dòng)
8View的事件分發(fā):
8.1:Activity-window-View
8.2:view中是從父到子,也就是從外到內(nèi),都不處理,返回給最頂級(jí)
8.3:ViewGroup默認(rèn)不攔截任何事件,默認(rèn)返回false
8.4:分發(fā)方法:dispatchTouchEvent,OnInterceptTouchEvent,OnTouchEvent
dispatchTouchEvent:分發(fā)
OnInterceptTouchEvent:攔截
OnTouchEvent:處理點(diǎn)擊事件
應(yīng)用程序中,一個(gè)Activity就相當(dāng)于手機(jī)屏幕,它是一種可以包含用戶界面的組件,主要用于和用戶進(jìn)行交互。一個(gè)應(yīng)用程序可以包含許多活動(dòng),比如事件的點(diǎn)擊,一般都會(huì)觸發(fā)一個(gè)新的Activity。
應(yīng)用可以使用它對(duì)外部事件進(jìn)行過(guò)濾只對(duì)感興趣的外部事件(如當(dāng)電話呼入時(shí),或者數(shù)據(jù)網(wǎng)絡(luò)可用時(shí))進(jìn)行接收并做出響應(yīng)。廣播接收器沒(méi)有用戶界面。然而,它們可以啟動(dòng)一個(gè)activity或serice 來(lái)響應(yīng)它們收到的信息,或者用NotificationManager來(lái)通知用戶。通知可以用很多種方式來(lái)吸引用戶的注意力──閃動(dòng)背燈、震動(dòng)、播放聲音等。一般來(lái)說(shuō)是在狀態(tài)欄上放一個(gè)持久的圖標(biāo),用戶可以打開它并獲取消息。
內(nèi)容提供者主要用于在不同應(yīng)用程序之間實(shí)現(xiàn)數(shù)據(jù)共享的功能,它提供了一套完整的機(jī)制,允許一個(gè)程序訪問(wèn)另一個(gè)程序中的數(shù)據(jù),同時(shí)還能保證被訪問(wèn)數(shù)據(jù)的安全性。只有需要在多個(gè)應(yīng)用程序間共享數(shù)據(jù)時(shí)才需要內(nèi)容提供者。例如:通訊錄數(shù)據(jù)被多個(gè)應(yīng)用程序使用,且必須存儲(chǔ)在一個(gè)內(nèi)容提供者中。它的好處:統(tǒng)一數(shù)據(jù)訪問(wèn)方式。
是Android中實(shí)現(xiàn)程序后臺(tái)運(yùn)行的解決方案,它非常適合去執(zhí)行那些不需要和用戶交互而且還要長(zhǎng)期運(yùn)行的任務(wù)(一邊打電話,后臺(tái)掛著QQ)。服務(wù)的運(yùn)行不依賴于任何用戶界面,即使程序被切換到后臺(tái),或者用戶打開了另一個(gè)應(yīng)用程序,服務(wù)扔然能夠保持正常運(yùn)行,不過(guò)服務(wù)并不是運(yùn)行在一個(gè)獨(dú)立的進(jìn)程當(dāng)中,而是依賴于創(chuàng)建服務(wù)時(shí)所在的應(yīng)用程序進(jìn)程。當(dāng)某個(gè)應(yīng)用程序進(jìn)程被殺掉后,所有依賴于該進(jìn)程的服務(wù)也會(huì)停止運(yùn)行(正在聽音樂(lè),然后把音樂(lè)程序退出)。
1.文本框(TextView)和編輯框(EditText)
文本框(TextView)不允許用戶編輯文本內(nèi)容,而編輯框(EditText)允許用戶編輯文本內(nèi)容
2.按鈕(Button)和圖片按鈕(ImageButton)
Button顯示文字,ImageButton顯示圖片。
為ImageButton指定android:text屬性沒(méi)用,不會(huì)顯示文字
可以指定android:background為按鈕增加背景圖片,但這圖片是固定的
可以指定android:src為圖片按鈕增加圖片屬性
其實(shí),src才是設(shè)置圖標(biāo),而background只是設(shè)置背景。
如果控件的大小是100 100 圖片資源是80 80的話,那么用src,圖片就會(huì)居中顯示,如果使用background那么圖片就會(huì)被拉伸充滿控件。
重要的是,background是底層的圖片資源,src是覆蓋在background上面的資源,他們可以疊加使用,實(shí)現(xiàn)選中的效果。
3.單選按鈕(RadioButton)和復(fù)選框(CheckBox)
多了一個(gè)android:checked屬性,用于指定初始時(shí)是否被選中
4.計(jì)時(shí)器組件Chronometer用法
紅色字體表示常用的方法
5.圖像視圖(ImageView)
它支持屬性android:scaleType setScaleType(ImageView.ScaleType)
matrix(ImageView.ScaleType.MATRIX):使用matrix方式進(jìn)行
fixXY(ImageView.ScaleType.FIX_XY):對(duì)圖片橫向縱向獨(dú)立縮放,會(huì)改變縱橫比
fitStart(ImageView.ScaleType.FIT_START):保持縱橫比,圖片較長(zhǎng)的邊長(zhǎng)與ImageView相應(yīng)的邊長(zhǎng)相等,縮放后放在左上角
fitCenter(ImageView.ScaleType.FIT_CENTER):保持縱橫比,圖片較長(zhǎng)的邊長(zhǎng)與ImageView相應(yīng)的邊長(zhǎng)相等,縮放后放在中央
fitEnd(ImageView.ScaleType.FIT_END):保持縱橫比,圖片較長(zhǎng)的邊長(zhǎng)與ImageView相應(yīng)的邊長(zhǎng)相等,縮放后放在右下角
center(ImageView.ScaleType.CENTER):放中間,不縮放
centerCrop(ImageView.ScaleType.CENTER_CROP):保持縱橫比,使圖片能完全覆蓋ImageView
centerInside(ImageView.ScaleType.CENTER_INSIDE):保持縱橫比,使ImageView能完全顯示圖片
6.spinner的功能和用法
如果可以確定spinner里面的列表項(xiàng),那么直接在/res/layout/main.xml里面指定
然后在/res/value/string.xml里面指定
如果不確定里面的列表項(xiàng),那么必須要提供一個(gè)Adapter,這個(gè)Adapter負(fù)責(zé)決定Spinner列表每項(xiàng)的內(nèi)容
7.日期、時(shí)間選擇器(DatePicker和TimePicker)
8.自動(dòng)完成文本框(AutoCompleteTextView)
比普通文本框多了一個(gè)功能:當(dāng)用戶輸入一定字符后,自動(dòng)完成文本框會(huì)顯示一個(gè)下拉菜單,供用戶從中選擇,當(dāng)用戶選擇某個(gè)菜單后,組件會(huì)按用戶選擇自動(dòng)填寫該文本框
使用該組件很簡(jiǎn)單,只要為它設(shè)置一個(gè)Adapter,該Adapter封裝了AutoCompleteTextView預(yù)設(shè)的提示文本
9.進(jìn)度條(ProgressBar)
通過(guò)style屬性可以為ProgressBar指定風(fēng)格。該屬性可以有如下的屬性值:
1.@android:style/Widget.ProgressBar.Horizontal 水平進(jìn)度條
2.@android:style/Widget.ProgressBar.Inverse 不斷跳躍、旋轉(zhuǎn)畫面的進(jìn)度條
3.@android:style/Widget.ProgressBar.Large 大進(jìn)度條
4.@android:style/Widget.ProgressBar.Large.Inverse不斷跳躍、旋轉(zhuǎn)畫面的大進(jìn)度條
5.@android:style/Widget.ProgressBar.Small 小進(jìn)度條
6.@android:style/Widget.ProgressBar.Small.Inverse不斷跳躍、旋轉(zhuǎn)畫面的小進(jìn)度條
ProgressBar提供如下方法來(lái)操作進(jìn)度
1.setProgress(int) 設(shè)置進(jìn)度的完成百分比
2.incrementProgressBy(int) 設(shè)置進(jìn)度條的增加或減少。參數(shù)為正增加,參數(shù)為負(fù)減少
10.選項(xiàng)卡(TabHost)
TabHost僅僅只是一個(gè)簡(jiǎn)單的容器,它提供如下方法
1.newTabSpec(String tag) 創(chuàng)建選項(xiàng)卡
2.addTab(TabHost.TabSpec tabSpec) 添加選項(xiàng)卡
使用TabHost的一般步驟為:
? A. 在界面中定義TabHost組件,并為該組件定義該選項(xiàng)卡的內(nèi)容
? B. Activity應(yīng)該繼承TabActivity
? C. 調(diào)用TabActivity的getTabHost()來(lái)獲取TabHost對(duì)象
? D. 通過(guò)TabHost對(duì)象的方法來(lái)創(chuàng)建選項(xiàng)卡、添加選項(xiàng)卡
選項(xiàng)卡主要由TabHost、TabWidget、FrameLayout3個(gè)組件組成,三者缺一不可,想象一下選項(xiàng)卡的特點(diǎn),多個(gè)卡重疊在一起,所以用FrameLayout即幀布局是必要的。另外需要注意的是TabHost、TabWidget、FrameLayout三個(gè)組件的android:id必須使用系統(tǒng)默認(rèn)的名稱,而不能自己隨意定義,否則會(huì)出錯(cuò)。
11.圖像切換器(ImageSwitcher)
12.網(wǎng)格視圖(GridView)
使用GridView一般指定numColumn大于1,否則取默認(rèn)值為1.那么GridView就變成了ListView
屬性android:stretchMode支持如下屬性
1.none 不拉伸
2.spacingWidth 僅拉伸元素之間的間距
3.spacingWidthUniform 表格、元素之間的間距一起拉伸
4.columnWidth 僅拉伸表格
13.畫廊視圖(Gallery)(現(xiàn)在已經(jīng)被棄用了,不過(guò)還是列出來(lái)吧)
Gallery用法很簡(jiǎn)單——為它提供一個(gè)內(nèi)容Adapter,該Adapter的getView方法所返回的View可作為Gallery的列表項(xiàng)。可以通過(guò)OnItemSelectedListener監(jiān)聽選擇項(xiàng)的改變
14.列表試圖(ListView和ListActivity)
1.創(chuàng)建ListView由兩種方式:
2.直接使用ListView進(jìn)行創(chuàng)建
讓Activity繼承ListActivity(繼承了ListActivity的類無(wú)需調(diào)用setContentView()來(lái)顯示頁(yè)面,可以直接設(shè)置適配器)
一旦獲得ListView后,就要?jiǎng)?chuàng)建顯示的列表項(xiàng)了。需要借助內(nèi)容Adapter,內(nèi)容Adapter負(fù)責(zé)提供需要顯示的列表項(xiàng)
創(chuàng)建ArrayAdapter時(shí)必須指定一個(gè)textViewResourceId,該參數(shù)決定每個(gè)列表項(xiàng)的外觀
1.simple_list_item_1 每個(gè)列表項(xiàng)是普通的TextView
2.simple_list_item_2 每個(gè)列表項(xiàng)是普通的TextView(字體略大)
3.simple_list_item_checked 每個(gè)列表項(xiàng)是已勾選的列表項(xiàng)
4.simple_list_item_multiple_choice 每個(gè)列表項(xiàng)是帶多選框的文本
5.simple_list_item_single_choice 每個(gè)列表項(xiàng)是帶多單選按鈕的文本
15.使用AlertDialog
1.創(chuàng)建AlertDialog.Builder對(duì)象,該對(duì)象是AlertDialog的創(chuàng)建器
2.調(diào)用AlertDialog.Builder方法為對(duì)話框設(shè)置圖標(biāo)、標(biāo)題等
3.調(diào)用AlertDialog.Builder的create()方法創(chuàng)建AlertDialog對(duì)話框
4.調(diào)用AlertDialog的show()方法顯示對(duì)話框
16.使用Toast顯示提示框
步驟如下:
? 調(diào)用Toast構(gòu)造器或makeText方法創(chuàng)建Toast對(duì)象
? 調(diào)用Toast方法來(lái)設(shè)置該消息的對(duì)齊方式等
? 調(diào)用Toast的show()方法顯示出來(lái)
? Toast toast = Toast.makeText(ToastTest.this, "信息", Toast.LENGTH_LONG).show();
17.Notification(一般顯示網(wǎng)絡(luò)狀態(tài)、電池狀態(tài)、時(shí)間等)
使用Notification發(fā)送Notification步驟:
? 調(diào)用getSystemService(NOTIFICATION_SERVICE)方法獲取系統(tǒng)的Notification Manager服務(wù)
? 通過(guò)構(gòu)造器創(chuàng)建一個(gè)Notification對(duì)象
? 為Notification設(shè)置屬性
? 通過(guò)Notification Manager發(fā)送Notification
Android一共有四種常用的組件:Activity、Service、ContentProvider、BroadcastReceiver
當(dāng)運(yùn)行我們的Android應(yīng)用程序時(shí),Android操作系統(tǒng)首先會(huì)去找我們的AndroidManifest.xml這個(gè)文件,這個(gè)文件是我們應(yīng)用程序的主配置文件,因?yàn)槲覀円粋€(gè)應(yīng)用可能有多個(gè)Activity,那么首先展示那個(gè)Activity呢?這個(gè)主配置文件就定義了當(dāng)前這個(gè)應(yīng)用的默認(rèn)所加載的Activity對(duì)象,找到Activity對(duì)象后,就會(huì)調(diào)用其onCreate()方法,這個(gè)方法主要就是用來(lái)加載我們的布局文件,通過(guò)setContentView()方法可以來(lái)加載我們指定的布局文件,最后根據(jù)布局文件中的各個(gè)控件顯示在我們的屏幕上。這個(gè)就是我們的Activity的啟動(dòng)流程。
網(wǎng)頁(yè)標(biāo)題:android常用組件,android的核心組件
文章源于:http://chinadenli.net/article16/dsgcgdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、企業(yè)建站、網(wǎng)站收錄、用戶體驗(yàn)、網(wǎng)站制作、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)