真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何開發(fā)APPWidget?

如何開發(fā)APP Widget?相信大部分人都還沒學(xué)會這個技能,為了讓大家學(xué)會,給大家總結(jié)了以下關(guān)于開發(fā)APP Widget的步驟內(nèi)容,話不多說,一起往下看吧。

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供瑪沁網(wǎng)站建設(shè)、瑪沁做網(wǎng)站、瑪沁網(wǎng)站設(shè)計、瑪沁網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、瑪沁企業(yè)網(wǎng)站模板建站服務(wù),10多年瑪沁做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

1、繼承AppWidgetProvider類,

public class MyWidget extends AppWidgetProvider{
    
public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds)

public void onDeleted(Context context, int[] appWidgetIds)

public void onEnabled(Context context)

public void onDisabled(Context context)


public void onReceive(Context context, Intent intent)
    
}

一般在onUpdate中進行widget中按鍵的事件處理,和初始化值。

2、AppWidgetProvider是一個Broadcast,需要在Mainfest.xml中注冊。

 
           
               
           
           
 

   3、 中的android:resource引用的是Widget的配置文件,需要在res/xml下新建,如果xml目錄不存在,也需要新建。

 widget_config文件



    android:minHeight="20dp" 
    android:updatePeriodMillis="1000000"  
    android:previewImage="@drawable/l7"  
    android:initialLayout="@layout/my_widgets_layout" 
    android:resizeMode="horizontal|vertical"  
     android:configure="cn.fly.widgets.MyWidgetsConfigActivity"> 
     
    

設(shè)置了updatePeriodMillis后,就算手機處于待機狀態(tài),也會喚醒手機去執(zhí)行更新操作,如果widget更新頻繁,這會對手機電池壽命造成影響,所以針對這種情況,可以使用AlarmManager來執(zhí)行定時更新操作,將AlarmManager的Type設(shè)置為 ELAPSED_REALTIME 或者 RTC,就可以保證手機在喚醒的狀態(tài)下執(zhí)行更新,updatePeriodMillis則需要設(shè)置為0。

在桌面顯示的布局文件的跟節(jié)點必須是常用布局例如:Framelayout,linearLayout,viewStub等,不能使用自定義布局。

在4.0以后的版本,widget放置到桌面上是可以根據(jù)其他的widget或者快捷圖標來擴充邊距,使添加的widget能夠在桌面視覺上達到協(xié)調(diào),但是4.0以下的版本需要自己來設(shè)置Padding,使widget能和其他桌面圖標達到視覺協(xié)調(diào)。

做完以上的操作,一個簡單的widget的就完成了,根據(jù)應(yīng)用需求我們會遇到以下的一些情況。

一、相應(yīng)widget的按鍵事件

    因為widget不是運行在自身的應(yīng)用的進程中,所以是通過以下方式來處理事件。

  RemoteView 進行布局引用。

   PendingIntent  進行事件分發(fā)。

//這段代碼一般寫在onUpdate中,所處理的事情是按button更改Textview的顯示
final int N = appWidgetIds.length;
for(int i = 0;i< N;i++){
    Intent intent = new Intent("自定義action用來標示這個intent");
    intent.setClass(context, MyWidgets.class);
    //發(fā)送廣播,在onReceive()中進行處理PendingIntent也可以啟動Activity,也可以//啟動Service
    PendingIntent mPendingIntent = PendingIntent.getBroadcast(context, 
					0, intent, 0);
    RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
					"widget布局引用");
    //button按鍵處理
    remoteViews.setOnClickPendingIntent(R.id.btn_click, mPendingIntent);
    appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews);
}

  在onReceive()的處理

String action = intent.getAction();
if(action.equals("比較發(fā)送的action")){
    RemoteViews remoteViews  = new RemoteViews(context.getPackageName(),"widget布局引用");
    //更改文本顯示
    remoteViews.setTextViewText(R.id.tv, "測試");
    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); 
    ComponentName componentName = new ComponentName(context,MyWidgets.class);
    appWidgetManager.updateAppWidget(componentName, remoteViews); 
		}

二、widget添加上桌面上時的配置頁面

這個配置頁面是一個activity,所以需要在mainfest.xml中進行配置

1、在啟動這個配置頁面的時候,需要在oncreate()方法里面寫上setResult(RESULT_CANCELED);這樣做是為了防止配置頁面還沒有顯示出來,用戶就按了返回鍵,

setResult(RESULT_CANCELED);
super.onCreate(savedInstanceState);

2、需要獲取widgetId

Intent intent = getIntent();
Bundle extra = intent.getExtras();
if(extra !=null){
    mAppWidgetId  = extra.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
}

如果mAppWidgetId為INVALID_APPWIDGET_ID則退出頁面顯示。

3、當配置頁面顯示后,用戶做完了配置退出頁面時,需要將這些配置信息更新到桌面的widget,照著官方給出的文檔上來操作的話,只能顯示widget但是配置并沒有生效,參考了appdemo中的例子和個人調(diào)試后總結(jié)如下。

在MyWidget中寫一個靜態(tài)方法

 //describe是一個在配置文件中自由輸入文本,然后在widget的text上顯示,widget是為了做到代碼重用,這里只是一個簡單的更改文本,如果涉及到圖片更改,列表數(shù)據(jù)改動等,這些改動如果有配置界面的話基本上和onupdate所做的操作一樣。
 public static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,int appWidgetId, String describe) {
   RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_provider);
   views.setTextViewText(R.id.tv, describe);
   appWidgetManager.updateAppWidget(appWidgetId, views);
}

在配置界面的退出方法中這樣寫

private void exits(){
    String describe = et.getText().toString();
    Context context = this;
    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
    //appWidgetId在進入配置界面的時候已經(jīng)獲取了
    MyWidget.updateAppWidget(context,appWidgetManager,appWidgetId , describe );
    
    //配置完成退出界面
    Intent intent = new Intent();
    resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
    setResult(RESULT_OK, intent );
    finish();
}

當時參考文檔做時,文檔中并沒有提到調(diào)用updateAppWidget方法后,退出界面需要重新獲取view,并改變view的顯示數(shù)據(jù)。所以我只寫了appWidgetManager.updateAppWidget(appWidgetId, views)方法。

看完這篇文章,你們學(xué)會開發(fā)APP Widget了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀。


本文題目:如何開發(fā)APPWidget?
轉(zhuǎn)載注明:http://weahome.cn/article/jdehpg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部