付費下載
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、AndroidLauncher開發(fā)教程本文來自:Launcher這個類乍一看,好多函數好多變量好像很復雜,不急,這需要慢慢的梳理。從最上面的onCreate函數開始看起:在這里為了調用framework那層中自己添加的一個類,所以使用了反射技術。代碼Methodmethod=null;Classmyclass=null;myclass=Class.forName("android.appwidget.SPAppWidgetHost");/查找指定類名的類ClassparamtersList=Context.class,Integer.TYPE;/構造函數參數列表java.l
2、ang.reflect.Constructorconstructor=myclass.getConstructor(paramtersList);/根據參數列表獲得構造函數Object口arg=newObjectthis,Integer.valueOf(APPWIDGET_HOST_ID);/為構造函數寫好參數mObject=constructor.newInstance(arg);/調用構造函數獲得類實例mAppWidgetHost=(AppWidgetHost)mObject;/基類轉換if(myclass!=null)DBLog.d(TAG,"android.appwidget
3、.SPAppWidgetHostfound");method=myclass.getDeclaredMethod("startListening",null);/根據函數名獲得函數實例method.invoke(mObject,null);/調用函數上述技術主要是為了監(jiān)聽Widget狀態(tài)變化,用于更新Widget狀態(tài)技術點如何設置屏幕虛擬尺寸?1、通過getSystemService獲得wallpaperManager的實例;2、調用suggestDesiredDimensions,設定橫豎軸虛擬寬度;Launcher中,設橫為2倍屏幕寬,豎屏幕尺寸。附:getW
4、indowManager().getDefaultDisplay()獲得屏幕的尺寸。技術點如何檢測安裝、卸載應用程序并進行處理?Receiver是最好的解決辦法,它可以對自己感興趣的Intent作出響應反應(在OnReceive函數中,可通過判斷Intent的Action進行選擇一如果可以檢測多種Intent)。代碼IntentFilterfilter=newIntentFilter(Intent.ACTION_PACKAGE_ADDED);filter.addAction(Intent.ACTION_PACKAGE_REMOVED);filter.addAction(Intent.ACTIO
5、N_PACKAGE_CHANGED);filter.addDataScheme("package");registerReceiver(mApplicationsReceiver,filter);/看上面就是在注冊Receiver,并加入它所感興趣的Action(能作出響應的Action)filter=newIntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);registerReceiver(mCloseSystemDialogsReceiver,filter);技術點如何檢測數據庫的變化?URI(數據庫地址)進行檢flag來判
6、斷是否需要通知ContentObserver正可用于這項工作,它對你所感興趣的測,在重寫的onChange函數中進行處理(最多用于更新當對數據庫進行增刪查等操作后,可以根據我們自己設定的Observer來對我們做出的修改發(fā)生響應(這里的響應不是指數據庫的具體操作響應,而很可能是UI上的表現),如果需要則調用getContext().getContentResolver().notifyChange(uri,null);這里的ContentResolver為應用程序提供了訪問數據庫模型的實例。注冊Observer的操作看代碼:ContentResolverresolver=getContentR
7、esolver();/獲取當前”數據庫實例,Provider中定義了它的操作如insert,delete,update.resolver.registerContentObserver(LauncherSettings.Favorites.CONTENT_URI,true,mObserver);做完一系列操作后,進入到程序的加載階段,下次開始分析startLoader。從startLoader開始說起,從函數命名可以看出,用于在啟動過程中加載程序所需品,那么它具體做了哪些操作,還是展開闡述一下。主要加載步驟分為兩個:loadUserItemsloadApplications對于這里loadAp
8、plications中的具體操作,我尚有許多不解之處。但如若是第一次程序啟動Launcher包含的內容比較豐富,前面一章寫啟動加載,這部分包含了很多內容,也有很多機制比較不錯,接著總結一些雜項的內容。技術點如何找出所有的應用程序快捷方式?當我們在屏幕上長按(我是在一個加號按鈕上長按),彈出如下所示:三種選擇,Shortcuts、Widgets、Wallpapers,由于我不需要添加Folders,所以直接屏蔽掉了。這里主要就是介紹下如何完成上述操作并在點擊Shortcuts后列出所有的應用程序。像如上所示的彈出式框并屏蔽下層窗口消息被稱為Dialog。所以我們要先創(chuàng)建一個Dialog:覆寫方法
9、:onCreateDialog(intid),這里的id就很顯然了,根據你傳入的id來創(chuàng)建不同的Dialog,那么如何創(chuàng)建一個Dialog?我們需要一個跟Dialog有關的類來實現一系列操作如點擊等。證代碼privateclassCreateShortcutimplementsDialogInterface.OnClickListener,DialogInterface.OnCancelListener,DialogInterface.OnDismissListenerprivateAddAdaptermAdapter;DialogcreateDialog()mWaitingForResult
10、=true;mAdapter=newAddAdapter(Launcher.this);AlertDialog.Builderbuilder=newAlertDialog.Builder(Launcher.this);builder.setTitle(getString(R.string.menu_item_add_item);builder.setAdapter(mAdapter,this);builder.setInverseBackgroundForced(true);AlertDialogdialog=builder.create();dialog.setOnCancelListene
11、r(this);dialog.setOnDismissListener(this);returndialog;publicvoidonCancel(DialogInterfacedialog)mWaitingForResult=false;cleanup();publicvoidonDismiss(DialogInterfacedialog)mWorkspace.unlock();privatevoidcleanup()mWorkspace.unlock();dismissDialog(DIALOG_CREATE_SHORTCUT);/*Handletheactionclickedinthe&
12、quot;Addtohome"dialog.*/publicvoidonClick(DialogInterfacedialog,intwhich)cleanup();switch(which)caseAddAdapter.ITEM_SHORTCUT:/InsertextraitemtohandlepickingapplicationpickShortcut(REQUEST_PICK_SHORTCUT,R.string.title_select_shortcut);break;上面的代碼已經很明顯了,本質上是創(chuàng)建了一個AlertDialog。至于前面為什么要用id,原因不僅是可以方便創(chuàng)
13、建不同的Dialog,同時還使我們可以避免引入過多的成員變量,如果想要在onDestroy或其他什么地方釋放掉Dialog,很簡單,直接通過dismissDialog(id),就可以釋放掉前面創(chuàng)建的Dialog,是不是很方便呢?在onCreateDialog中,我們可以看到為AlertDialog指定一個Adapter則可以方便的將數據放到容器中,通過組織后顯示出來。Adapter中添加數據的順序也就是onClick中which參數的順序。對于AddAdapter中主要做了什么,我想只要是用過Adapter的人都是知道的,這里我就簡單的把代碼貼出,不做說明了:代碼比較簡單,稍微看下就好。下面接著說點了Shortcuts之后的操作。還是先上圖,來看看點擊Shortcuts后是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 6346.2301-2025電子設備用固定電容器第23-1部分:空白詳細規(guī)范表面安裝金屬化聚萘二甲酸乙二醇酯膜介質直流固定電容器評定水平EZ
- 2026年農業(yè)高技能人才培育策略
- 2026年呼叫中心服務質量提升課程
- 2026河南南陽市市直機關遴選公務員37人備考題庫帶答案詳解
- 隱形技術的定義
- 職業(yè)噪聲工人心血管疾病一級預防實踐
- 職業(yè)健康監(jiān)護策略研究
- 職業(yè)健康大數據在職業(yè)病鑒定中的應用
- 職業(yè)健康中的人機適應性研究
- 齊齊哈爾2025年黑龍江齊齊哈爾龍江縣選調中小學校醫(yī)筆試歷年參考題庫附帶答案詳解
- 2026年及未來5年市場數據中國工程擔保行業(yè)發(fā)展運行現狀及投資潛力預測報告
- 2026陜西氫能產業(yè)發(fā)展有限公司所屬單位招聘(29人)備考題庫附答案
- 智慧旅游建設培訓班課件
- 社區(qū)干部法律培訓課件
- 2025年兩種人考試題庫附答案
- GB/T 8642-2025熱噴涂抗拉結合強度的測定
- 山東煙草招聘筆試題庫2026
- 2026屆浙江省學軍中學高三數學第一學期期末檢測試題含解析
- 水利工程安全隱患排查治理制度
- 酒店客房服務規(guī)范及員工培訓教材
- 基孔肯雅熱防控專家服務合同2025年
評論
0/150
提交評論