成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

安卓開發(fā) App Widget 開發(fā)入門指導

移動開發(fā) Android
本節(jié)所要講的主要內(nèi)容包括Android桌面小部件、App Widget的開發(fā)入門指導,并通過一個簡單實例的形式來直觀的講解App Widget。

本文所要講的主要內(nèi)容包括Android桌面小部件、App Widget的開發(fā)入門指導,并通過一個簡單實例的形式來直觀的講解App Widget。

一、Widget 、App Widget 、Web App 的概念

Widget最初的概念是98年一個叫Rose的蘋果工程師提出,直到2003年的時候才正式為大家所知,不過隨后無數(shù)大公司都開始接受并應用這一思路。 現(xiàn)在我們看到在蘋果系統(tǒng)里按下F4彈出的Dashboard里的小工具叫Widget,在Windows 7里側(cè)邊欄上的那些漂亮的小工具叫Gadget(widget變體?),除此以外還有yahoo Widget等等Widget產(chǎn)品。他們有一個共同的特點就是采用前臺Web開發(fā)用的技術(shù)(譬如HTML、CSS、Javascript)來制作的小工 具、小部件。

在Android系統(tǒng)里,幾乎每個可視化的View組件都叫Widget,起這個名字可能當時是為了趕時髦。

App Widget是從Android 1.5以后才有的東東,就是可以放在Android桌面上的應用程序小組件。這一點上看他的功能很像windows的側(cè)邊欄小工具,可惜的是他的采用技術(shù) 并不是HTML等技術(shù)。當然App Widget才是我們本講的主角,本來他應該順理成章叫做Widget的,至少也要叫做Gadget吧,可惜這個名字已經(jīng)被他自己的系統(tǒng)占用了,所以只好 改名叫App Widget。

***講一下Web App 或者說是Android Web Application,也許叫mobile web application 更準確些。我們發(fā)現(xiàn)現(xiàn)在智能機系統(tǒng)平臺很多,譬如iOS、Android、Windows Phone 、WebOS、BlackBerry等等,它們采用的技術(shù)框架也各不相同,有沒有辦法寫一個程序在各個系統(tǒng)上都能運行呢?答案是肯定的,寫基于 Webkit的瀏覽器的應用即可。我們使用 HTML5、CSS3、JavaScript、WebKit 等技術(shù)來寫的Web Application也許是今后的一個大潮流也說不準啊。有機會我們再講講Android Web Application 的開發(fā)。

二、App Widget 的簡單例子:Hello App Widget

App Widget的技術(shù)實現(xiàn)有那么一點點繞,我們用一個最簡單的例子Hello App Widget來操作一遍,然后再針對這個例子做講解,也許你會理解的更快些。

1、新建一個項目 Lesson35_HelloAppWidget ,注意創(chuàng)建時可以不選Create Activity。

新建Android項目

2、準備好一個Widget的顯示布局文件 layout/widget.xml,內(nèi)容如下:

XML/HTML代碼

  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <linearlayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android" android:gravity="center">   
  3. <textview android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/textView1" android:text="歡迎進入App Widget的世界!" android:textcolor="#ff0000ff">   
  4. </textview></linearlayout>     

3、準備好一個Widget的配置文件 xml/provider_info.xml,該文件配置了widget可以占用的屏幕長寬、更新頻率,所顯示的布局文件(就是上面的那個布局文件)等,其內(nèi)容如下:

XML/HTML代碼

  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <!-- appwidget-provider Widget的配置文件  -->   
  3. <!-- android:minWidth 最小寬度 -->   
  4. <!-- android:minHeight 最小高度 -->   
  5. <!-- android:updatePeriodMillis 組件更新頻率(毫秒) -->   
  6. <!-- android:initialLayout 組件布局XML的位置 -->   
  7. <!-- android:configure Widget設置用Activity -->   
  8. <appwidget -provider="" xmlns:android="http://schemas.android.com/apk/res/android" android:initiallayout="@layout/widget" android:updateperiodmillis="86400000" android:minheight="72dp" android:minwidth="294dp">   
  9. </appwidget>   

4、準備好一個處理widget請求的Java文件,basic.android.lesson35包下的 HelloWidgetProvider,他繼承了AppWidgetProvider類,在本例中沒有任何請求處理的具體代碼,我在java文件中寫了 大量注釋,方便你的理解。內(nèi)容如下:

Java代碼

  1. package basic.android.lesson35;    
  2.    
  3. import android.appwidget.AppWidgetManager;    
  4. import android.appwidget.AppWidgetProvider;    
  5. import android.content.Context;    
  6. import android.content.Intent;    
  7. import android.util.Log;    
  8.    
  9. // AppWidgetProvider 是 BroadcastReceiver 的子類,本質(zhì)是個 廣播接收器,它專門用來接收來自 Widget組件的各種請求(用Intent傳遞過來),所以如果讓我給他起名的話 我會給他命名為AppWidgetReceiver,每一個Widget都要有一個AppWidgetProvider.    
  10. public class HelloWidgetProvider extends AppWidgetProvider {    
  11.    
  12.     //每個請求都會傳遞給onReceive方法,該方法根據(jù)Intent參數(shù)中的action類型來決定自己處理還是分發(fā)給下面四個特殊的方法。    
  13.     @Override   
  14.     public void onReceive(Context context, Intent intent) {    
  15.    
  16.         Log.i("yao""HelloWidgetProvider --> onReceive");    
  17.         super.onReceive(context, intent);    
  18.     }    
  19.    
  20.     //如果Widget自動更新時間到了、或者其他會導致Widget發(fā)生變化的事件發(fā)生,或者說Intent的值是android.appwidget.action.APPWIDGET_UPDATE,那么會調(diào)用onUpdate,下面三個方法類似    
  21.     @Override   
  22.     public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {    
  23.         //AppWidgetManager 顧名思義是AppWidget的管理器,appWidgetIds 桌面上所有的widget都會被分配一個唯一的ID標識,那么這個數(shù)組就是他們的列表    
  24.         Log.i("yao""HelloWidgetProvider --> onUpdate");    
  25.         super.onUpdate(context, appWidgetManager, appWidgetIds);    
  26.     }    
  27.    
  28.     //當一個App Widget從桌面上刪除時調(diào)用    
  29.     @Override   
  30.     public void onDeleted(Context context, int[] appWidgetIds) {    
  31.         Log.i("yao""HelloWidgetProvider --> onDeleted");    
  32.         super.onDeleted(context, appWidgetIds);    
  33.     }    
  34.    
  35.     //當這個App Widget***次被放在桌面上時調(diào)用(同一個App Widget可以被放在桌面上多次,所以會有這個說法)    
  36.     @Override   
  37.     public void onEnabled(Context context) {    
  38.         Log.i("yao""HelloWidgetProvider --> onEnabled");    
  39.         super.onEnabled(context);    
  40.     }    
  41.    
  42.     //當這個App Widget的***一個實例被從桌面上移除時會調(diào)用該方法。    
  43.     @Override   
  44.     public void onDisabled(Context context) {    
  45.         Log.i("yao""HelloWidgetProvider --> onDisabled");    
  46.         super.onDisabled(context);    
  47.     }    
  48.    
  49. }   

5、配置AndroidManifest.xml文件,增加一個receiver標簽,這個標簽看起來很像前面講的BroadReceiver的配置,具體內(nèi)容如下:

XML/HTML代碼

  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionname="1.0" android:versioncode="1" package="basic.android.lesson35">   
  3.     <uses -sdk="" android:minsdkversion="7">   
  4.    
  5.     <application android:icon="@drawable/icon" android:label="@string/app_name">   
  6.    
  7.         <!-- receiver的 android:name指向的是widget的請求處理器或者說請求接收者 -->   
  8.         <receiver android:label="Hello,App Widget" android:name=".HelloWidgetProvider">   
  9.             <intent -filter="">   
  10.                 <!-- widget默認的事件action -->   
  11.                 <action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action>   
  12.             </intent>   
  13.             <!-- widget元數(shù)據(jù),name是寫死的,resource指的是widget的配置文件 -->   
  14.             <meta -data="" android:name="android.appwidget.provider" android:resource="@xml/provider_info">   
  15.         </receiver>   
  16.     </application>   
  17. </uses></manifest>  

6、編譯并運行程序,我們知道這種Widget程序,即使裝完了也不會在程序列表中出現(xiàn),因為它根本就沒有main Activity,下面我給不清楚的同學說一下如何把一個widget放到桌面上。

在模擬器上桌面上長按,等待彈出下面對話框:

長按Android屏幕彈出“添加到主屏幕”

選擇窗口小部件:

Android“選擇窗口小部件”

選擇Hello,App Widget:

Hello, App Widget

責任編輯:閆佳明 來源: cnblogs
相關(guān)推薦

2010-05-13 10:19:09

Widget開發(fā)

2011-05-03 15:13:23

BlackBerryWidget

2010-07-02 09:54:32

Symbian開發(fā)

2010-06-13 09:45:35

Widget開發(fā)

2011-04-08 09:24:24

2012-03-28 09:40:55

安卓開發(fā)入門教程視頻

2013-04-10 15:14:18

Web App開發(fā)WebApp

2010-05-13 10:45:38

2011-09-09 20:14:58

Android Wid

2010-07-13 09:02:19

Widget開發(fā)

2012-03-28 09:54:32

安卓開發(fā)初級教程

2012-03-26 09:27:40

谷歌安卓開發(fā)谷歌安卓

2011-09-07 17:54:40

Android Wid開發(fā)

2011-09-08 17:48:33

Web Widget

2011-05-03 15:28:15

BlackBerryWidget

2010-06-23 09:14:15

Widget開發(fā)

2022-07-01 09:01:49

代碼hook框架

2011-09-09 10:00:20

Android Wid開發(fā)

2010-07-23 08:54:02

2010-04-03 11:30:15

Widget開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久久久国产精品一区二区 | 一区二区电影 | 蜜桃臀av一区二区三区 | 国产美女一区二区三区 | 毛片av免费看 | 精品久久久网站 | 99精品网站 | 久久精品电影 | 精品综合视频 | 欧美激情综合五月色丁香小说 | 欧美二区三区 | 欧美一区 | 91精品国产91久久久久青草 | 欧美视频一级 | 成人依人 | 一级一级一级毛片 | 国产永久免费 | 天天射天天操天天干 | 男女精品久久 | 男女啪啪高潮无遮挡免费动态 | 亚洲欧美日韩中文在线 | 欧美片网站免费 | 奇米av| 国产电影一区二区在线观看 | 黄色国产大片 | 有码在线 | 亚洲成人毛片 | 亚洲a视频| 伊人久操 | 国产日韩精品一区 | 国产电影一区二区三区爱妃记 | 国产成人精品久久久 | 久久伊人一区二区 | 日韩在线小视频 | 国产精品国产亚洲精品看不卡15 | 久久91av| 成人在线视频免费观看 | 国产人成精品一区二区三 | 中文字幕乱码一区二区三区 | 91成人在线 | 日日摸日日碰夜夜爽亚洲精品蜜乳 |