天天看點

Android基礎之App Widget建立

簡單的說一下怎麼建立App Widget以及點選進入相應的Activity。

建立一個App Widget需要四個步驟:

一、在AndroidManifest中配置

在AndroidManifest中配置App Widget其實和寫廣播接收器一樣:

<receiver android:name=".MyWidget">
            <intent-filter >
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
            </intent-filter>
            <meta-data 
                android:name="android.appwidget.provider" 
                android:resource="@xml/widget_info">  //配置檔案名
            </meta-data>
 </receiver>
           

二、添加App Widget的配置資訊

在/res/xml檔案夾下建立一個widget_info.xml的配置檔案:

<?xml version="1.0" encoding="UTF-8"?>
<appwidget-provider
    android:minWidth="294dp" 
    android:minHeight="72dip"     
    android:initialLayout="@layout/widget"
    xmlns:android="http://schemas.android.com/apk/res/android" />
           

三、添加App Widget布局

就是在桌面顯示你widget的布局,和普通布局一樣在/res/layout/建立widget.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="horizontal" 
	android:layout_width="294dp"
	android:layout_height="72dp" 
	android:background="@drawable/date_bg_gold"
	android:gravity="left|center_vertical">
        
	<TextView
	    android:layout_height="fill_parent" 
	    android:layout_width="fill_parent" 
	    android:id="@+id/textName" 
        android:textAppearance="?android:attr/textAppearanceLarge" 
        android:gravity="center"> 
    </TextView>
	
</LinearLayout>
           

四、添加App Widget的類

package com.lrx.xiao_media;

import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;

public class MyWidget extends AppWidgetProvider {
	
	@Override
	public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
            RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.widget);            
            String name = "進入我的Media";
            remoteView.setTextViewText(R.id.textName, name);
            Intent intentClick = new Intent(context, MainActivity.class);         //點選啟動MainActivity
            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intentClick, 0);
            remoteView.setOnClickPendingIntent(R.id.textName, pendingIntent);     //點選監聽
            appWidgetManager.updateAppWidget(appWidgetIds, remoteView); 
     }
}
           

可見,建立一個widget其實很簡單,比我們正常的Activity隻多了一個配置檔案,其中在類中getActivity可以換成getService啟動一個Service,還需要注意的一點是重新整理widget時間,屬性android:updatePeriodMillis表示更新頻率,機關毫秒,但是有時候不重新整理是因為android為了省電小于30分鐘的重新整理都會預設最小30分鐘,是以需要我們啟動一個Service去重新整理時間,記得最好單獨起一個線程去控制時間。

繼續閱讀