日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
安卓開(kāi)發(fā)AppWidget開(kāi)發(fā)入門指導(dǎo)

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

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到巴州網(wǎng)站設(shè)計(jì)與巴州網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請(qǐng)域名網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋巴州地區(qū)。

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

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

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

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

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

二、App Widget 的簡(jiǎn)單例子:Hello App Widget

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

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

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

XML/HTML代碼

 
 
 
  1.   
  2.   
  3.   
  4.     

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

XML/HTML代碼

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

4、準(zhǔn)備好一個(gè)處理widget請(qǐng)求的Java文件,basic.android.lesson35包下的 HelloWidgetProvider,他繼承了AppWidgetProvider類,在本例中沒(méi)有任何請(qǐng)求處理的具體代碼,我在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ì)是個(gè) 廣播接收器,它專門用來(lái)接收來(lái)自 Widget組件的各種請(qǐng)求(用Intent傳遞過(guò)來(lái)),所以如果讓我給他起名的話 我會(huì)給他命名為AppWidgetReceiver,每一個(gè)Widget都要有一個(gè)AppWidgetProvider.   
  10. public class HelloWidgetProvider extends AppWidgetProvider {   
  11.   
  12.     //每個(gè)請(qǐng)求都會(huì)傳遞給onReceive方法,該方法根據(jù)Intent參數(shù)中的action類型來(lái)決定自己處理還是分發(fā)給下面四個(gè)特殊的方法。   
  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自動(dòng)更新時(shí)間到了、或者其他會(huì)導(dǎo)致Widget發(fā)生變化的事件發(fā)生,或者說(shuō)Intent的值是android.appwidget.action.APPWIDGET_UPDATE,那么會(huì)調(diào)用onUpdate,下面三個(gè)方法類似   
  21.     @Override  
  22.     public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {   
  23.         //AppWidgetManager 顧名思義是AppWidget的管理器,appWidgetIds 桌面上所有的widget都會(huì)被分配一個(gè)唯一的ID標(biāo)識(shí),那么這個(gè)數(shù)組就是他們的列表   
  24.         Log.i("yao", "HelloWidgetProvider --> onUpdate");   
  25.         super.onUpdate(context, appWidgetManager, appWidgetIds);   
  26.     }   
  27.   
  28.     //當(dāng)一個(gè)App Widget從桌面上刪除時(shí)調(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.     //當(dāng)這個(gè)App Widget***次被放在桌面上時(shí)調(diào)用(同一個(gè)App Widget可以被放在桌面上多次,所以會(huì)有這個(gè)說(shuō)法)   
  36.     @Override  
  37.     public void onEnabled(Context context) {   
  38.         Log.i("yao", "HelloWidgetProvider --> onEnabled");   
  39.         super.onEnabled(context);   
  40.     }   
  41.   
  42.     //當(dāng)這個(gè)App Widget的***一個(gè)實(shí)例被從桌面上移除時(shí)會(huì)調(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文件,增加一個(gè)receiver標(biāo)簽,這個(gè)標(biāo)簽看起來(lái)很像前面講的BroadReceiver的配置,具體內(nèi)容如下:

XML/HTML代碼

 
 
 
  1.   
  2.   
  3.       
  4.   
  5.       
  6.   
  7.           
  8.           
  9.               
  10.                   
  11.                   
  12.               
  13.               
  14.               
  15.           
  16.       
  17.  

6、編譯并運(yùn)行程序,我們知道這種Widget程序,即使裝完了也不會(huì)在程序列表中出現(xiàn),因?yàn)樗揪蜎](méi)有main Activity,下面我給不清楚的同學(xué)說(shuō)一下如何把一個(gè)widget放到桌面上。

在模擬器上桌面上長(zhǎng)按,等待彈出下面對(duì)話框:

選擇窗口小部件:

選擇Hello,App Widget:


本文題目:安卓開(kāi)發(fā)AppWidget開(kāi)發(fā)入門指導(dǎo)
URL分享:http://www.5511xx.com/article/dpsgdjc.html