android AppWidgetProvider使用

来源:互联网 发布:四大名著排名 知乎 编辑:程序博客网 时间:2024/05/19 13:17



以项目中的天气为例


1、先有个后台服务获取到天气信息,去更新主界面的天气数据信息

   private static WeatherWidget mAppWidgetProvider = WeatherWidget.getInstance();


public static PendingIntent getActivityIntent(Context context) {Intent timeAndWeather = new Intent(context, TimeAndWeather.class);timeAndWeather.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);timeAndWeather.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);Bundle bundle = new Bundle();bundle.putString(Constants.INTENT_VARIABLE_WIDGET_CITY, finalCityName);timeAndWeather.putExtras(bundle);return PendingIntent.getActivity(context, 0, timeAndWeather, PendingIntent.FLAG_UPDATE_CURRENT);}



mAppWidgetProvider.updateWidgetWeather(context, city,tempLow,tempHigh, condition,srcId,wind, outTemp,showContent ,weatherActivityIntent);

public class WeatherWidget extends AppWidgetProvider {

void updateWidgetWeather(Context context, String city, String tempLow,String tempHigh, String condition, int srcId, String wind,String outTemp,int showContent, PendingIntent weatherActivityIntent) {                ......final Resources res = context.getResources();RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.widget);remoteViews.setTextViewText(R.id.weather_city_condition, city);remoteViews.setTextViewText(R.id.weather_wind_condition, wind);remoteViews.setTextViewText(R.id.weather_range_condition, condition+ "  " + tempHigh + " / " + tempLow);pushUpdate(context, null, remoteViews);}

private void pushUpdate(Context context, int[] appWidgetIds,RemoteViews views) {// Update specific list of appWidgetIds if given, otherwise default to// allfinal AppWidgetManager gm = AppWidgetManager.getInstance(context);gm.updateAppWidget(THIS_APPWIDGET, views);}static final ComponentName THIS_APPWIDGET = new ComponentName("cn.com.xxx.weather", "cn.com.xxx.weather.widget.WeatherWidget");

        <receiver            android:name=".widget.WeatherWidget"            android:enabled="true"            android:exported="true"            android:icon="@drawable/icon" >            <intent-filter>                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />            </intent-filter>            <meta-data                android:name="android.appwidget.provider"                android:resource="@xml/widget_provider" />        </receiver>


widget_provider.xml

<?xml version="1.0" encoding="utf-8"?><appwidget-providerxmlns:android="http://schemas.android.com/apk/res/android"android:minWidth="394dip"android:minHeight="177dip"        android:updatePeriodMillis="60000"android:initialLayout="@layout/widget"></appwidget-provider>

R.layout.widget

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/widget"    android:layout_width="410dip"    android:layout_height="match_parent"    android:layout_marginLeft="25dip" >    <ImageView        android:id="@+id/weather_icon"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginLeft="155dip"        android:src="@drawable/leizhenyu" />    <include        android:id="@+id/out_temperature"        layout="@layout/out_temperature"        android:visibility="invisible"/>    <TextView        android:id="@+id/weather_city_condition"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_below="@+id/out_temperature"        android:layout_marginTop="30dip"        android:textColor="#ffffff"        android:textSize="24sp" />    <TextView        android:id="@+id/weather_range_condition"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_below="@+id/weather_city_condition"        android:layout_marginTop="10dip"        android:textColor="#ffffff"        android:textSize="20sp" />    <TextView        android:id="@+id/weather_wind_condition"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_below="@+id/weather_range_condition"        android:layout_marginTop="8dip"        android:textColor="#ffffff"        android:textSize="20sp" />    <!-- android:visibility="gone" --></RelativeLayout>


0 0
原创粉丝点击