Skip to content Skip to sidebar Skip to footer

How To Change The Image In App Widget Programmatically In Android

I design an android app widget in which two ImageView i want change the image both of the the ImageView when click on the image as well as call a method. Now i use RemoteView like

Solution 1:

Widget_Layout :

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:gravity="center"android:orientation="horizontal" ><ImageViewandroid:id="@+id/imageview1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/imageview1_image1"/><ImageViewandroid:id="@+id/imageview2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="2dp"android:src="@drawable/imageview2_image1" /></LinearLayout>

In your AppWidgetProvider :

publicclassSwitchWidgetextendsAppWidgetProvider {
publicstaticStringSWITCH_WIDGET_UPDATE="MainActivity.Switch";
publicstaticStringIMAGEVIEW1="imageview1";
publicstaticStringIMAGEVIEW2="imageview2";

@OverridepublicvoidonUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {
    // TODO Auto-generated method stubsuper.onUpdate(context, appWidgetManager, appWidgetIds);
    updateSwitch1(context, appWidgetManager, appWidgetIds[0]);
}

@OverridepublicvoidonReceive(Context context, Intent intent) {
    // TODO Auto-generated method stubsuper.onReceive(context, intent);
    Log.d("SWitch Widget", "On Receive");




    RemoteViews remoteViews;

    AppWidgetManagerappWidgetManager= AppWidgetManager
            .getInstance(context);

    if (SWITCH_WIDGET_UPDATE.equals(intent.getAction())) {
        Log.d("SWitch Widget", "Widget Choose");
        ComponentNamethisAppWidget=newComponentName(
                context.getPackageName(), getClass().getName());

        int ids[] = appWidgetManager.getAppWidgetIds(thisAppWidget);
        for (int appWidgetID : ids) {

                updateSwitch1(context, appWidgetManager, appWidgetID);
            } 

        }

    }
    if (intent.getAction().equals(IMAGEVIEW1)) {




            remoteViews = newRemoteViews(context.getPackageName(),
                    R.layout.widget1);
            if(flag){
            flag = flase           
                remoteViews.setImageViewResource(R.id.imageview1,
                        R.drawable.imageview1_image2);
                 startService(newIntent(this, YOUR_SERVICE_CLASS_NAME.class)); 
            } else {
            flag = true;
                remoteViews.setImageViewResource(R.id.imageview1,
                        R.drawable.imageview1_image1);
                startService(newIntent(this, YOUR_SERVICE_CLASS_NAME.class));
            }
            appWidgetManager.updateAppWidget(newComponentName(context,
                    SwitchWidget.class), remoteViews);


        }
        elseif (intent.getAction().equals(IMAGEVIEW2)) {

            remoteViews = newRemoteViews(context.getPackageName(),
                    R.layout.widget1);
            if(flag){
         flag = flase          
                remoteViews.setImageViewResource(R.id.imageview2,
                        R.drawable.imageview2_image2);
            } else {
        flag = true;
                remoteViews.setImageViewResource(R.id.imageview2,
                        R.drawable.imageview2_image1);
            }
            appWidgetManager.updateAppWidget(newComponentName(context,
                    SwitchWidget.class), remoteViews);

      }



privatevoidupdateSwitch1(Context context,
        AppWidgetManager appWidgetManager, int appWidgetId) {
    // TODO Auto-generated method stub
    Log.d("SWitch Widget", "Switch1");
    RemoteViewsremoteViews=newRemoteViews(context.getPackageName(),
            R.layout.widget1);



    Intent imageview1Intent= newIntent(context, SwitchWidget.class);
    wifiIntent.putExtra("ID", appWidgetId);
    wifiIntent.setAction(IMAGEVIEW1);
    PendingIntentimageview1PendingIntent= PendingIntent.getBroadcast(context,
            0, imageview1Intent,0);
    remoteViews.setOnClickPendingIntent(R.id.imageview1, imageview1PendingIntent);

    Intent imageview2Intent= newIntent(context, SwitchWidget.class);
    wifiIntent.putExtra("ID", appWidgetId);
    wifiIntent.setAction(IMAGEVIEW2);
    PendingIntentimageview2PendingIntent= PendingIntent.getBroadcast(context,
            0, imageview2Intent,0);
    remoteViews.setOnClickPendingIntent(R.id.imageview2, imageview2PendingIntent);

    appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
    }

  }

And also in your widget receiver add this two actions :

<actionandroid:name="imageview1" /><actionandroid:name="imageview2" />

Solution 2:

just call function to set images resources for it.

view1.setImageViewResources(R.id.img, IMGS[1])

then you got it

Post a Comment for "How To Change The Image In App Widget Programmatically In Android"