當前位置:首頁 » 安卓系統 » androidwidget開發

androidwidget開發

發布時間: 2022-10-30 12:25:29

① 求助各位高手一個android上widget開發的問題!!卸載了程序,桌面上就顯示說載入窗口小部件時出錯……

卸載應用沒刪除是launcher 的問題,和widget 本身沒什麼問題。桌面沒刪除掉是因為launcher 的資料庫中的你這個快捷方式還存在。

② android開發:不同的控制項響應不同的點擊事件在appwidget中怎麼寫

一個appwidget(桌面小插件)中包括兩個控制項(一個button,一個Textview),現要求不同的控制項響應不同的點擊事件,如點擊Textview則彈出文本框可以進行編輯(如加入城市),點擊BUTTON則刷新textview里的內容(如刷新textview中城市的天氣)這個在響應的頁面做控制項的監聽點擊事件啊,很簡單的。

③ 安卓開發:activity向widget傳遞2個文本,widget收到文本更新widget

(1)創建一個類,讓其繼承類 AppWidgetProvider,在 AppWidgetProvider 類 中有許多的方法,例如 onDelete(Context, int[]),onEnable(Context)等等, 一般情況下我們紙需要重寫 onUpdate(Context, AppWidgetManager, int[])這 個方法就可以了,這個方法是當觸發器更新widget時候執行的操作。 (2)在項目的 AndroidMenifest.xml 文件中添加一個 receiver 標簽,讓其指向 前面創建的 AppWidgetProvider 子類,內容如下:

  1. 4.5.6.7.9.



intent-filter 中過濾了 APPWIDGET_UPDATE 事件,這個事件是由系統觸發的更 新事件,每個widget必須包含這個事件;meta-data 標簽描述的是widget的配 置文件指向,該文件描述了widget的一些基本信息。 (3)編寫widget的 provider 文件信息,本例中該文件名叫做widget_setting.xml,開發者可以隨便取名,只要在 AndroidMenifest.xml 中寫 正確就行。

1.2.<appwidget-provider 3.="" xmlns:android="http://schemas.android.com/apk/res/android" 4.="" android:minwidth="100dp"

5. android:minHeight="100dp" 6. android:initialLayout="@layout/main" 7. android:updatePeriodMillis="1000" > 8.


minWidth 和 minHeight 是widget的最小寬度和高度,這個值是一個參考值,系 統會根據實際情況進行改 變,initialLayout 屬性指明了widget的視圖布局文 件,updatePeriodMillis 屬性是widget每隔多久更新一次的時 間, 單位為毫秒。 (4)接下來就是界面布局,在這個示例中只需要一個 TextView 控制項就可以,代 碼如下:

  1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.



如果沒能解釋明白 可以 ,到我群里討論 look at my n a m e

④ widget機制

android中的widget是非常有意思的一個功能,widget不是運行在自己的進程中,通常是運行在桌面、鎖屏等應用上,如何理解跨進程通信並更新widget界面,是理解widget的關鍵。

widget核心是一個廣播接收器, AppWidgetProvider ,它有幾個核心的回調函數。

根據實際需要,監聽對應事件,實現相應的方法,在相應介面中更新widget界面。

widget必須在androidmenifest.xml文件中配置插件信息,以便包管理服務識別。

widget的初始配置文件如下,需要指定插件的最小寬高以及其它可選項,刷新頻率,默認效果圖片等等。

widget的具體開發如上,但到底是如何影響到桌面顯示,它們的包名不一樣,進程也不一樣。它們是如何進行跨進程通信。在理解widget之前,必須要理解android中的remoteviews是如何工作的。

remoteviews,顧名思義是遠程view,但它不是一個真正的view,因為真正的view是無法跨進程通信的,remoteviews實現了parcelable介面,可以實現跨進程通信,可以將remoteviews理解為一個view的描述文件,其內部維護了一個action列表,每個action記錄了用戶調用的方法名,參數,最終實現反射調用,實現用戶設置的ui效果。

widget應用維護著一個remoteviews,當widget需要更新時,必須通過widget服務刷新,以便通知桌面或鎖屏實現界面更新。

邏輯調用時序圖如上所示。AppWidgetHost有一個實現了IAppWidgetHost的callback內部對象,這樣能就通過aidl方式實現跨進程通信了。具體調用如上,widget服務跨進程調用到widgethost當中,完成widgethostview的更新,這樣桌面就實現了界面刷新。因為桌面在初始化的時候會將widgethostview添加到界面上。

widget機制,歡迎交流補充。

⑤ Android開發如何獲得第三方應用Widget的包名和類名

最近在做Android的平板的開發,想在桌面上預置一些第三方應用的Widget,在桌面預置Widget的方法就是要獲得應用的包名和類名。 桌面預置widget的方法 在Launcher的配置文件 res/xml/default_workspace.xml中添加如下的代碼:<appwidget launcher:packageName="com.google.android.apps.genie.geniewidget" //預置應用的包名 launcher:className="com.google.android.apps.genie.geniewidget.miniwidget.MiniWidgetProvider" //預置應用的Provider的類名,不是Activity的類名 launcher:screen="1"//在第幾屏0為第一屏,launcher:x="0"//x坐標launcher:y="0"//y坐標 launcher:spanX="4"//x方向占幾個單元格 launcher:spanY="1"///y方向占幾個單元格 通過logcat有時可以找到應用的包名和Provider類名,此方法不可取,容易出錯。系統的widget可以通過查找相關的源碼找到對應的包名和Provider的類名,但是第三方應用看不到源碼,但是也可以通過反編譯第三方應用,獲得相應的Maifest.xml文件,找到對應的包名和Provider類名,但是此方法比較繁瑣。 可以通過在Launcher中添加如下代碼,可以將系統中所安裝的所有 的widget的信息列印出來: 在Launcher.java中的onCreate方法中添加下面的代碼: List<=mAppWidgetManager.getInstalledProviders();finalintproviderCount=providers.size();for(inti=0;i<providerCount;i++){ ComponentNameprovider=providers.get(i).provider;Log.i("xxx", "packagename:" +provider.getPackageName()+ "classname:" +provider.getClassName());}新編譯Launcher,把Launcher push進去之後,執行 adb logcat -s xxx,就可以看到列印出來的Log信息,包名和Provider了類名。 桌面預置shortcut的方法: 在Launcher的配置文件 res/xml/default_workspace.xml中添加如下的代碼:<favorites

⑥ 我在開發Android的widget時,如果在widget中加入一個按鈕。點擊這個按鈕如何啟動主程序

創建一個Intent其中的class就是主程序的intent,,然後將intent放入到創建的PendingIntent中,你的那個button就是RemoteViews, 通過 RemoteViews.setOnClickPendingIntent(R.id.XX, pendingIntent);就可以了。網上有很多例子,樓主去看看。

⑦ androidwidget有用嗎

1.身材微:它們一般都很小,在終端上嵌入非常方便,運行快速。
2.形式多:Widget可以以多種形式呈現出來,幻燈秀、視頻、地圖、新聞、小游戲……
3.功能巨:別看它們小,卻服務周到,它可以為你報告新聞、幫你買東西、列出你最喜歡的樂隊,還有你最近看的視頻。另外,它還是一個殷勤的管家,你不必親自去Flickr或者天氣預報網站,Widget會將信息主動帶給你。
4.姿容麗:它們可以稱得上玉面飛龍、以色服人。只要你願意,你可以把它變成任何你想要得樣子。它的出現,無異於一枚「桌面炸彈」,狹窄而單調的IE窗口將被更為廣闊和絢麗的桌面空間所取代。
5.個性化:Widget更像一個屬於我們每個人的魔方,任由用戶聚合。你可以根據自己喜好,將多個Widget,隨心所欲的去精心組裝你的網路世界。通過Widget,可以用戶把一切在「網」中的內容打亂重來,並按照用戶希望看到的樣子重新排列組合一個屬於自己的互聯網。比如說一個由微件搭建個人空間,可以包括來自新浪的體育新聞,來自論壇的一個板塊,來自權威財經網站的一則隨時更新的股票信息 ——這些以往需要用戶同時分別進入幾個網站才能看到的信息,現在由一個個微件將其轉變為用戶個人空間的一部分,從而可以直接在同一個頁面中並存。傳統互聯網訪問方式處於分裂狀態的後Web2.0時期,多樣性、炫酷且更具個性化的Widget流行,或許能引領一個新的潮流。
6.易製作:製作 Widget 部件並不復雜,只需要熟悉三方面的知識:圖像處理、HTML/XML、java,就可以按照開發站點里的教程做出漂亮的部件來。Widget能夠流行的一個要點在於開放製作,UGC應用帶來爆炸式地增長。
那麼,什麼是android widget呢?
在Android 1.5 SDK preview中,我們看到了一系列功能和API上的變化變化,包括軟鍵盤、桌面Widget和Live Folder API、視頻錄制API,藍牙功能升級等,Google近來對於這些全新功能的解析使得Android開發者blog變得異常活躍。上周,Jeff Sharkey就有一篇對於Android桌面widget和AppWidget框架的簡介,以「Word of the day」的一個例子講述了桌面Widget的運作機制。昨天他又在個人blog上放出了一個天氣預報Widget的例子,事實上這已經是一個真正實用的程序了。它每天更新4次天氣預報,我們可以添加多個Widget來關注多個城市的天氣情況,另外,點擊Widget後我們還可以看到今後幾天的詳細預報。
這讓我想起了HTC Source的Nick Gray上周的一篇文章Android Widgets, Unlimited Potential中提到的幾類可能會大受歡迎的Android桌面Widget。
Android本身已經自帶了時鍾、音樂播放器、相框和Google搜索4個Widget程序,不過這並不能阻止大家開發自己更加美觀,功能更豐富的版本。另外,微博客、RSS訂閱、股市信息、天氣預報這些Widget也都有流行的可能。
微博客Widget:Twidroid是Android上迄今為止最棒的Twitter客戶端,大家顯然都期待著它會推出支持桌面Widget的版本,另外像國內比較受歡迎的飯否、嘀咕、嘰歪等應該也會有類似的Widget推出。對於一個微博客類的Widget來說,有兩個方面是必不可少的,一是用來發布消息,另一個則是用來瀏覽。
RSS訂閱Widget: 盡管微博客(尤其是Twitter)已經完全蓋過來RSS訂閱的風頭,越來越多的人用Twitter來跟蹤站點的更新,不過RSS訂閱也並非完全沒有了市場,像分類訂閱這樣的功能還是需要RSS來幫忙,另外站點管理員也未必會在Twitter上發布所有的更新。
股市信息Widget:對於炒股的人來說,大概沒有什麼能比在手機桌面上放上幾個所關注股票的實時股價更有運籌帷幄的感覺了吧。
天氣預報Widget:對於我這樣成天窩在辦公室或者家裡的人來說,有一個Widget能夠讓我了解當前的天氣和近1、2天的天氣是非常有用的,這大概會大大減少我下了樓又跑回去拿雨傘的幾率。如果能加上像TouchFLO 3D中那樣的UI效果,當然就更酷了。
這只是我現在想到的一些Widget,得益於Android 1.5為我們提供的Widget API為我們的手機桌面帶來的無限的可能,我們的手機桌面無疑將會更有趣。
對國內G1的用戶,如果想體驗Android 1.5的桌面Widget,可以看看Haykuro的blog,他正在為製作G1可用的Android 1.5 ROM而努力。另外,T-Mobile已經計劃在五月向德國的T-Mobile G1用戶推送1.5的更新了,所以即使到時候沒有官方的G1簡體中文1.5 ROM,相信Haykuro的 1.5 ROM for G1也能非常接近官方的成熟度。
Widget應用目前在Android手機上得到了廣泛的應用。由於其方便小巧,所以得到了很多的應用,像天氣,微博,信息,歌曲,時間等等。
關於android Wpp widget:
應用程序窗口小部件(Widget)是微小的應用程序視圖,可以被嵌入到其它應用程序中(比如桌面)並接收周期性的更新。你可以通過一個App Widget provider來發布一個Widget。可以容納其它App Widget的應用程序組件被稱為App Widget宿主。下面的截屏顯示了一個音樂App Widget。

⑧ 如何開發android 桌面widget 源代碼

參考如下內容:
AppWidgetProvider類
AppWidgetProvider 繼承自 BroadcastReceiver,它能接收 widget 相關的廣播,例如 widget 的更新、刪除、開啟和禁用等。
AppWidgetProvider中的廣播處理函數如下:
onUpdate()
當 widget 更新時被執行。同樣,當用戶首次添加 widget 時,onUpdate() 也會被調用,這樣 widget 就能進行必要的設置工作(如果需要的話) 。但是,如果定義了 widget 的 configure屬性(即android:config,後面會介紹),那麼當用戶首次添加 widget 時,onUpdate()不會被調用;之後更新 widget 時,onUpdate才會被調用。
onAppWidgetOptionsChanged()
當 widget 被初次添加 或者 當 widget 的大小被改變時,執行onAppWidgetOptionsChanged()。你可以在該函數中,根據 widget 的大小來顯示/隱藏某些內容。可以通過 getAppWidgetOptions() 來返回 Bundle 對象以讀取 widget 的大小信息,Bundle中包括以下信息:
OPTION_APPWIDGET_MIN_WIDTH – 包含 widget 當前寬度的下限,以dp為單位。
OPTION_APPWIDGET_MIN_HEIGHT – 包含 widget 當前高度的下限,以dp為單位。
OPTION_APPWIDGET_MAX_WIDTH – 包含 widget 當前寬度的上限,以dp為單位。
OPTION_APPWIDGET_MAX_HEIGHT – 包含 widget 當前高度的上限,以dp為單位。
onAppWidgetOptionsChanged() 是 Android 4.1 引入的。
onDeleted(Context, int[])
當 widget 被刪除時被觸發。
onEnabled(Context)
當第1個 widget 的實例被創建時觸發。也就是說,如果用戶對同一個 widget 增加了兩次(兩個實例),那麼onEnabled()只會在第一次增加widget時觸發。
onDisabled(Context)
當最後1個 widget 的實例被刪除時觸發。
onReceive(Context, Intent)
接收到任意廣播時觸發,並且會在上述的方法之前被調用。
總結,AppWidgetProvider 繼承於 BroadcastReceiver。實際上,App Widge中的onUpdate()、onEnabled()、onDisabled()等方法都是在 onReceive()中調用的,是onReceive()對特定事情的響應函數。

⑨ android開發中,如何使appWidget在被點擊的時候產生對話框

不依賴可能是不行, 但是你可以把你的activity弄出dialog 在manifest裡面配置 整個activity就是以個dialog。
在activity下設置這個屬性就可以了
android:theme="@android:style/Theme.Dialog

⑩ Android安卓開發如何點擊自己的widget啟動百度地圖

調用自帶瀏覽器跳轉:Uriuri=Uri.parse("");Intentit=newIntent(Intent.ACTION_VIEW,uri);startActivity(it);如果用WebView載入:WebView.loadUrl("");

熱點內容
建設銀行手機銀行密碼在哪裡修改 發布:2025-03-06 11:55:14 瀏覽:355
氣瓶如何存儲 發布:2025-03-06 11:51:28 瀏覽:553
愛奇藝會員怎麼改密碼 發布:2025-03-06 11:33:44 瀏覽:61
firefox不緩存 發布:2025-03-06 11:33:43 瀏覽:467
淘寶密碼如何破解 發布:2025-03-06 11:32:56 瀏覽:593
sqlservereclipse 發布:2025-03-06 11:25:29 瀏覽:705
linux存放文件 發布:2025-03-06 11:24:47 瀏覽:447
nfslinux掛載 發布:2025-03-06 11:19:42 瀏覽:234
安卓動態壁紙怎麼提取 發布:2025-03-06 11:07:26 瀏覽:112
有鎖安卓手機有什麼壞處 發布:2025-03-06 11:00:20 瀏覽:576