欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Android 妙招解決App Widget用戶(hù)交互 - Android - 技術(shù)中心 -...
App Widget對于A(yíng)ndroid來(lái)說(shuō)是非常強大的。通過(guò)它,開(kāi)發(fā)人員可以創(chuàng )建簡(jiǎn)單的控件,在主屏幕上或在任何程序中提供類(lèi)似的主機托管功能。在創(chuàng )建一主屏幕App Widget時(shí),您學(xué)習了如何創(chuàng )建和配置一個(gè)App Widget。這個(gè)簡(jiǎn)單的應用程序插件播放了一個(gè)由用戶(hù)預先設定時(shí)間間隔的圖像幻燈片。但是,如果用戶(hù)想改變這個(gè)時(shí)間間隔?如果他們想暫?;脽羝蛄⒓刺较乱粡垐D片他們該怎么做呢?在本文中,您將學(xué)習如何對App Widget增加用戶(hù)控件來(lái)處理這些行為。
為了處理與App Widget的交互,必須執行下面的任務(wù):
1、為每個(gè)App Widget控件設置唯一的單擊處理器。
2、這個(gè)單擊處理器向注冊接收器發(fā)送一個(gè)命令
3、處理收到的命令并執行任何必要行動(dòng)
4、更新App Widget,以反映變化
在這個(gè)例子中,我們將修改之前文章所創(chuàng )建的App Widget(圖1,頂上的App Widget ),包括一個(gè)帶有三個(gè)控件的按鈕欄(圖1,底部App Widget)。按鈕欄上的每個(gè)按鈕將執行一項具體的行動(dòng),然后點(diǎn)擊App Widget的任何地方將隱藏按鈕欄。左邊的按鈕(工具集)將啟動(dòng)配置活動(dòng),用戶(hù)可以改變幻燈片圖像轉換之間的時(shí)間間隔。中間的按鈕將暫?;蚧謴?,幻燈片。右側的按鈕,允許用戶(hù)立即跳到下一張圖片。
Figure 1: App Widget的三個(gè)不同狀態(tài)
Working with RemoteViews
一個(gè)App Widget使用一種叫做RemoteViews的特殊的顯示控件。與普通視圖不同的是,設計RemoteViews控件的目的是顯示另一個(gè)進(jìn)程中的視圖控件的集合。因此,不能簡(jiǎn)單地添加一個(gè)按鈕處理程序,因為該代碼將在應用程序的進(jìn)程中運行,而不是在顯示RemoteViews對象的進(jìn)程中(在這種情況下,主屏幕的進(jìn)程中)。
為了實(shí)現RemoteViews控件的用戶(hù)交互,您必須注冊,一個(gè)PendingIntent將會(huì )被觸發(fā),當包含RemoteViews對象的具體視圖被點(diǎn)擊時(shí)。這是通過(guò)調用RemoteViews對象的setOnClickPendingIntent()方法來(lái)完成的。例如,增加PendingIntent啟動(dòng)活動(dòng)來(lái)配置幻燈片的時(shí)間間隔,我們會(huì )添加以下代碼:
1 PendingIntent pendingIntent = PendingIntent.getActivity
2      (context, 0, configIntent,
3      PendingIntent.FLAG_UPDATE_CURRENT);
4   remoteView.
5      setOnClickPendingIntent(R.id.config, pendingIntent);
6
7
Working with PendingIntents
一個(gè)PendingIntent基本上是一個(gè)包裝對象,結合一個(gè)帶有目標的行動(dòng)intent,例如startActivity(),或broadcastIntent()。在前面的文章中,我們用PendingIntent,通過(guò)警報觸發(fā)App Widget來(lái)改變圖像顯示。如果你還記得,當不止一個(gè)App Widge存在時(shí),intent必須是獨一無(wú)二的,用于應用程序來(lái)區分不同App Widget的具體事例,(見(jiàn)圖1)。這種實(shí)現是通過(guò)包含App Widge的Uri區域標識,讓每個(gè)App Widget都有自己的時(shí)間間隔。
下面的代碼使用此相同的方法來(lái)創(chuàng )建configIntent的啟動(dòng)時(shí)間延遲配置行為。每一個(gè)App Widget將推出正確的appWidgetId。
1 Intent configIntent =
2      new Intent(context, ImagesWidgetConfiguration.class);
3   configIntent.putExtra(
4      AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
5   configIntent.setData(Uri.withAppendedPath(Uri.Parse
6      (ImagesWidgetProvider.URI_SCHEME + "://widget/id/"),
7      String.valueOf(appWidgetId)));
8
現在,配置按鈕可以工作了,我們可以添加其他按鈕欄的功能,諸如跳轉到下一張圖片。為了標記RemoteViews控件跳到下一張圖片,我們將需要回放到App Widget來(lái)改變狀態(tài)。
首先,它可能看起來(lái)狀態(tài)信息可以被編碼,就像Intent部分被按鈕處理程序發(fā)送。請記住, App Widget也將定期更新。intent將不會(huì )改變,也不會(huì )知道新的狀態(tài)。為了解決這個(gè)問(wèn)題,我們?yōu)锳pp Widget創(chuàng )造一個(gè)新的action類(lèi)型稱(chēng)為ACTION_WIDGET_CONTROL和附加命令給intent的Uri。然后,我們在SharedPreferences存儲App Widget的狀態(tài)。在實(shí)踐中,App Widget的實(shí)現通常有足夠簡(jiǎn)單的結構,以便沒(méi)有明顯的用戶(hù)延遲。
下面的輔助方法演示了PendingIntent的創(chuàng )意,來(lái)處理新的動(dòng)作類(lèi)型ACTION_WIDGET_CONTROL:
1 private PendingIntent makeControlPendingIntent
2      (Context context, String command, int appWidgetId) {
3      Intent active = new Intent();
4      active.setAction(ACTION_WIDGET_CONTROL);
5      active.putExtra(
6         AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
7      Uri data = Uri.withAppendedPath(
8         Uri.parse(URI_SCHEME + "://widget/id/#"+command),
9         String.valueOf(appWidgetId));
10      active.setData(data);
11      return(PendingIntent.getBroadcast(context,
12         0, active, PendingIntent.FLAG_UPDATE_CURRENT));
13   }
14
在上面的代碼塊創(chuàng )建了一個(gè)新的具有一個(gè)ACTION_WIDGET_CONTROL的Intent(是一個(gè)字符串)。接著(zhù),我們?yōu)锳pp Widget的唯一ID設置Intent Extra的值。唯一的Uri被編譯,融入所需的命令。這一intent將由App Widget主機是準備播放到Android系統。這將是由同一個(gè)廣播接收器處理,處理一般的App Widget命令。
App Widget將能夠獲得這樣的廣播在他的onReceive()方法:
1 else if (ACTION_WIDGET_CONTROL.equals(action)) {
2      final int appWidgetId = intent.getIntExtra(
3         AppWidgetManager.EXTRA_APPWIDGET_ID,
4         AppWidgetManager.INVALID_APPWIDGET_ID);
5      if (appWidgetId !=
6         AppWidgetManager.INVALID_APPWIDGET_ID) {
7         this.onHandleAction(
8            context, appWidgetId, intent.getData());
9   }
10
處理狀態(tài)
現在你了解用戶(hù)觸發(fā)一個(gè)Intent對象傳遞給App Widget,以及它如何被捕獲,可以處理的請求操作。包括:
1、獲取適當的RemoteViews實(shí)例
2、檢索和改變其狀態(tài)
3、將這些變化應用到RemoteViews控件
4、調用updateAppWidget()方法將變化應用到相應的App Widget。
處理這些任務(wù)的每個(gè)代碼在onHandleAction()和updateDisplayState()方法的實(shí)現,源代碼可以下載此文章。
每次RemoteViews控件更新,是從原來(lái)的布局重新創(chuàng )建。然而,現在單擊處理程序就可以使用?;贏(yíng)pp Widget當前的狀態(tài),所需的單擊處理程序是以相同的方式添加,就像我們早期添加的配置活動(dòng)。這些處理程序也可用于review在源代碼的updateDisplayState()方法中。
更新布局
為了實(shí)現該按鈕在整個(gè)部件的底部繪圖欄的效果,我們啟用了兩FrameLayout控件,外層FrameLayout -包括整個(gè)App Widget-包含ImageView顯示和另一個(gè)按鈕欄FrameLayout。第二個(gè)FrameLayout將用于在其父窗口的底部繪制,它包含了三個(gè)ImageButton控件的設置,播放/暫停和下一張圖片。按鈕欄FrameLayout可以通過(guò)簡(jiǎn)單地設置其可見(jiàn)性屬性從視圖中隱藏了。完整的布局文件(widget.xml)可以在本文提供的示例代碼中看到。
更新Android清單文件
最后,該系統將無(wú)法知道這樣可以處理我們的新的action類(lèi)型,除非我們更新AndroidManifest.xml文件,包括適當的intent過(guò)濾器:
1 <receiver android:name=".ImagesWidgetProvider">
2      <intent-filter>
3         <action android:name=
4            "com.mamlambo.ImagesWidget.WIDGET_CONTROL" />
5         <data android:scheme="images_widget" />
6      </intent-filter>
7   </receiver>
8
這種intent過(guò)濾器指示應用程序,以觀(guān)察播放帶有action 類(lèi)型為ACTION_WIDGET_CONTROL的 intent,其的值是“com.mamlambo.ImagesWidget.WIDGET_CONTROL”。
結論
App Widget增加了一個(gè)全新的領(lǐng)域,Android的用戶(hù)體驗。這些App Widget不需要是靜態(tài)的,但可以包含互動(dòng)功能以及對用戶(hù)的點(diǎn)擊事件作出反應等。在本文中,你學(xué)會(huì )了如何增加用戶(hù)互動(dòng)的Android App Widget。這樣做,你學(xué)會(huì )了如何使用PendingIntent 和RemoteViews交互。最后,你了解了intent機制的限制,以及如何工作,可以圍繞創(chuàng )造一個(gè)App Widget,而使其主屏幕更舒適。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Android 桌面組件【widget】初探
請問(wèn)怎樣禁止在widget中點(diǎn)數字自動(dòng)打開(kāi)撥號程序
Android桌面小插件的開(kāi)發(fā)詳解
Android開(kāi)發(fā)中的窗口小部件App Widgets
從零開(kāi)始創(chuàng )建一個(gè)Android主屏幕Widget
AppWidget的使用
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久