zoukankan      html  css  js  c++  java
  • Android 桌面部件

    桌面部件是一种利用AppWidget框架将应用程序的某个部件放在桌面。

     res/layout/digitalclock.xml

    Xml代码 复制代码 收藏代码
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <TextView xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:id="@+id/time"  
    4.     android:textSize="45px"  
    5.     android:textStyle="bold"  
    6.     android:textColor="#FFFFFFFF"  
    7.     android:background="@drawable/bg"  
    8.     android:layout_width="wrap_content"  
    9.     android:layout_height="wrap_content" />  
    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/time"
        android:textSize="45px"
        android:textStyle="bold"
        android:textColor="#FFFFFFFF"
        android:background="@drawable/bg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

     res/xml/est_appwidget.xml

    Xml代码 复制代码 收藏代码
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:minWidth="146dip"  
    4.     android:minHeight="72dip"  
    5.     android:updatePeriodMillis="1000"  
    6.     android:initialLayout="@layout/digitalclock" />  
    <?xml version="1.0" encoding="utf-8"?>
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
        android:minWidth="146dip"
        android:minHeight="72dip"
        android:updatePeriodMillis="1000"
        android:initialLayout="@layout/digitalclock" />

     AndroidManifest.xml

    Xml代码 复制代码 收藏代码
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    3.       package="com.studio.android.chp10.ex4"  
    4.       android:versionCode="1"  
    5.       android:versionName="1.0">  
    6.     <application android:icon="@drawable/icon"   
    7.                  android:label="@string/app_name">  
    8.         <receiver android:name="ESTTime"   
    9.                   android:label="@string/app_name">  
    10.             <intent-filter>  
    11.                 <action   
    12.                     android:name=  
    13.                         "android.appwidget.action.APPWIDGET_UPDATE" />  
    14.             </intent-filter>  
    15.             <meta-data android:name="android.appwidget.provider"   
    16.                 android:resource="@xml/est_appwidget" />  
    17.         </receiver>  
    18.         <service android:name=".ESTTime$UpdateService" />  
    19.     </application>  
    20.     <uses-sdk android:minSdkVersion="3" />  
    21. </manifest>   
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.studio.android.chp10.ex4"
          android:versionCode="1"
          android:versionName="1.0">
        <application android:icon="@drawable/icon" 
                     android:label="@string/app_name">
            <receiver android:name="ESTTime" 
                      android:label="@string/app_name">
                <intent-filter>
                    <action 
                        android:name=
                            "android.appwidget.action.APPWIDGET_UPDATE" />
                </intent-filter>
                <meta-data android:name="android.appwidget.provider" 
                    android:resource="@xml/est_appwidget" />
            </receiver>
            <service android:name=".ESTTime$UpdateService" />
        </application>
        <uses-sdk android:minSdkVersion="3" />
    </manifest> 
    Java代码 复制代码 收藏代码
    1. import android.app.Service;  
    2. import android.appwidget.AppWidgetManager;  
    3. import android.appwidget.AppWidgetProvider;  
    4. import android.content.ComponentName;  
    5. import android.content.Context;  
    6. import android.content.Intent;  
    7. import android.os.IBinder;  
    8. import android.text.format.Time;  
    9. import android.widget.RemoteViews;  
    10.   
    11. public class ESTTime extends AppWidgetProvider {  
    12.     @Override  
    13.     public void onUpdate(Context context,   
    14.             AppWidgetManager appWidgetManager,int[] appWidgetIds) {  
    15.         context.startService(new Intent(context,UpdateService.class));  
    16.     }  
    17.   
    18.     public static class UpdateService extends Service {  
    19.         @Override  
    20.         public void onStart(Intent intent, int startId) {  
    21.             Time estTime = new Time("EST");  
    22.             estTime.setToNow();  
    23.             //传入所在包包名和布局文件  
    24.             RemoteViews updateViews = new RemoteViews(getPackageName(),R.layout.digitalclock);  
    25.             updateViews.setTextViewText(R.id.time,  
    26.                     estTime.format("%H:%M"));  
    27.               
    28.             ComponentName thisWidget =   
    29.                 new ComponentName(this, ESTTime.class);  
    30.             AppWidgetManager manager =   
    31.                 AppWidgetManager.getInstance(this);  
    32.             manager.updateAppWidget(thisWidget, updateViews);  
    33.         }  
    34.   
    35.         @Override  
    36.         public IBinder onBind(Intent intent) {  
    37.             return null;  
    38.         }  
    39.     }  
    40. }  
    import android.app.Service;
    import android.appwidget.AppWidgetManager;
    import android.appwidget.AppWidgetProvider;
    import android.content.ComponentName;
    import android.content.Context;
    import android.content.Intent;
    import android.os.IBinder;
    import android.text.format.Time;
    import android.widget.RemoteViews;
    
    public class ESTTime extends AppWidgetProvider {
        @Override
        public void onUpdate(Context context, 
                AppWidgetManager appWidgetManager,int[] appWidgetIds) {
            context.startService(new Intent(context,UpdateService.class));
        }
    
        public static class UpdateService extends Service {
            @Override
            public void onStart(Intent intent, int startId) {
                Time estTime = new Time("EST");
                estTime.setToNow();
                //传入所在包包名和布局文件
                RemoteViews updateViews = new RemoteViews(getPackageName(),R.layout.digitalclock);
                updateViews.setTextViewText(R.id.time,
                        estTime.format("%H:%M"));
                
                ComponentName thisWidget = 
                    new ComponentName(this, ESTTime.class);
                AppWidgetManager manager = 
                    AppWidgetManager.getInstance(this);
                manager.updateAppWidget(thisWidget, updateViews);
            }
    
            @Override
            public IBinder onBind(Intent intent) {
                return null;
            }
        }
    }

     ESTTime.rar

  • 相关阅读:
    组件定义
    序列化代码
    Views 代码 导包
    DRF 初始化
    Urls 代码
    怎么用sublime text 3搭建python 的ide
    C语言位运算
    ZOJ 1104 Leaps Tall Buildings
    UVa 10739 String to Palindrome
    ZOJ 3563 Alice's Sequence II
  • 原文地址:https://www.cnblogs.com/xiaochao1234/p/4238788.html
Copyright © 2011-2022 走看看