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

Android Widget之桌面組件App Widget案例

移動開發
Android Widget之桌面組件App Widget案例是本文要介紹的內容,主要Android Widget組件的學習教程,具體內容來看本文詳解。

Android Widget之桌面組件App Widget案例是本文要介紹的內容,主要Android Widget組件的學習教程,具體內容來看本文詳解。

模擬一個案例:把AppWidget添加到桌面后,點擊AppWidget后AppWidget文本會輪回改變

main.xml布局文件

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:orientation="vertical" android:layout_width="fill_parent" 
  4.     android:layout_height="fill_parent"> 
  5.     <TextView android:id="@+id/tv" 
  6.         android:layout_width="fill_parent" 
  7.         android:layout_height="wrap_content"   
  8.         android:text="程序入口"   
  9.         android:textSize="50dip"/> 
  10. </LinearLayout> 
  11.  
  12. res/xml/my_appwidget.xml布局文件  
  13.  
  14. <?xml version="1.0" encoding="utf-8"?> 
  15. <appwidget-provider 
  16.     xmlns:android="http://schemas.android.com/apk/res/android" 
  17.     android:minWidth="120dp"   
  18.     android:minHeight="60dp" 
  19.     android:updatePeriodMillis="1000" 
  20.     android:initialLayout="@layout/main"> 
  21. </appwidget-provider> 

清單文件

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     package="com.ljq.activity" android:versionCode="1" 
  4.     android:versionName="1.0"> 
  5.     <application android:icon="@drawable/icon" 
  6.         android:label="@string/app_name"> 
  7.         <receiver android:name=".TestActivity"> 
  8.             <meta-data android:name="android.appwidget.provider" 
  9.                 android:resource="@xml/my_appwidget"> 
  10.             </meta-data> 
  11.             <intent-filter> 
  12.                 <action android:name="COM.LJQ.ACTION.WIDGET.CLICK"></action> 
  13.                 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
  14.             </intent-filter> 
  15.         </receiver> 
  16.     </application> 
  17.     <uses-sdk android:minSdkVersion="7" /> 
  18.  
  19. </manifest> 

變量類UtilTool:用來控件文本改變

  1. package com.ljq.activity;  
  2.  
  3. public class UtilTool {  
  4.     public static boolean isChange=true;  
  5. }  
  6.  
  7. TestActivity類,繼承自AppWidgetProvider  
  8.  
  9. package com.ljq.activity;  
  10.  
  11. import android.app.PendingIntent;  
  12. import android.appwidget.AppWidgetManager;  
  13. import android.appwidget.AppWidgetProvider;  
  14. import android.content.ComponentName;  
  15. import android.content.Context;  
  16. import android.content.Intent;  
  17. import android.widget.RemoteViews;  
  18.  
  19. public class TestActivity extends AppWidgetProvider {  
  20.     // 自定義一個Action名  
  21.     private static final String ACTION_CLICK_NAME = "COM.LJQ.ACTION.WIDGET.CLICK";  
  22.     private RemoteViews rv;  
  23.  
  24.     @Override  
  25.     public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {  
  26.         System.out.println("onUpdate");  
  27.         //獲取R.layout.main布局,通過類RemoteViews對布局R.layout.main里的控件進行操作  
  28.         /*rv = new RemoteViews(context.getPackageName(), R.layout.main);  
  29.         Intent intentClick = new Intent(ACTION_CLICK_NAME);  
  30.         PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intentClick, 0);  
  31.         rv.setOnClickPendingIntent(R.id.tv, pendingIntent);  
  32.           
  33.         ComponentName cmp = new ComponentName(context, TestActivity.class);  
  34.         AppWidgetManager myAppWidgetManager = AppWidgetManager.getInstance(context);  
  35.         myAppWidgetManager.updateAppWidget(cmp, rv);*/  
  36.         final int N = appWidgetIds.length;  
  37.         for (int i = 0; i < N; i++) {  
  38.             int appWidgetId = appWidgetIds[i];  
  39.             updateAppWidget(context, appWidgetManager, appWidgetId);  
  40.         }  
  41.       
  42.     }  
  43.       
  44.     //AppWidget生命周期: 每接收一次,廣播執行一次為一個生命周期結束。  
  45.     //也就是說在重寫AppWidgetProvider類里面聲明全局變量做狀態判斷,  
  46.     //每次狀態改變AppWidgetProvider再接收第二次廣播時即為你重新初始化也就是說重新實例化了一次AppWidgetProvider。  
  47.     //今天我因為在里面放了一個boolean值初始化為true,觀察調試看到每次進入都為TRUE故你在設置桌面組件時,  
  48.     //全局變量把它聲明在另外一個實體類用來判斷是沒問題的,切忌放在本類。  
  49.     @Override  
  50.     public void onReceive(Context context, Intent intent) {  
  51.         System.out.println("onReceive");  
  52.         if (rv == null) {  
  53.             rv = new RemoteViews(context.getPackageName(), R.layout.main);  
  54.         }  
  55.         if (intent.getAction().equals(ACTION_CLICK_NAME)) {  
  56.             if (UtilTool.isChange) {  
  57.                 rv.setTextViewText(R.id.tv, "abc");  
  58.             } else {  
  59.                 rv.setTextViewText(R.id.tv, "123");  
  60.             }  
  61.             UtilTool.isChange = !UtilTool.isChange;  
  62.             AppWidgetManager appWidgetManger = AppWidgetManager.getInstance(context);  
  63.             int[] appIds = appWidgetManger.getAppWidgetIds(new ComponentName(context, TestActivity.class));  
  64.             appWidgetManger.updateAppWidget(appIds, rv);  
  65.         }else{  
  66.             super.onReceive(context, intent);  
  67.         }  
  68.           
  69.     }  
  70.       
  71.     private void updateAppWidget(Context context,  
  72.             AppWidgetManager appWidgeManger, int appWidgetId) {  
  73.         rv = new RemoteViews(context.getPackageName(), R.layout.main);  
  74.         Intent intentClick = new Intent();  
  75.         intentClick.setAction(ACTION_CLICK_NAME);  
  76.         PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intentClick, 0);  
  77.         rv.setOnClickPendingIntent(R.id.tv, pendingIntent);  
  78.         appWidgeManger.updateAppWidget(appWidgetId, rv);  
  79.     }  

小結:Android Widget之桌面組件App Widget案例的內容介紹完了,希望通過Android Widget組件的應用內容的學習能對你有所幫助。

責任編輯:zhaolei 來源: 博客園
相關推薦

2011-09-07 10:58:07

Android wid

2011-09-08 15:51:33

Android Wid組件

2011-09-08 15:29:50

Android Wid界面GridView

2011-02-28 13:04:27

RelativeLayAndroid Wid

2011-09-08 15:40:45

Android Wid組件

2010-09-15 15:06:34

Google VoicWidgetAndroid

2011-09-09 13:23:17

Widget

2011-09-08 11:13:29

Widget

2011-09-09 20:14:58

Android Wid

2011-05-27 16:57:13

Android widget

2011-09-08 15:07:10

Android Wid搭建

2010-07-13 09:02:19

Widget開發

2011-03-14 09:55:25

AndroidWidget

2011-09-09 10:19:13

2011-09-13 15:35:40

Widget

2010-05-13 10:45:38

2011-09-07 13:18:40

Android Wid

2011-09-07 17:54:40

Android Wid開發

2010-01-25 14:04:17

Android Wid

2011-09-07 14:01:41

Android Wid實例
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人在线免费视频 | 婷婷精品 | 国产精品视频一二三区 | 久久精品一区 | 91久久久久久久久 | 亚洲成人精品一区 | 国产欧美日韩在线一区 | 九九九视频精品 | 欧美日韩网站 | 亚洲精品久久久久中文字幕二区 | 午夜天堂 | 欧美三级电影在线播放 | 色播av| 免费国产视频 | 亚洲人成人一区二区在线观看 | 国产日韩欧美在线观看 | 在线观看视频91 | 亚洲日本中文 | 999精品网| 日本一级淫片免费啪啪3 | 久久精品影视 | 欧美精品一区三区 | 国产一区久久久 | 国产精品色综合 | 日本免费一区二区三区四区 | 亚洲女人的天堂 | 成人在线看片 | 欧美日韩免费一区二区三区 | 久久久久久亚洲精品 | 国产丝袜一区二区三区免费视频 | 色资源在线视频 | 欧美一区二区在线免费观看 | 免费看黄色小视频 | 欧美日韩国产一区二区三区不卡 | 久久精品一区二 | 久久久久久中文字幕 | 国产乱码精品一区二三赶尸艳谈 | 久久久婷 | 国产亚洲精品精品国产亚洲综合 | 欧美色图另类 | 国产精品一区二区av |