




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Android中的特色編程9.1Android的Fragment9.2Android中ViewPager的使用9.3Android中的動畫9.4Android常用傳感器的操作9.5Android中的定位9.6Android的硬件操作
9.1Android的Fragment
9.1.1Fragment的相關(guān)使用在使用Fragment時,需要繼承Fragment或者Fragment的子類(DialogFragment,ListFragment,PreferenceFragment,WebViewFragment),所以Fragment的代碼看起來和Activity的類似。SupportLibrary是一個提供了API庫函數(shù)的JAR文件,這樣就可以在舊版本的Android上使用一些新版本的APIs。
比如android-support-v4.jar.,它的完整路徑是:
<sdk>/extras/android/support/v4/android-support-v4.jar.,它就提供了Fragment的APIs,使得在Android1.6(APIlevel4)以上的系統(tǒng)都可以使用Fragment。為了確定沒有在舊版本系統(tǒng)上使用新版本的APIs,需要導(dǎo)入如下語句:
同時應(yīng)該將上述的包拷入libs項目下的libs文件夾,然后在項目的Properties中添加:右鍵單擊項目,選Properties,左邊選JavaBuildPath,然后AddExternalJARs…,添加android-support-v4.jar。
當創(chuàng)建包含F(xiàn)ragment的Activity時,如果用的是SupportLibrary,那么繼承的就應(yīng)該是FragmentActivity而不是Activity。
9.1.2通過布局文件將Fragment加入Activity
新建一個Android項目,在layout文件夾下新建兩個xml文件,分別命名為fragment1,fragment2,兩個布局文件的界面可以任意設(shè)置,只要可以區(qū)分即可。
Fragment1和Fragment2的方法一樣,只是將返回的布局文件由fragment1變成了fragment2。只有將其轉(zhuǎn)換為View視圖以后,才能在Fragment控件中進行加載。
特別注意的是,其中android:name屬性填上自己創(chuàng)建的fragment的完整類名。此布局文件把整個屏幕寬度劃分成為了3份,F(xiàn)ragment1占據(jù)了1份,F(xiàn)ragment2占據(jù)了2份,現(xiàn)在我們來把這個項目部署到模擬器上,出現(xiàn)如圖9-1所示的效果。圖9-1在Activity中加入Fragment
9.1.3通過Java代碼將Fragment加入Activity
剛才我們通過xml方式對Fragment進行了定義,現(xiàn)在來學習如何通過編程的方式將Fragment加入到一個ViewGroup中。新建一個Android項目,在它的layout布局文件中,新建兩個布局文件,分別命名為fragment1和fragment2,fragment1和fragment2可以任意,只需要可以區(qū)別即可,再創(chuàng)建Fragment1和Fragment2這兩個類,在類中也返回對應(yīng)的View類型的布局文件,這些過程和上一節(jié)一樣。
最終這個程序?qū)崿F(xiàn)的功能就是,點擊第一個按鈕,界面轉(zhuǎn)換為Fragment1的界面,點擊第二個按鈕,界面轉(zhuǎn)換為Fragment2的界面。運行效果圖如圖9-2所示。圖9-2用代碼實現(xiàn)Fragment的添加
9.2Android中ViewPager的使用
9.2.1ViewPager簡介ViewPager是Android擴展包v4包中的類,這個類可以讓用戶左右切換當前的view。ViewPager類直接繼承了ViewGroup類,所有它是一個容器類,可以在其中添加其他的view類。
使用PagerAdapter類,可以至少實現(xiàn)以下的4個方法,如果需要更好的擴展也可以實現(xiàn)更多的方法。
getCount():獲得viewpager中有多少個view。
destroyItem():移除一個給定位置的頁面。
instantiateItem():將給定位置的view添加到ViewGroup(容器)中,創(chuàng)建并顯示出來。
isViewFromObject():判斷instantiateItem(ViewGroup,int)函數(shù)所返回來的Key與一個頁面視圖是否代表同一個視圖(即它倆是否對應(yīng)的表示同一個視圖View),通常我們直接寫returnview==object;就可以了(設(shè)置key的時候必須以view本身作為key才可以)。以上四個方法是PagerAdapter必須實現(xiàn)的四個方法。
9.2.2ViewPager案例
下面我們通過一個案例來學習ViewPager控件的使用方法,新建一個Android項目,注意:版本一定選擇在Android2.3.3以上,添加android-support-v4.jar包,如果ADT自動添加了jar包,則不用手動添加。整個項目結(jié)構(gòu)如圖9-3所示。圖9-3ViewPager項目結(jié)構(gòu)
和正常的布局界面不同的是,ViewPager作為引入jar包中的控件,必須進行全名引用,即控件必須指定其包名,這里通過android.support.v4.view.ViewPager進行引入。做出四個普通的布局文件tab1、tab2、tab3、tab4,簡單起見,每個布局文件中僅放一個TextView控件進行區(qū)別即可。
部署運行本案例,當手指在屏幕上滑動時,可以切換到不同的界面,如圖9-4所示。圖9-4ViewPager項目結(jié)構(gòu)
9.3Android中的動畫
Android的動畫分為兩大類:補間動畫,幀動畫。補間動畫又分為四大類:移動補間動畫,縮放補間動畫,旋轉(zhuǎn)補間動畫,透明補間動畫。這四種補間動畫都是Animation的子類。
9.3.1四種補間動畫的介紹
1.移動補間動畫
移動補間動畫:TranslateAnimation
Animationanimation=newTranslateAnimation(0,50,0,50);
參數(shù)1:x軸的起始位置;
參數(shù)2:x軸的終止位置;
參數(shù)3:y軸的起始位置;
參數(shù)4:y軸的終止位置。
2.縮放補間動畫
Animationanimation=newScaleAnimation(1f,0.2f,1f,0.2f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
參數(shù)1:x方向起始大小(1f表示原圖大小);
參數(shù)2:x方向終止大小(0.2f表示原圖的0.2倍);
參數(shù)3:y方向起始大小(1f表示原圖大小);
參數(shù)4:y方向終止大小(0.2f表示原圖的0.2倍);
參數(shù)5:縮放中心點x軸取值的參照方式;
參數(shù)6:中心點x軸的取值(0.5f表示相對于原圖的0.5倍);
參數(shù)7:縮放中心點y軸取值參照方式;
參數(shù)8:中心點y軸的取值(0.5f表示相對于原圖的0.5倍)。
3.旋轉(zhuǎn)補間動畫
Animationanimation=newRotateAnimation(360,0,Animation.RELATIVE_TO_SELF,0.5f,
Animation.RELATIVE_TO_SELF,0.5f);
參數(shù)1:旋轉(zhuǎn)的起始角度;
參數(shù)2:旋轉(zhuǎn)的終止角度;
參數(shù)3:旋轉(zhuǎn)中心的x軸取值參照方式;
參數(shù)4:中心點x軸的取值;
參數(shù)5:旋轉(zhuǎn)中心的y軸取值參照方式;
參數(shù)6:中心點y軸的取值。
4.透明補間動畫
AlphaAnimationAnimationanimation=newAlphaAnimation(1f,0.1f);
參數(shù)1:起始透明度;
參數(shù)2:目標透明度。
9.3.2用xml布局實現(xiàn)動畫
首先用xml布局制作如圖9-5所示的界面。圖9-5動畫效果的主界面
1.透明動畫
在該項目上單擊右鍵,選擇“New”→“folder”,在“foldername”填入“anim”,點擊finish,完成anim文件夾的創(chuàng)建,在anim文件夾上單擊右鍵,選擇“New”→“AndroidXMLFile”,在“RootElement”一欄選擇“alpha”標簽,在“File”一欄輸入“alpha”,點擊“finish”,在alpha.xml中鍵入代碼。
2.旋轉(zhuǎn)動畫
在anim文件夾上單擊右鍵,選擇“New”→“AndroidXMLFile”,在“RootElement”一欄選擇“rotate”標簽,在“File”一欄輸入“rotate”,點擊“finish”,在rotate.xml中鍵入代碼。
3.平移動畫
在anim文件夾上單擊右鍵,選擇“New”→“AndroidXMLFile”,在“RootElement”一欄選擇“translate”標簽,在“File”一欄輸入“translate”,點擊“finish”,在translate.xml中鍵入代碼。
4.縮放動畫
在anim文件夾上單擊右鍵,選擇“New”→“AndroidXMLFile”,在“RootElement”一欄選擇“scale”標簽,在“File”一欄輸入“scale”,點擊“finish”,在scale.xml中鍵入代碼。
以上四個xml文件都是單獨的動畫效果,我們能不能設(shè)置一種組合的動畫效果呢?讓所有的動畫可以一起執(zhí)行?現(xiàn)在,我們來設(shè)置一套組合的動畫效果,在anim文件夾上單擊右鍵,選擇“New”→“AndroidXMLFile”,在“RootElement”一欄選擇“set”標簽,在“File”一欄輸入“set”,點擊“finish”,在set.xml中鍵入代碼。
9.3.3用Java代碼實現(xiàn)動畫
上一小節(jié)我們使用的是xml的方式實現(xiàn)動畫效果,但是實現(xiàn)動畫不只有xml方式,使用Java代碼的方式同樣可以實現(xiàn)動畫的效果。創(chuàng)建項目以后,制作和上節(jié)同樣的布局文件。
將程序部署到模擬器上,點擊不同的按鈕,圖片會有不同的動畫效果。
9.4Android常用傳感器的操作9.4.1Android傳感器的類型
9.4.2Android傳感器的簡介
1.加速度傳感器
加速度傳感器又叫G-sensor,返回x、y、z三軸的加速度數(shù)值。該數(shù)值包含地心引力的影響,單位是m/s^2。
2.磁力傳感器
磁力傳感器簡稱為M-sensor,返回x、y、z三軸的環(huán)境磁場數(shù)據(jù)。該數(shù)值的單位是微特斯拉(micro-Tesla),用uT表示,單位也可以是高斯(Gauss)。
硬件上一般沒有獨立的磁力傳感器,磁力數(shù)據(jù)由電子羅盤傳感器提供(E-compass)。
電子羅盤傳感器同時提供方向傳感器數(shù)據(jù)。
3.方向傳感器
方向傳感器簡稱為O-sensor,返回三軸的角度數(shù)據(jù),方向數(shù)據(jù)的單位是角度。為了得到精確的角度數(shù)據(jù),E-compass需要獲取G-sensor的數(shù)據(jù)。
經(jīng)過計算生產(chǎn)O-sensor數(shù)據(jù),否則只能獲取水平方向的角度。
方向傳感器提供三個數(shù)據(jù),分別為azimuth、pitch和roll。
4.陀螺儀傳感器
陀螺儀傳感器叫做Gyro-sensor,返回x、y、z三軸的角加速度數(shù)據(jù)。角加速度的單位是radians/second。
5.光線感應(yīng)傳感器
光線感應(yīng)傳感器檢測實時的光線強度,光強單位是lux,其物理意義是照射到單位面積上的光通量。光線感應(yīng)傳感器主要用于Android系統(tǒng)的LCD自動亮度功能。
6.壓力傳感器
壓力傳感器返回當前的壓強,單位是百帕斯卡hectopascal(hPa)。
7.溫度傳感器
溫度傳感器返回當前的溫度。
8.距離傳感器
距離傳感器檢測物體與手機的距離,單位是厘米。
9.重力傳感器
重力傳感器簡稱GV-sensor,輸出重力數(shù)據(jù)。
10.線性加速度傳感器
線性加速度傳感器簡稱LA-sensor。線性加速度是加速度傳感器獲取的數(shù)據(jù)減去重力影響獲取的數(shù)據(jù),單位是m/s^2,坐標系統(tǒng)與加速度傳感器相同。
加速度傳感器、重力傳感器和線性加速度傳感器的計算公式如下:加速度?=?重力?+?線性加速度
11.旋轉(zhuǎn)矢量傳感器
旋轉(zhuǎn)矢量傳感器簡稱RV-sensor。旋轉(zhuǎn)矢量代表設(shè)備的方向,是一個將坐標軸和角度混合計算得到的數(shù)據(jù)。
9.4.3Android傳感器的使用
(1)距離傳感器的關(guān)鍵代碼。
(2)光線傳感器的關(guān)鍵代碼。
(3)重力傳感器的關(guān)鍵代碼。
通過以上三個傳感器的關(guān)鍵代碼,可以發(fā)現(xiàn)傳感器的使用方式都是大同小異的??偨Y(jié)起來的步驟不外乎是獲取系統(tǒng)傳感器的服務(wù),注冊傳感器,重寫傳感器狀態(tài)改變的方法,在狀態(tài)改變的時候獲取改變的變量,進行相應(yīng)的操作。
這些傳感器的使用,都是用來方便用戶的操作,免去一些繁瑣的流程。
9.4.4Android傳感器案例
此項目的規(guī)劃為:第一主界面設(shè)置三個按鈕,通過按鈕選擇不同的傳感器。第二選擇光線傳感器,進入光線傳感器的界面,在此界面中,可以根據(jù)當前光線的強弱自動調(diào)節(jié)屏幕的亮度。第三選擇重力傳感器,進入重力傳感器的界面,在此界面中,有一張小球的圖片,根據(jù)當前手機的重力方向,使小球進行相應(yīng)的移動。第四選擇距離傳感器,進入距離傳感器的界面,在此界面中,根據(jù)用戶離距離傳感器的距離,實現(xiàn)自動熄屏和亮屏的操作,模擬接打電話時手機的狀態(tài)。
1.制作主界面
制作如圖9-6所示的界面,作為程序啟動后的主界面MainActivity。主界面的代碼只涉及界面的跳轉(zhuǎn)。
2.實現(xiàn)距離感應(yīng)器的功能
制作距離傳感器的主界面ProximityActivity。距離傳感器的界面只需要一個簡單的說明即可,如圖9-7所示。圖9-6傳感器實例項目主界面圖9-7距離傳感器的主界面
在ProximityActivity中,按照9.4.3小節(jié)中安卓傳感器的簡單知識,設(shè)置此界面中的關(guān)鍵代碼,得到傳感器的對象并且取到傳感器的值(注:如果要重寫傳感器狀態(tài)改變方法onSensorChanged,必須讓其實現(xiàn)SensorEventListener接口)。
3.實現(xiàn)光線感應(yīng)器的功能
光線感應(yīng)器LightActivity的界面同樣只需要一個簡單的說明,如圖9-8所示。圖9-8光線感應(yīng)器主界面
4.實現(xiàn)重力感應(yīng)器的功能
制作重力感應(yīng)器的主界面,界面中需要放一個小球,如圖9-9所示。圖9-9重力感應(yīng)器主界面
9.5Android中的定位
9.5.1Android中定位方法介紹Android定位一般有四種方法,這四種方式分別是:GPS定位,wifi定位,基站定位,AGPS定位。
1.GPS定位需要GPS硬件支持,直接和衛(wèi)星交互來獲取當前經(jīng)緯度,這種方式需要手機支持GPS模塊(現(xiàn)在大部分的智能機應(yīng)該都有了)。
通過GPS方式準確度是最高的,但是它的缺點也非常明顯:①比較耗電;
②絕大部分用戶默認不開啟GPS模塊;
③從GPS模塊啟動到獲取第一次定位數(shù)據(jù),可能需要比較長的時間;
④室內(nèi)幾乎無法使用。這其中,缺點②、③都是比較致命的。
2.Android基站定位
Android基站定位只要明白了基站/wifi定位的原理,自己實現(xiàn)基站/wifi定位其實不難。基站定位一般有兩種,第一種是利用手機附近的三個基站進行三角定位,由于每個基站的位置是固定的,利用電磁波在這三個基站間中轉(zhuǎn)所需要時間來算出手機所在的坐標;第二種則是利用獲取最近基站的信息,其中包括基站id、locationareacode、mobilecountrycode、mobilenetworkcode和信號強度,將這些數(shù)據(jù)發(fā)送到Google的定位web服務(wù)里,就能拿到當前所在的位置信息,誤差一般在幾十米到幾百米之內(nèi),其中信號強度這個數(shù)據(jù)很重要。
3.Androidwifi定位
根據(jù)一個固定的wifiMAC地址,通過收集到的該wifi熱點的位置,然后訪問網(wǎng)絡(luò)上的定位服務(wù)以獲得經(jīng)緯度坐標。因為它和基站定位其實都需要使用網(wǎng)絡(luò),所以在Android中也統(tǒng)稱為Network方式。
4.AGPS定位
AGPS(AssistedGPS,輔助全球衛(wèi)星定位系統(tǒng))是結(jié)合GSM或GPRS與傳統(tǒng)衛(wèi)星定位,利用基地臺代送輔助衛(wèi)星信息,以縮減GPS芯片獲取衛(wèi)星信號的延遲時間,受遮蓋的室內(nèi)也能借基地臺訊號彌補,減輕GPS芯片對衛(wèi)星的依賴度。
9.5.2基站定位案例
創(chuàng)建如圖9-10所示的xml布局界面。圖9-10基站定位程序主界面
9.6Android的硬件操作
9.6.1Android中的wifi開發(fā)1.什么是wifiwifi就是一種無線聯(lián)網(wǎng)技術(shù),常見的是使用無線路由器,在這個無線路由器信號覆蓋的范圍內(nèi)都可以采用wifi連接的方式進行聯(lián)網(wǎng)。
2.安卓中wifi的操作方法
Android本身提供了一些有用的包,方便開發(fā)者對wifi模塊進行開發(fā)。在A.wifi包下面,主
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZSM 0049-2024“領(lǐng)跑者”評價技術(shù)要求 機織兒童服裝
- 二零二五年度高效節(jié)能大棚租賃及能源管理協(xié)議
- 二零二五年度個人環(huán)保項目貸款抵押擔保合同
- 二零二五年度汽車銷售區(qū)域代理退出協(xié)議
- 二零二五年度街道辦事處社區(qū)工作者績效激勵聘用合同
- 二零二五年度智能交通管理系統(tǒng)知識產(chǎn)權(quán)授權(quán)協(xié)議
- 2025年度車輛質(zhì)押融資服務(wù)協(xié)議
- 二零二五年度高新技術(shù)園區(qū)建設(shè)資金委托墊資合同
- 2025年度終止供貨協(xié)議函模板與合同終止后的利益平衡
- 企業(yè)采購管理流程改進調(diào)研報告
- 2025年湖南工業(yè)職業(yè)技術(shù)學院單招職業(yè)技能測試題庫審定版
- 人教版高一下英語單詞表
- 如何做好實習生帶教
- 2025年中國游戲行業(yè)市場深度分析及發(fā)展前景預(yù)測報告
- 專項訓練:電磁感應(yīng)中的電路、電荷量及圖像問題(10大題型)(原卷版)
- 汽車電腦故障解碼器項目可行性研究報告評審方案設(shè)計2025年發(fā)改委標準
- 安慰劑效應(yīng)在臨床應(yīng)用研究-深度研究
- 國家文化安全教育課件
- 2025年春新滬粵版物理八年級下冊課件 7.2 運動的快慢 速度
- 2025年人工智能技術(shù)研發(fā)與應(yīng)用合作協(xié)議9篇
- DG-T 110-2024 茶樹修剪機標準
評論
0/150
提交評論