久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

Android日常開發(fā)總結(jié)的技術(shù)經(jīng)驗(yàn)60條

時間:2019-05-13 17:43:29下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《Android日常開發(fā)總結(jié)的技術(shù)經(jīng)驗(yàn)60條》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《Android日常開發(fā)總結(jié)的技術(shù)經(jīng)驗(yàn)60條》。

第一篇:Android日常開發(fā)總結(jié)的技術(shù)經(jīng)驗(yàn)60條

Android日常開發(fā)總結(jié)的技術(shù)經(jīng)驗(yàn)60條

存在多個不同的dbhelper實(shí)例情況下,sqlitedatabase對象必然存在不同的實(shí)例,多線程同時寫入數(shù)據(jù),輪流寫入數(shù)據(jù)時會不定時的報(bào)db is locked,引起崩潰,不管是操作同張表還是異表。讀和寫可以同時并發(fā),輪流無規(guī)律的交替執(zhí)行。同時寫入數(shù)據(jù)時解決方案是用并發(fā)的每個線程都用事務(wù),db則不會lock,按次整體寫入。

作者:佚名來源:安卓開發(fā)精選|2017-01-10 19:06 收藏 分享

1.全部Activity可繼承自BaseActivity,便于統(tǒng)一風(fēng)格與處理公共事件,構(gòu)建對話框統(tǒng)一構(gòu)建器的建立,萬一需要整體變動,一處修改到處有效。

2.數(shù)據(jù)庫表段字段常量和SQL邏輯分離,更清晰,建議使用Lite系列框架LiteOrm庫,超級清晰且重心可以放在業(yè)務(wù)上不用關(guān)心數(shù)據(jù)庫細(xì)節(jié)。

3.全局變量放全局類中,模塊私有放自己的管理類中,讓常量清晰且集中.4.不要相信龐大的管理類的東西會帶來什么好處,可能是一場災(zāi)難,而要時刻注意單一職責(zé)原則,一個類專心做好一件事情更為清晰。

5.如果數(shù)據(jù)沒有必要加載,數(shù)據(jù)請務(wù)必延遲初始化,謹(jǐn)記為用戶節(jié)省內(nèi)存,總不會有壞處。

6.異常拋出,在合適的位置處理或者集中處理,不要搞的到處是catch,混亂且性能低,盡量不要在循環(huán)體中捕獲異常,以提升性能。7.地址引用鏈長時(3個以上指向)小心內(nèi)存泄漏,和警惕堆棧地址指向,典型的易發(fā)事件是:數(shù)據(jù)更新了,ListView視圖卻沒有刷新,這時Adapter很可能指向并的并不是你更新的數(shù)據(jù)容器地址(一般為List)。

8.信息同步:不管是數(shù)據(jù)庫還是網(wǎng)網(wǎng)絡(luò)操作,新插入的數(shù)據(jù)注意返回ID(如果沒有賦予唯一ID),否則相當(dāng)于沒有同步。

9.多線程操作數(shù)據(jù)庫時,db關(guān)閉了會報(bào)錯,也很可能出現(xiàn)互鎖的問題,推薦使用事務(wù),推薦使用自動化的LiteOrm庫操作。

10.做之前先考慮那些可以公用,資源,layout,類,做一個結(jié)構(gòu)、架構(gòu)分析以加快開發(fā),提升代碼可復(fù)用度。

11.有序隊(duì)列操作add、delete操作時注意保持排序,否則你會比較難堪喔。12.數(shù)據(jù)庫刪除數(shù)據(jù)時,要注意級聯(lián)操作避免出現(xiàn)永遠(yuǎn)刪不掉的臟數(shù)據(jù)喔。13.關(guān)于形參實(shí)參:調(diào)用函數(shù)時參數(shù)為基本類型傳的是值,即傳值;參數(shù)為對象傳遞的是引用,即傳址。

14.listview在數(shù)據(jù)未滿一屏?xí)r,setSelection函數(shù)不起作用;ListView批量操作時各子項(xiàng)和視圖正確對應(yīng),可見即所選。控制Activity的代碼量,保持主要邏輯清晰。其他類遵守SRP(單一職能),ISP(接口隔離)原則。

16.arraylist執(zhí)行remove時注意移除int和Integer的區(qū)別。你懂得。

17.Log請打上Tag,調(diào)試打印一定要做標(biāo)記,能定位打印位置,否則尷尬是:不知道是哪里在打印。

18.碼塊/常量/資源可以集中公用的一定共用,即使共用邏輯稍復(fù)雜一點(diǎn)也會值得,修改起來很輕松,修改一種,到處有效。

19.setSelection不起作用,嘗試smoothScrollToPosition。ListView的LastVisiblePosition(最后一個可見子項(xiàng))會隨著getView方法執(zhí)行位置不同變動而變。

20.與Activity通訊使用Handler更方便;如果你的框架回調(diào)鏈變長,考慮監(jiān)聽者模式簡化回調(diào)。

21.監(jiān)聽者模式不方便使用時,推薦EventBus框架庫,使用時間總線,沒接觸過的同學(xué)可以自行腦補(bǔ)一下哦。

22.Handler在子線程線程使用Looper.prepare,或者new的時候給構(gòu)造函數(shù)傳入MainLooper來確保在主線程run。23.timepicker 點(diǎn)擊確定后需要clearFocus才能獲取手動輸入的時間。

24.構(gòu)造函數(shù)里面極度不推薦啟動異步線程,會埋下隱患。比如:異步線程調(diào)用了本例的示例,就會悲劇等著崩潰吧。

25.千萬不要理所當(dāng)然的以為一個對象不會為空,充分的做好容錯處理;另外注意null也可以插入ArrayList等容器中。

26.ExpandableListView的子列表不能點(diǎn)擊(禁用)要把Adapter的isChildSelectable方法返回true。

27.UI顯示注意內(nèi)容過長的情形要提前使用ScrollView否則在小手機(jī)上尷尬你懂得。

28.注意按鈕的感應(yīng)范圍不小于9mm否則不易點(diǎn)擊;輸入框注意光標(biāo)的位置更易用戶輸入。

29.服務(wù)器和客戶端盡量統(tǒng)一唯一標(biāo)識(有可能是ID),否則多少會有歧義和問題。30.注釋,盡量去寫足夠的注釋,去描述一下思路,達(dá)到看了可以明白某一塊代碼的效果。

31.完整型數(shù)據(jù)一定要用Sqlite的Transaction,大數(shù)據(jù)一定要用。粗略測試插入100個數(shù)據(jù)有20倍的提速,插入1000個數(shù)據(jù)就有100多倍的提速。

32.避免String=”null”的情況出現(xiàn)String = null,=””都可以。避免出現(xiàn)title=”無主題”這樣的數(shù)據(jù)提交到數(shù)據(jù)庫浪費(fèi)空間。

33.存在多個不同的dbhelper實(shí)例情況下,sqlitedatabase對象必然存在不同的實(shí)例,多線程同時寫入數(shù)據(jù),輪流寫入數(shù)據(jù)時會不定時的報(bào)db is locked,引起崩潰,不管是操作同張表還是異表。讀和寫可以同時并發(fā),輪流無規(guī)律的交替執(zhí)行。同時寫入數(shù)據(jù)時解決方案是用并發(fā)的每個線程都用事務(wù),db則不會lock,按次整體寫入。

34.建議整個應(yīng)用維護(hù)一個dbhelper實(shí)例,只要db沒有關(guān)閉,全局就只有一個db實(shí)例,多線程并發(fā)寫入db不會lock,嚴(yán)格交替進(jìn)行寫入:123123123。。(123代表不同線程,輪流插入一個記錄),讀和寫均不會鎖住db,讀寫交替并沒有規(guī)律,執(zhí)行次數(shù)和程度看cpu分配給哪個線程的時間片長。

35.一個任務(wù)使用事務(wù)嵌套N個事務(wù),N個事務(wù)中有一個失敗,這個任務(wù)整體失敗,全部成功后,數(shù)據(jù)才寫入,具有安全性,整體性。并且事務(wù)寫入大批量數(shù)據(jù)的效率經(jīng)實(shí)際測試成百上千倍的高于一般的單個寫入。數(shù)據(jù)庫大量數(shù)據(jù)、多線程操作建議使用LiteOrm數(shù)據(jù)庫框架,更穩(wěn)定簡單。36.經(jīng)常需要用ListView或者其它顯示大量Items的控件實(shí)時跟蹤或者查看信息,并且希望最新的條目可以自動滾動到可視范圍內(nèi)。通過設(shè)置的控件transcriptMode屬性可以將Android平臺的控件(支持ScrollBar)自動滑動到最底部。37.Long a;判斷a有沒有賦值,if(a == 0)在a沒有賦值情況下會報(bào)錯。應(yīng)該if(a == null),Integer、Floag等也一樣,原因你懂,只是提醒你要小心喔。

38.編碼遇到讀寫、出入等邏輯要雙向考慮,文件導(dǎo)入導(dǎo)出,字符字節(jié)相互轉(zhuǎn)換都要兩邊轉(zhuǎn)碼。

39.一個 int 值與一個 Integer 對象(能包含 int 值的最小對象)的大小比率約為 1:4(32位和64位機(jī)器有不同)。額外的開銷源于 JVM 用于描述 Java 對象的元數(shù)據(jù)也就是 Integer,(Long、Double等也是)。

40.對象由元數(shù)據(jù)和數(shù)據(jù)組成。元數(shù)據(jù)包括類(指向類的指針,描述了類的類型),標(biāo)記(描述了對象狀態(tài),如散列碼、形狀等),鎖(對象同步信息)。數(shù)組對象還包括大小的元數(shù)據(jù)。

41.一個在 32 位 Java 運(yùn)行時中使用 1GB Java 堆的 Java 應(yīng)用程序在遷移到 64 位 Java 運(yùn)行時之后,通常需要使用 1.7GB 的 Java 堆。

42.Hash 集合的訪問性能比任何 List 的性能都要高,但每條目的成本也要更高。由于訪問性能方面的原因,如果您正在創(chuàng)建大集合(例如,用于實(shí)現(xiàn)緩存),那么最好使用基于 Hash 的集合,而不必考慮額外的開銷。

43.對于并不那么注重訪問性能的較小集合而言,List 則是合理的選擇。ArrayList 和 LinkedList 集合的性能大體相同,但其內(nèi)存占用完全不同:ArrayList 的每條目大小要比 LinkedList 小得多,但它不是準(zhǔn)確設(shè)置大小的。List 要使用的正確實(shí)現(xiàn)是 ArrayList 還是 LinkedList 取決于 List 長度的可預(yù)測性。如果長度未知,那么正確的選擇可能是 LinkedList,因?yàn)榧习目瞻卓臻g更少。如果大小已知或可預(yù)知或比較小,那么 ArrayList 的內(nèi)存開銷會更低一些。43.選擇正確的集合類型使你能夠在集合性能與內(nèi)存占用之間達(dá)到合理的平衡。除此之外,你可以通過正確調(diào)整集合大小來最大化填充率、最小化未得到利用的空間,從而最大限度地減少內(nèi)存占用。

44.充分利用封裝(提供接口類來控制訪問數(shù)據(jù))和委托(helper對象來實(shí)施任務(wù))兩種理念。45.延遲分配 Hashtable:如果 Hashtable 為空是經(jīng)常發(fā)生的普遍現(xiàn)象,那么僅在存在需要存儲的數(shù)據(jù)時分配 Hashtable 應(yīng)該是一種合理的做法。將 Hashtable 分配為準(zhǔn)確的大小:雖然會有默認(rèn)大小,但建議使用更為準(zhǔn)確的初始大小。46.EditText在setText時不要忘記是否需要setSelection。在大多數(shù)情況下是需要設(shè)置的。

47.XML兩種情況要注意:1 屬性名字時候有重復(fù);2 注意文本是否包含非法字符,注意使用CDATA包裹。

48.當(dāng)邏輯沒有明顯問題時考慮對象屬性、函數(shù)參數(shù)、網(wǎng)絡(luò)傳輸參數(shù)是否全部了解,是否設(shè)置正確。

49.當(dāng)出現(xiàn)編譯或者運(yùn)行時錯誤,別人那沒問題時,考慮你的編譯環(huán)境和環(huán)境版本是否有問題。

50.由于String類的immutable性質(zhì),當(dāng)String變量需要經(jīng)常變換其值時,應(yīng)該考慮使用StringBuilder提升性能,多線程使用StringBuffer操作string提高程序效率。

51.java 棧的優(yōu)勢是比堆速度快,可共享,主要存放臨時變量、參數(shù)等,堆的優(yōu)勢是可動態(tài)分配內(nèi)存大小。

52.只要是用new()來新建對象的,都會在堆中創(chuàng)建,而且其數(shù)據(jù)是單獨(dú)存值的,即使與棧中的數(shù)據(jù)(值)相同,也不會與棧中的數(shù)據(jù)共享。

53.基本數(shù)據(jù)類型定義的變量稱自動變量,存的是‘字面值’,存在于棧中,可共享(存在即不新建)。

54.多個RandomAccessFile對象指向同一個文件,可使用多個線程一起寫入無需再自己加鎖,經(jīng)試驗(yàn)結(jié)論:三個線程分別寫入100萬次數(shù)據(jù),使用鎖約12秒,不使用約8.5秒。100個線程分別寫入1萬次數(shù)據(jù)使用鎖耗時約4.2秒,不使用鎖耗時約3秒。

55.XmlPullParser解析慎用nextText()方法,xml比較復(fù)雜,含有空標(biāo)簽、重復(fù)名字標(biāo)簽時容易出現(xiàn)異常問題;TEXT中使用getText()方法代替START_TAG中使用nextText()方法;START_TAG,TEXT,END_TAG三個事件配合使用。注意每個xml節(jié)點(diǎn)之間(不管是開始節(jié)點(diǎn)還是結(jié)束節(jié)點(diǎn))都會出現(xiàn)TEXT事件。

56.改變邏輯的時候考慮全部用到這項(xiàng)功能的地方,分散的地方多了,容易大意。57.當(dāng)系統(tǒng)原生組件出現(xiàn)問題時,查看錯誤棧信息,自己寫一個該組件的子類,并在合適的地方將出錯方法復(fù)寫一下,加上try catch保證不崩潰掉。不要擾亂了該系統(tǒng)控件的正常邏輯。

58.輸入控件注意對空格、換行等符號的控制;輸入框里內(nèi)容注意和左右控件的空間,防止誤點(diǎn)擊。

59.注意函數(shù)參數(shù)里的++或者–操作。是++c 還是 c++,區(qū)別很大。

60.各種地方、永遠(yuǎn)的不要小看null指針問題,甚至有些場合寧可錯殺(try catch),不可放過。

【編輯推薦】

1.Android快速實(shí)現(xiàn)微信支付

2.Android嵌套滑動機(jī)制NestedScrolling 3.我的Android開發(fā)實(shí)戰(zhàn)經(jīng)驗(yàn)總結(jié)

4.用Jenkins自動化構(gòu)建Android和iOS應(yīng)用 5.Android輕松實(shí)現(xiàn)RecyclerView懸浮條

第二篇:Android高級開發(fā)技術(shù)教學(xué)大綱

《Android高級開發(fā)技術(shù)》課程教學(xué)大綱

課程名稱(中文):Android高級開發(fā)技術(shù)

課程名稱(英文):Advanced Android Development Technology 適用專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)、軟件工程、網(wǎng)絡(luò)工程 課程類別及課程模塊:學(xué)科專業(yè)課程/特色創(chuàng)新課程 課程編碼:11A023 學(xué)分/開課學(xué)期和周學(xué)時/學(xué)時類型/折算后總學(xué)時:

學(xué)分:

開課學(xué)期: 6

周學(xué)時:2+2 學(xué)時類型: 理論+實(shí)踐

折算后總學(xué)時:64 教材名稱及作者、出版社、出版時間、版次:《第一行代碼Android第2版》,郭霖,北京:人民郵電出版社, 2016 大綱主筆人:樊相奎 大綱審定人:李貴洋

一、課程的目的、要求和任務(wù)

近幾年移動終端的開發(fā)發(fā)展迅速,相關(guān)公司越來越多,隨著時間的推移,預(yù)計(jì)社會對移動終端開發(fā)領(lǐng)域人才的需求量也會迅速增多。據(jù)悉,在成都的軟件開發(fā)企業(yè)中,有多數(shù)企業(yè)都或多或少涉及移動終端開發(fā)領(lǐng)域。對于移動終端開發(fā)平臺,目前市場占有率最高,未來發(fā)展最有希望是iOS和Andriod開發(fā)平臺。其中Andriod由具有極度創(chuàng)新能力的Google公司開發(fā),同時Andriod采用開源方式,引入了大量合作開發(fā)伙伴,目前全世界有大量的公司采用Andriod作為移動終端開發(fā)平臺,包括三星、華為、小米等。

開設(shè)本課程的目的是使學(xué)生比較全面地了解和掌握移動終端設(shè)計(jì)的基本概念、原理及相關(guān)技術(shù),為以后的深入學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。具體要求和任務(wù)是掌握Andriod移動終端開發(fā)平臺的具體開發(fā)語言、開發(fā)工具、調(diào)試方法等相關(guān)技術(shù)。

二、大綱基本內(nèi)容及學(xué)時分配

(一)Android開發(fā)起步(2課時)1.2.3.4.5.Android平臺簡介、背景介紹和平臺架構(gòu) Android開發(fā)環(huán)境的搭建,相關(guān)軟件的下載與安裝 虛擬設(shè)備的創(chuàng)建和使用 創(chuàng)建“Hello Android” Android應(yīng)用程序的調(diào)試

說明:

(1)基本要求:介紹Android開發(fā)起步的相關(guān)知識,包括 Android平臺Android的背景及其應(yīng)用程序的框架,通過讓學(xué)生完成一個hello world app的開發(fā),體驗(yàn)一個android開發(fā)過程;

(2)教學(xué)重點(diǎn):Android平臺Android的背景及其應(yīng)用程序的框架,搭建Android的開發(fā)環(huán)境,使用開發(fā)平臺創(chuàng)建Android項(xiàng)目;(3)教學(xué)難點(diǎn):平臺架構(gòu),Android應(yīng)用程序的調(diào)試;

(二)Android應(yīng)用程序的構(gòu)成(4課時)

1.2.3.4.5.6.7.8.Android系統(tǒng)架構(gòu) Activity生命周期 Android界面的布局 服務(wù)—Service 三大組件間通信—Intent AndroidManifest.xml解析 共享數(shù)據(jù)—content Provider 通知用戶—Android Notification

9.Android應(yīng)用程序的生命周期

說明:

(1)基本要求:主要對Android的基本組件及Android應(yīng)用程序的構(gòu)成進(jìn)行介紹,同時還將對Android應(yīng)用程序的生命周期進(jìn)行分析,主要目的是讓讀者了解Android應(yīng)用程序的構(gòu)成,掌握Android基本組件的特性及使用方法。(2)教學(xué)重點(diǎn):了解Android應(yīng)用程序的構(gòu)成,掌握Android基本組件的特性及使用方法,Activity以及Intent的概念及使用;

(3)教學(xué)難點(diǎn):掌握應(yīng)用程序的生命周期以及具體使用場景;

(三)Android布局管理器(4課時)

1.2.3.4.5.6.控件類概述,View類簡介、ViewGroup類簡介

線性布局,LinearLayout類簡介、線性布局案例

表格布局,TableLayout類簡介、表格布局案例

相對布局,RelativeLayout類簡介、相對布局案例

幀布局,F(xiàn)rameLayout類簡介、幀布局案例

絕對布局,AbsoluteLayout類簡介、絕對布局案例

說明:

(1)基本要求:介紹的內(nèi)容為Android平臺下的布局管理器。Android中的布局包括線性布局、表格布局、相對布局、幀布局和絕對布局,分別對每個布局管理器進(jìn)行詳細(xì)的介紹。

(2)教學(xué)重點(diǎn):了解Android平臺下的布局管理器及使用方法;(3)教學(xué)難點(diǎn):布局管理器的嵌套使用,如何合理有效的使用嵌套布局;

(四)Android常用基本控件(2課時)

1.2.文本控件的介紹,TextView類簡介、EditText類簡介以及使用案例

按鈕控件,Button類簡介、ImageButton類簡介、Patch圖片簡介以及Patch圖片使用案例

3.4.狀態(tài)開關(guān)按鈕,ToggleButton類簡介以及開關(guān)按鈕的使用

單選按鈕與復(fù)選按鈕,CheckBox和RadioButton類簡介以及單選按鈕和復(fù)選按鈕使用案

5.6.圖片控件,ImageView類簡介以及圖片查看器

時鐘控件,AnalogClock和DigitalClock類簡介以及時鐘控件使用案例 7.日期與時間選擇控件,DatePicker類簡介、TimePicker類簡介以及日期時間控件使用案例

說明:

(1)基本要求:對進(jìn)行用戶界面開發(fā)時常用到的Android基本控件進(jìn)行介紹,主要包括文本框、按鈕、單選按鈕和復(fù)選按鈕、狀態(tài)開關(guān)按鈕和日期時間控件等,了解這些基本控件的工作方式有助于學(xué)習(xí)后面要介紹的Android中的高級控件。(2)教學(xué)重點(diǎn):掌握Android基本控件及使用方法;(3)教學(xué)難點(diǎn):不用布局文件,直接代碼生成控件;

(五)Android常用高級控件(4課時)

1.2.3.4.5.6.7.8.自動完成文本框,AutoCompleteTextView類簡介以及自動完成文本使用案例

下拉列表控件,Spinner類簡介以及下拉列表使用案例

列表視圖,ListView類簡介以及列表視圖使用案例

網(wǎng)格視圖,GridView類簡介以及網(wǎng)格視圖使用案例

畫廊控件,Gallery類簡介以及畫廊控件使用案例

滾動視圖,ScrollView類簡介以及滾動視圖使用案例

選項(xiàng)卡,TabHost類簡介以及選項(xiàng)卡使用案例

滑塊、進(jìn)度條與星級滑塊,ProgressBar、SeekBar、RatingBar類簡介以及使用案例

說明:

(1)基本要求;上一章已經(jīng)介紹了Android中的一些基本控件,本章對Android中常用的高級控件逐一進(jìn)行介紹。

(2)教學(xué)重點(diǎn):掌握Android常用高級控件及使用方法;(3)教學(xué)難點(diǎn):BaseAdapter適配器的概念以及使用;

(六)菜單與對話框(4課時)

1.菜單功能的開發(fā),包括選項(xiàng)菜單和子菜單簡介、選項(xiàng)菜單和子菜單使用案例、上下文菜單

2.對話框功能的開發(fā),包括對話框簡介、普通對話框、列表對話框、單選按鈕對話框、復(fù)選框?qū)υ捒颉⑷掌诩皶r間選擇對話框、進(jìn)度對話框

3.消息提示,Toast的使用,Notification的使用

說明:

(1)基本要求:介紹用戶界面中菜單與對話框的開發(fā),同時還會對Android平臺下的Toast和Notification進(jìn)行介紹。

(2)教學(xué)重點(diǎn):掌握Android常用菜單和對話框的概念和使用;(3)教學(xué)難點(diǎn):Notification的概念和使用;

(七)Android事件處理模型(2課時)

1.了解Android中的事件處理概念和模型;基于回調(diào)機(jī)制的事件處理,基于監(jiān)聽接口的事件處理。

2.掌握Android中的事件處理具體方法,包括OnClickListener、OnLongClickListener、OnFocusChangeListener、OnKeyListener、onTouchEvent、OnCheckedChange、OnItemSelected、日期和時間監(jiān)聽事件等;

3.說明:

(1)基本要求:對Android平臺用戶界面的各種事件響應(yīng)進(jìn)行詳細(xì)介紹,加深對Android平臺的事件處理模型的理解,熟練掌握控件的各種事件處理方法。

(2)教學(xué)重點(diǎn):掌握Android中的事件處理概念以及具體的常用事件及其處理方法;(3)教學(xué)難點(diǎn):理解基于回調(diào)機(jī)制和基于監(jiān)聽接口事件處理機(jī)理;

(八)消息廣播與服務(wù)(2課時)

1.2.BroadcastReceiver組件,BroadcastReceiver類簡介,基于廣播的案例

Service組件,Service類簡介,基于服務(wù)的案例

說明:(1)基本要求:在很多應(yīng)用程序中,都會通過廣播形式來發(fā)送和接收消息,當(dāng)應(yīng)用程序接收到消息后,一般啟動一個Activity或者一個Service進(jìn)行處理。本章對服務(wù)組件Service進(jìn)行詳細(xì)介紹,章末通過對一個單機(jī)版的音樂播放盒的介紹幫助掌握服務(wù)組件的使用方法。

(2)教學(xué)重點(diǎn):對Android的消息廣播機(jī)制及服務(wù)組件運(yùn)行機(jī)理和具體使用方法;(3)教學(xué)難點(diǎn):廣播Broadcast、服務(wù)Service的運(yùn)行機(jī)制和處理原理;

(九)多線程及消息處理(4課時)

1.2.3.4.Android多線程,概述、創(chuàng)建線程、操作線程 UI線程與非UI線程

多線程中的常用類,包括Handler類、AsyncTask類、Timer定時器等 Android多線程通信機(jī)制

說明:

(1)基本要求:了解線程的概念、生命周期,通過實(shí)例學(xué)習(xí),掌握多線程的創(chuàng)建、使用以及多種具體事項(xiàng)方式。

(2)教學(xué)重點(diǎn):對Android的多線程運(yùn)行機(jī)理和具體使用方法;(3)教學(xué)難點(diǎn):線程同步;

(十)數(shù)據(jù)處理(4課時)

1.掌握SharedPreferences的使用方法 2.3.4.5.6.掌握各種文件存儲的區(qū)別與適用情況 了解SQLite數(shù)據(jù)庫的特點(diǎn)和體系結(jié)構(gòu) 掌握SQLite數(shù)據(jù)庫的建立和操作方法 理解ContentProvider的用途和原理(選講)掌握ContentProvider的創(chuàng)建與使用方法(選講)

說明:

(1)基本要求:本章要介紹訪問手機(jī)存儲卡的方法及如何在程序中使用SQLite數(shù)據(jù)庫。(2)教學(xué)重點(diǎn):掌握Android數(shù)據(jù)存儲的相關(guān)機(jī)制和具體使用方法;(3)教學(xué)難點(diǎn):SQLite數(shù)據(jù)庫的具體使用;

授課內(nèi)容及學(xué)時說明:前述大綱章節(jié)及學(xué)時分配是本門課程指導(dǎo)性意見,針對不同專業(yè)學(xué)生以及具體授課情況,授課教師對具體章節(jié)的內(nèi)容及學(xué)時可進(jìn)行適當(dāng)調(diào)整,但主要章節(jié)知識點(diǎn)(除可選部分)需要覆蓋到。

三、與其他課程的關(guān)系

1.先行課程:數(shù)據(jù)庫原理、Java 2.后續(xù)課程:無

四、考核方式

考核形式:考查

評分標(biāo)準(zhǔn):平時成績占30%(主要考察課堂與上機(jī)考勤、實(shí)驗(yàn)等方面),兩次階段性上機(jī)考試占40%,期末作品占30%。

五、參考書目

1.明日科技編著,《Android從入門到精通》,北京:清華大學(xué)出版社, 2016 2.李剛編著,《瘋狂Android講義(第3版)》,北京:電子工業(yè)出版社, 2015 3.(美)Erich Gamma等著,《設(shè)計(jì)模式》,北京:機(jī)械工業(yè)出版社,2013

第三篇:Android項(xiàng)目開發(fā)總結(jié)

項(xiàng)目開發(fā)總結(jié)報(bào)告

1引言

1.1編寫目的

總結(jié)開發(fā)經(jīng)驗(yàn)與學(xué)習(xí)中的不足

1.2背景

以方便用戶記錄日常學(xué)習(xí)心得,生活體會為目的,進(jìn)行主題為“隨心筆記”的應(yīng)用開發(fā)

2實(shí)際開發(fā)結(jié)果

2.1產(chǎn)品

2.2主要功能和性能

能夠查看筆記的目錄,記錄筆記完成時間。能夠改變主題顏色,目錄排版方式,擁有簡潔的主題。對于涂鴉功能,插入圖片,密碼鎖等功能未能實(shí)現(xiàn)。

3開發(fā)工作評價

3.1對產(chǎn)品質(zhì)量的評價

本應(yīng)用擁有簡單實(shí)用的功能,能夠滿足一般用戶的需要

3.3對技術(shù)方法的評價

開發(fā)中使用了軟件工程中的增量開發(fā)模型,黑盒測試等技術(shù),使開發(fā)逐步向前發(fā)展

3.4出錯原因的分析

對于部分Android版本支持性不好,不能正常使用安裝等

4經(jīng)驗(yàn)與教訓(xùn)

通過這次開發(fā),我們體驗(yàn)了開發(fā)不易,需要很多人員的合作。開發(fā)過程中,必須明確整體目標(biāo),不能東一榔頭,西一棒槌。另外由于學(xué)習(xí)時間短,對很多東西都不太了解,還好通過CSDN等一些網(wǎng)站能夠找到有益的幫助,感謝那些博客,論壇。

第四篇:Android編程開發(fā)入門學(xué)習(xí)經(jīng)驗(yàn)

Android編程開發(fā)入門學(xué)習(xí)經(jīng)驗(yàn)

首先說一下,之所以選擇android培訓(xùn),主要有下面幾個原因:因?yàn)槲也皇怯?jì)算機(jī)專業(yè),一些計(jì)算機(jī)語言高級的計(jì)算機(jī)語言也沒學(xué)過,只學(xué)過c語言,本身想自學(xué),但自學(xué)覺得效率太低,自己沒有系統(tǒng)的學(xué)習(xí)方法,考慮到報(bào)班學(xué)習(xí),有個老師帶著,這樣效果會好很多,因此決定上個編程培訓(xùn)班學(xué)習(xí)。

在看了好多家Android編程開發(fā)培訓(xùn)機(jī)構(gòu)的官方介紹后,也在論壇上搜索了一些評價,之后和咨詢老師進(jìn)行了一些溝通,同時我還打聽到了一些之前畢業(yè)學(xué)員的一些就業(yè)情況。相比同行業(yè)的其他培訓(xùn)機(jī)構(gòu),各方面的反饋都還不錯,所以我選擇了千鋒android培訓(xùn)。四個月android學(xué)習(xí)過去了,老師給我的印象是非常負(fù)責(zé),在課堂上,他們會一一為同學(xué)答疑解惑,甚至當(dāng)看到你帶有疑惑的眼神,他們也會問下你有沒有不懂的地方, 這一點(diǎn)我很感動。這里的課程安排的很合理,從基礎(chǔ)的java,以及培養(yǎng)面向?qū)ο蟮囊恍┘?xì)節(jié),白天老師講課,晚上自習(xí)有老師輔導(dǎo),一直到Android編程開發(fā)最后的大項(xiàng)目,課程都安排的很有層次,深入淺出。

在學(xué)習(xí)android編程的這段時間里,我學(xué)到很多之前沒有接觸到的知識,過得挺充實(shí)的。這里的授課老師講課方式各有特色,但是課后對于我們來說都很親切。劉老師講話風(fēng)趣幽默,讓我們在輕松環(huán)境中掌握java語言基礎(chǔ),課程中,老師更加注重我們對于代碼的積累,并強(qiáng)調(diào)實(shí)用性,讓我們自己在項(xiàng)目中理解,很多老師都知識面很廣,親和力又強(qiáng),讓我們能夠在輕松地氛圍中更好地融會貫通所學(xué)android編程知識。

最后,我想對已經(jīng)或即將在培訓(xùn)中學(xué)習(xí)android編程的學(xué)弟學(xué)妹們說幾句,選擇一家好的android編程培訓(xùn)機(jī)構(gòu)固然很重要,但是最終還是得靠自己的努力,如果自己不努力,誰都幫不了你,如果,你選擇了像我選擇的這種一流的機(jī)構(gòu),那剩下的就好好努力吧。如果當(dāng)你堅(jiān)持不下去的時候,那就想想你的夢想,你的家人,你今天的努力,不僅僅是為了你自己。相信自己,你一定能成功。

第五篇:Android開發(fā)基本知識總結(jié)-Android課件

Android開發(fā)基礎(chǔ)教程

2015-4-13周一2CJ02 目錄

1.什么是Android? 2.Android應(yīng)用開發(fā)環(huán)境 3.Gradle 4.模擬器Emulator 5.開發(fā)一個安卓應(yīng)用程序的步驟 6.關(guān)于多個模擬器的問題 7.安卓工程文件的結(jié)構(gòu) 8.android界面文件---xml文件 9.android程序文件---java文件 10.界面布局方式 11.幾個常用組件 12.Roast組件 13.對話框AlertDialog 14.幾條重要的語句 15.監(jiān)聽器Listener 16.識別響應(yīng)事件的組件 17.界面切換

18.界面之間的數(shù)據(jù)傳遞 19.Activity生命周期 20.多媒體播放

21.日志文件在程序調(diào)試中的使用 22.使用XML文件保存數(shù)據(jù)

23.使用TXT文件保存數(shù)據(jù) 24.使用數(shù)據(jù)庫保存數(shù)據(jù) 25.時間組件 26.線程Thread 27.視頻播放VideoView 28.MediaPlayer,SurfaceView和SurfaceHolder播放視頻 29.錄制音頻MediaRecorder 30.菜單組件

1.什么是Android? 移動設(shè)備(常常指手機(jī)mobile)的操作系統(tǒng),由google公司出品,是免費(fèi)的, 最早是基于Linux平臺的;目前已經(jīng)推出的Android3.0是平板電腦上的操作系統(tǒng)。

其它的手機(jī)操作系統(tǒng)有:iPhone系統(tǒng)等。

手機(jī)廠商:三星(Samsung,宏達(dá)電(HTC),摩托羅拉(Motorola),華碩,索尼,Garmin等都支持iPhone系統(tǒng)。

Android系統(tǒng)功能:自定義用戶界面,支持藍(lán)牙,多點(diǎn)觸摸,具有導(dǎo)航功能和語音識別功能,結(jié)合了google地圖。

Android軟件開發(fā)工具SDK

4.0。

Android系統(tǒng)特點(diǎn):虛擬鍵盤,以WebKit為核心的WebView組件,可以使用HTML, javascript等。

2.Android應(yīng)用開發(fā)環(huán)境 Eclipse+ADT+Android SDK。ADT---Android開發(fā)工具插件(Android Plugs for Eclipse).開發(fā)環(huán)境安裝注意事項(xiàng):關(guān)閉防毒軟件,按順序安裝,保持網(wǎng)絡(luò)暢通,比較耗時。特別說明,安裝和運(yùn)行需要高配置機(jī)器和高速網(wǎng)絡(luò),比較費(fèi)時。

(1)安裝Java

JDK。甲骨文

網(wǎng)站: http://www.tmdps.cn ”);Intent in = new Intent(Intent.ACTIN_VIEW, uri);startActivity(in);(2)調(diào)用系統(tǒng)撥號界面

Uri uri = Uri.parse(“tel:*** ”);Intent in = new Intent(Intent.ACTIN_DIAL, uri);startActivity(in);(3)調(diào)用系統(tǒng)撥號功能

Uri uri = Uri.parse(“tel:*** ”);Intent in = new Intent(Intent.ACTIN_CALL, uri);startActivity(in);注意:需要在AndroidManifest.xml文件中進(jìn)行設(shè)置,才可以自動撥號: 18.界面之間的數(shù)據(jù)傳遞 1.方法1:調(diào)用無返回參數(shù) 在第一個界面中: Bundle bundle

= new Bundle();bndle.pushString(“name”, “David”);bndle.pushInt(“age”, 22);//pushChar, putShort,put Boolean, pushChar等等

Uri uri = Uri.parse(“http://www.tmdps.cn ”);Intent in = new Intent(Intent.ACTIN_VIEW, uri);in.putExtras(bundle);startActivity(in);在第二個界面中: Intent in = this.get Intent();Bundle bundle

= in.getExtras();String studentName = bundle.getInt();//getDouble, 2.方法2:調(diào)用有返回參數(shù) 例1,在第一個界面中: private static final int ACTIVITY_EDIT = 1;Bundle bundle = new Bundle();bundle.pushString(“name”, “David”);Intent in = new Intent();

getShort, getIntArray等 in.putExtras(bundle);in.setClass(FullscreenActivity.this, SecondActivity.class);startActivityForResult(in, ACTIVITY_EDIT);注意:startActivityForResult后所有語句無效,不執(zhí)行;在第一個界面中,第二個界面可以在不同位置被多次調(diào)用;在第一個界面中,在其它位置可以調(diào)用其它界面。

在第一個界面中,重寫onActivityResult,接收所有被調(diào)用界面返回的參數(shù)(如果有):@Override protected void onActivityResult(int

requestCode,int resultCode,Intent

data){ super.onActivityResult(requestCode, resultCode, data);if(requestCode== ACTIVITY_EDIT)

//此參數(shù)可以區(qū)分不同的調(diào)用

{

Bundle bundle = data.getExtras();if(resultCode == RESULT_OK)

//此參數(shù)可以判斷有無返回參數(shù)

{

Bundle bundle = data.getExtras();……

} if

(resultCode == RESULT_CANCELED)

{ } }

…… } ……

問題

:如何判斷被調(diào)用界面是否傳遞返回參數(shù)?如何區(qū)分返回參數(shù)是由不同的被調(diào)用界面?zhèn)鬟f的?android的這種解決方法并不是完美的。例2,在第二個界面中:

讀取第一個界面?zhèn)鬟f的參數(shù),省略;下面是向調(diào)用程序傳遞返回參數(shù): Bundle bundle

= new Bundle();bndle.pushString(“name”, “賀昌峰373780592”);Intent

setResult(RESULT_CANCELED);//傳遞參數(shù)返回

// 或setResult(RESULT_OK, in);//不傳遞參數(shù)返回 finish();注意:這時,第二個界面返回到第一個界面,可以不傳遞參數(shù)直接返回(RESULT_CANCELED),in = new Intent();

in.putExtras(bundle);也可以傳遞參數(shù)返回(RESULT_OK)。19.Activity生命周期

onCreate

---onStart

---onResume

---onPause---onStop

---onDestroy 也就是說,有: protected void oncreate(…){ ….} protected void onStart(…){ ….} protected void onResume(…){ ….} protected void onPause(…){

….} protected void onStop(…){ ….} protected

void onDestroy(…){ ….} 20.多媒體播放MediaPlayer public MediaPlayer player = new MediaPlayer();//生成語句可省略 try{ player.reset();

//重新播放音樂

player.setDataSource(“/sdcard/music/music_file_name.mp3”);

// player = MediaPlayer.create(getApplicationContext(), R.raw.music);

// 打開音樂文件

//music為音樂資源文件

player.prepare();player.start();

// player.isPlaying()

//準(zhǔn)備播放 //播放音樂

//判斷是否正在播放

//音樂播放完成觸發(fā)事件

player.setOnCompletionListener(new OnCompletionListener){ public void onCompletion(){ //音樂播放完成后,處理代碼 } }

player.pause();player.start();player.stop();

} catch(IllegalStateException e){ ……} catch(IOException e){ ……}

//播放暫停 //繼續(xù)播放音樂 //停止播放音樂 player.release();

//釋放存儲空間

//注意:可以播放存儲卡上任意一個音樂文件;也可以播放資源列表中的音樂文件 21.日志文件在程序調(diào)試中的使用

import android.util.Log;對應(yīng)的方法有:debug,verbose,info,warn,error。注意,使用簡寫。問題:如何查看系統(tǒng)日志文件?

Log.d(“這里是分類標(biāo)簽”, “這里是輸出信息”);22.使用XML文件保存數(shù)據(jù)

對XML文件進(jìn)行操作,形式為(key,value)。SharedPreferences

sp = get SharedPreferences(文件名,權(quán)限);

權(quán)限:MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE 例:

//1打開XML文件 SharedPreferences

//2更改數(shù)據(jù)

Editor editor = sp.eidt();

//更改數(shù)據(jù)

sp = get SharedPreferences(“myconfig”,MODE_PRIVATE);

editor.putString(“name”, “賀昌峰373780592”);editor.putInt(“age”, 48);editor.putFloat(“salary”, 2048.5);//putLong,putBoolean等;

editor.commit();

//保存數(shù)據(jù)

//3讀取數(shù)據(jù)

String myname = sp.getString(“name”, “”);

//4刪除數(shù)據(jù)

editor.remove(“name”);//刪除數(shù)據(jù) editor.commit();

editor.clear();//刪除全部數(shù)據(jù) editor.commit();

//5簡寫形式如下: Editor editor = sp.eidt()

//更改數(shù)據(jù)

//讀取數(shù)據(jù)

.putString(“name”,.commit();

“賀昌峰”)23.使用TXT文件保存數(shù)據(jù) FileOutPutStream

fout = openFileOutput(文件名, 文件權(quán)限);文件權(quán)限: MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE

1.在文件中寫入數(shù)據(jù)

try { //打開TXT文件 FileOutPutStream

BufferedOutputStream

String

//向文件中寫入數(shù)據(jù)

bufferoutput.write(s.getBytes());s = “大家跟我學(xué)習(xí)android”;

bufferoutput = new BufferedOutputStream(fout);fout = openFileOutput(“myconfig.txt”, MODE_PRIVATE);

//關(guān)閉文件 bufferoutput.close();fout.close();} Catch(Exception e){

2.從文件中讀取數(shù)據(jù)

try { FileInputStream

BufferedInputStream

byte[] bufferbytes = new byte[20];int flag = bufferoutput.read(bufferbytes);if(flag==-1){ //文件讀取到文件末尾,否則可以繼續(xù)讀出

}

//僅讀取長度為20個字節(jié)的數(shù)據(jù)

bufferoutput = new BufferedInputStream(fout);

fout = openFileInput(“myconfig.txt”);

//打開文件

e.printStackTrace();} bufferoutput.close();fout.close();} Catch(Exception e){

24.使用數(shù)據(jù)庫保存數(shù)據(jù) 1.數(shù)據(jù)庫相關(guān)類

//關(guān)閉緩沖區(qū) //關(guān)閉文件

e.printStackTrace();} import android.content.ContentValues;import android.content.Context;import android.database.Coursor;import android.database.SQLException;import android.database.sqlite.SQLiteDatabase;

2.SQLiteDataBase類

注意:數(shù)據(jù)庫操作時,要求捕獲異常,此處省略。

SQLiteDataBase db = openOrCreateDatabase(“databasename.db”, MODE_PRIVATE);//說明:數(shù)據(jù)庫權(quán)限同文件權(quán)限

// Context就是this指針 db.execSQL(sql_exp): 執(zhí)行SQL語句

Cursor cs = db.rawQuery(select_exp, null): 返回?cái)?shù)據(jù)集。Cursor cs1 = db.query(arg0, ……): 使用較繁瑣,可用rawQuery替換。

db.insert(arg0, ……): 使用較繁瑣,可用rawQuery替換。db.delete(arg0, ……): 使用較繁瑣,可用rawQuery替換。db.update(arg0, ……):

使用較繁瑣,可用rawQuery替換

db.close(): 一般寫在onDestroy事件中。3.Cursor類 方法有:

move, moveToPosition, moveToFirst, moveToLast,moveToNext, getCount(), getInt(),getString(),isNull(), isFirst()等等。

4.ContentValues類

一般用在SQLiteDataBase.insert中, 此處省略。

ContentValues content

= new ContentValues();

content.put(“name”, “賀昌峰”);

moveToPrevious, content.put(“age”, 48);5.SimpleCursorAdapter類

SimpleCursorAdapter是界面組件如ListView和Cursor的橋梁。例, 在ListView組件listview1中,顯示數(shù)據(jù)集(有綁定功能嗎?):

Cursor cs = db.rawQuery(“select SimpleCursorAdapter

adapter

* from table”, null);

= new SimpleCursorAdapter(this,android.R.layout.simple_list_item_2, new String[]{“id”, “name”}, new int[]{ android.R.id.text1, android.R.id.text2});// 注意:第2個參數(shù)的作用

listview1.setAdapter(cs);

//在ListView組件顯示數(shù)據(jù)集

25.時間組件

1.常用組件AnalogClock,DigitClock 用法比較簡單,無需過多設(shè)置,僅僅顯示當(dāng)前時間:機(jī)械式,數(shù)字式

2.計(jì)時組件:Chronometer 常用方法:start開始計(jì)時, stop停止計(jì)時, setBase設(shè)置時間 setFormat(“秒表:%s”):設(shè)置組件時間顯示格式。

附:與時間格式有關(guān)的函數(shù) SimpleDateFormat String

sformat = new SimpleDateFormats(“hh:mm:ss”);

//得得當(dāng)前時間 s = sformat.format(new Date());

例,Chronometer對象是chroTime: chroTime.setOnChronometerTickListeter(chrolisteten);

private Chronometer.onChronometerTickListeter Chronometer.onChronometerTickListeter(){ @Override public

void OnChronometerTickListeter(Chronometer chronomoter){ //每秒執(zhí)行一次該方法 } }

3.計(jì)時組件Timer和TimerTask

chrolisteten = new 常用函數(shù):schedule(TimerTask對象, Timer對象延遲時間, TimerTask對象間隔時間);

TimerTask對象用法: private TimerTask { public void run(){ //按設(shè)定間隔調(diào)用執(zhí)行 handle.sendMessage(msg);//特別注意:此處不能對界面進(jìn)行更新,因?yàn)橛绊懹?jì)時精度,所有需要使用Handle配合。見下。} }

4.Handle和Message的配合使用 Handle handle { public void handleMessage(){ super.handleMessage();//進(jìn)行其它處理 }

= new Handle()

timetask = new TimerTask()} Message

msg.what = “******”;handle.sendMessage(msg);

26.線程Thread

1.Thread的定義

public class ClockThread extends Thread{ @Override public void run(){ //進(jìn)行其它處理

//注意:不會自動重復(fù)執(zhí)行多次的 } } 2.Thread的啟動、延時啟動、停止 使用Handle對線程進(jìn)行控制: msg = new Message();Handle handle = new Handle();

ClockThread clock = new ClockThread();

handle.post(clock);

//啟動線程 5000);

//延時5000ms啟動線程 //停止線程 handle.postDelayed(clock, handle.removeCallbacks(clock);

問題:使用Handle有什么優(yōu)點(diǎn)? 27.視頻播放VideoView 支持的文件格式:H.264的mp4, wmv, 3gp等。1.視頻播放

private VideoView

videoview.setVideoPath(“/sdcard/robot.mp4”);//增加控制面板

videoview.setMediaController(new MediaController(getApplicationContext()));

videoview

= new VideoView();videoview.start();//開始播放

2.視頻準(zhǔn)備播放事件

videoview.setOnPreparedListener(videoPreparedListener);videoview.setOnCompletionListener(videoCompletionListener);

private MediaPlayer.onPreparedListener videoPreparedListener = new MediaPlayer.onPreparedListener(){ @Override public

void onPrepared(MediaPlayer

mp){ //視頻準(zhǔn)備播放 } }

3.視頻播放完成事件

private MediaPlayer.onCompletionListener videoCompletionListener = MediaPlayer.onCompletionListener(){ @Override public

void onCompletion(MediaPlayer

mp){

new //視頻播放完成 } }

28.MediaPlayer,SurfaceView和SurfaceHolder播放視頻

MediaPlayer也可以播放視頻,需要SurfaceView和SurfaceHolder配合,其中SurfaceView為可視化組件可以播放視頻,SurfaceHolder為橋梁。

private SurfaceView surfview = new SurfaceView();//此組件可視化設(shè)計(jì),無需這里聲明 private MediaPlayer

surfholder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);mediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC);mediaplayer.setDisplay(surfholder);

mediaplayer.setDataSource(“/sdcard/vedio.mp4”);mediaplayer.reset();

//打開視頻文件

mediaplayer = new MediaPlayer();

= surfview.getHolder();private SurfaceHolder surfholder

//重新播放視頻 mediaplayer.prepare();mediaplayer.start();mediaplayer.stop();mediaplayer.release();

//準(zhǔn)備播放視頻 //播放視頻

29.錄制音頻MediaRecorder MediaRecorder

mediaRecorder.SetAudioSource(MediaRecorder.AudioSource.MIC);mediaRecorder.SetAudioEncode(MediaRecorder.AudioEncode.DEFAULT);mediaRecorder.SetOutputFormat(MediaRecorder.OutputFormat.DEFAULT);mediaRecorder.SetOutputFile(“/sdcard/recorder.amr”);mediaRecorder.prepare();mediaRecorder.start();

注意:要有寫入SD卡的權(quán)限,在AndroidManifest.xml文件中:

//準(zhǔn)備錄音 //開始錄音

mediaRecorder = new MediaRecorder(); :

1.附1:ImageView.setAlpha(50)的含義?設(shè)置透明色 2.附2:遍歷目錄下所有文件: private File pathfile;pathfile = Environment.getExternalStorageDirectory();

//疑問:pathfile + ”/myfilename.txt” 這個用法正確嗎? for(File file: pathfile.listFiles()){ if {(file.getName().toLowerCase().endsWith(“.amr”))……

// File.getAbsolutePath(), File.getName()的區(qū)別 } } 30.菜單組件 //添加系統(tǒng)菜單 protected protected static final int MENU_ABOUT

= Menu.FIRST;static final int MENU_QUIT = Menu.FIRST + 1;

//得到SD卡路經(jīng) protected

@Override static final int MENU_EDIT = Menu.FIRST + 2;public boolean onCreateOptionsMenu(Menu menu){ menu.add(0,MENU_ABOUT,0,“關(guān)于本軟件...”).setShortcut('0','A');

menu.add(0,MENU_QUIT,1,“結(jié)束”).setShortcut('1','E');

menu.add(0,MENU_EDIT,2,“編輯”).setShortcut('2','D');

menu.add(0,MENU_FILE,3,“文件”).setShortcut('3','F');

return super.onCreateOptionsMenu(menu);} //添加菜單響應(yīng)事件 @Override public boolean onOptionsItemSelected(MenuItem switch(item.getItemId()){ case MENU_ABOUT: // 響應(yīng)處理 break;case MENU_QUIT: // 響應(yīng)處理 break;}

return super.onOptionsItemSelected(item);}

//添加快捷菜單 protected static final int MENU_BACKCOLOR protected static final int MENU_SMALLSIZE =

item){

= Menu.FIRST;

Menu.FIRST + 1;//定義快捷菜單組件 private LinearLayout private TextView

layout;

txtview1,txtview2;在onCreate中, 增加以下語句: layout =(LinearLayout)findViewById(R.id.layout);txtview1 =(TextView)findViewById(R.id.txtview1);txtview2 =(TextView)findViewById(R.id.txtview2);registerForContextMenu(txtview1);registerForContextMenu(txtview2);

在java文件類中, 增加以下語句: @Override public boolean onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){ //注意:父類函數(shù)先調(diào)用,或最后調(diào)用? super.onCreateOptionsMenu(menu, v, menuInfo);

if(v == txtview1)menu.add(0, MENU_BACKCOLOR,0,“設(shè)置背景顏色”); if(v == txtview2)menu.add(0, MENU_SMALLSIZE,1,“較小字體”);

}

//添加菜單響應(yīng)事件 @Override public boolean onContextItemSelected(MenuItem switch(item.getItemId()){ case MENU_BACKCOLOR: // 響應(yīng)處理

layout.setBackgroundColor(Color.BLUE);break;case MENU_SMALLSIZE: // 響應(yīng)處理

txtview2.setTextSize(12);break;}

return super.onContextItemSelected(item);}

item){

下載Android日常開發(fā)總結(jié)的技術(shù)經(jīng)驗(yàn)60條word格式文檔
下載Android日常開發(fā)總結(jié)的技術(shù)經(jīng)驗(yàn)60條.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點(diǎn)此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    Qualcomm平臺android開發(fā)總結(jié)

    1、 高通平臺android開發(fā)總結(jié). 7 1.1 搭建高通平臺環(huán)境開發(fā)環(huán)境. 7 1.2 搭建高通平臺環(huán)境開發(fā)環(huán)境. 7 1.2.1 高通android智能平臺概述. 7 1.2.1.1 什么是L4,REX,BREW,AMSS以......

    Android開發(fā)優(yōu)勢總結(jié)(推薦五篇)

    Android開發(fā)優(yōu)勢總結(jié) 來源:扣丁學(xué)堂 目前市場上的移動端有兩種形式,一種是Android開發(fā),另一種是ios開發(fā),其中Android開發(fā)方面的人員要多一些,今天我們就一起來看一下扣丁學(xué)堂Andr......

    android開發(fā)實(shí)習(xí)報(bào)告總結(jié)

    Android開發(fā)實(shí)習(xí)總結(jié) 有一名話叫做:不經(jīng)過風(fēng)雨,怎么見彩虹?我想改一下:不真正進(jìn)入社會,怎能了解社會呢? 在這次實(shí)習(xí)中,給我收獲最大的是我覺得很多工作需要我去摸索和探討,要不怕吃......

    Android開發(fā)Info類總結(jié)

    Android開發(fā)Info類總結(jié)首先我們來看一下PackageItemInfo,它是包含了一些信息的基類,它的直接子類有:ApplicationInfo、ComponentInfo、InstrumentationInfo、PermissionGroupI......

    Android應(yīng)用程序開發(fā)-個人總結(jié)(最終定稿)

    《Android應(yīng)用開發(fā)》個人總結(jié)報(bào)告 一、 項(xiàng)目簡介: 送祝福App是一款逢年過節(jié)為方便發(fā)送祝福信息的軟件,并且介紹各種節(jié)日的相關(guān)情況。包含節(jié)日祝福短信,支持直接發(fā)送短信給好友......

    android 開發(fā)心得

    即 使你的應(yīng)用程序是快速且響應(yīng)靈敏的,但一些設(shè)計(jì)仍然會給用戶造成問題——與其它應(yīng)用程序或?qū)υ捒蛭词孪扔?jì)劃的交互,意外的數(shù)據(jù)丟失,意料之外的阻塞等等。 避免這些問題,有助于......

    Android技術(shù)總結(jié)2(5篇)

    立成軟件文檔制度規(guī)范 //adt Installer http://apps.hi.baidu.com/share/detail/42194887 //Source Code 滑動 http://gekie.iteye.com/blog/1104426 //Source Code 集合......

    android教程JNI開發(fā)疑點(diǎn)總結(jié)

    android教程JNI開發(fā)疑點(diǎn)總結(jié) 很多Android新手對于JNI開發(fā)過程中的疑問不是很清楚,根據(jù)android123@163.com郵箱中反饋的內(nèi)容我們整理如下: 1. JNI中,什么情況才處理jstring、ji......

主站蜘蛛池模板: 99re热视频这里只精品| 亚洲色播永久网址大全| 美女扒开尿口让男人桶| av制服丝袜白丝国产网站| 大肉大捧一进一出好爽视频动漫| 在线播放国产不卡免费视频| 亚洲a片无码一区二区蜜桃| 亚洲欧美自拍偷一区二区| 亚洲精品v日韩精品| 少妇av一区二区三区无码| 又黄又爽又高潮免费毛片| 美女扒开内裤让男生桶| 狠狠久久噜噜熟女| 99久久精品无码一区二区毛片| 丰满爆乳无码一区二区三区| 亚洲乱码1卡2卡3乱码在线芒果| 色偷偷av男人的天堂京东热| 性动态图av无码专区| av亚洲产国偷v产偷v自拍| 中国精品无码免费专区午夜| 成人午夜福利视频后入| 无码中文字幕人妻在线一区二区三区| 亚洲精品二区国产综合野狼| 中文无码热在线视频| 最新国产毛2卡3卡4卡| 日韩少妇内射免费播放18禁裸乳| 日本一区二区三区爆乳| 99久久无色码中文字幕人妻| 综合激情亚洲丁香社区| 国产sm调教视频在线观看| 2020国产精品午夜福利在线观看| 中文字幕一精品亚洲无线一区| 欧美韩中文精品有码视频在线| 国产免费又爽又色又粗视频| 国产网红女主播精品视频| 国产精品乱码一区二区三区| 熟妇人妻va精品中文字幕| 久久se精品一区精品二区| 久久日本片精品aaaaa国产| 伊人久久综合色| 色综合视频一区中文字幕|