Cómo cambiar la imagen en el widget de la aplicación mediante programación en android
Diseñar un widget de la aplicación de Android en el que dos ImageView
quiero cambiar la imagen tanto de la ImageView
cuando haga clic en la imagen, así como llamar a un método. Ahora uso RemoteView
como este
RemoteViews views1 = new RemoteViews(context.getPackageName(), R.layout.activity_main); views1.setOnClickPendingIntent(R.id.smsImageView, pendIntent1); appWidgetManager.updateAppWidget(appWidgetIds, views1);
Pero no tengo idea de cómo cambiar la imagen en imageView
Gracias.
- Color del fondo del framelayout del remoteview
- ¿Cómo crear una notificación con una vista personalizada, pero con una apariencia nativa?
- ¿Es posible agregar a los oyentes onclick a las vistas remotas en android
- Android ListView en el widget onClick no funciona
- Notificaciones de Remote View de Android
- Cómo puedo cambiar el tamaño de texto en RemoteViews
- Android Widget con ListView que muestra sólo vistas de carga
- Notificación de Android con RemoteViews: actividad asociada con el diseño de RemoteViews
- RemoteView y setGravity
- Conserve la relación de aspecto de la imagen en el widget de aplicación GridView
- No se pudo expandir RemoteViews para: StatusBarNotification
- RemoteView no muestra botones en la notificación personalizada
- RemoteViews (Widget) tiene texto difuso cuando se utiliza un mapa de bits
Widget_Layout:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:orientation="horizontal" > <ImageView android:id="@+id/imageview1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/imageview1_image1"/> <ImageView android:id="@+id/imageview2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="2dp" android:src="@drawable/imageview2_image1" /> </LinearLayout>
En su AppWidgetProvider:
public class SwitchWidget extends AppWidgetProvider { public static String SWITCH_WIDGET_UPDATE = "MainActivity.Switch"; public static String IMAGEVIEW1 = "imageview1"; public static String IMAGEVIEW2 = "imageview2"; @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { // TODO Auto-generated method stub super.onUpdate(context, appWidgetManager, appWidgetIds); updateSwitch1(context, appWidgetManager, appWidgetIds[0]); } @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub super.onReceive(context, intent); Log.d("SWitch Widget", "On Receive"); RemoteViews remoteViews; AppWidgetManager appWidgetManager = AppWidgetManager .getInstance(context); if (SWITCH_WIDGET_UPDATE.equals(intent.getAction())) { Log.d("SWitch Widget", "Widget Choose"); ComponentName thisAppWidget = new ComponentName( context.getPackageName(), getClass().getName()); int ids[] = appWidgetManager.getAppWidgetIds(thisAppWidget); for (int appWidgetID : ids) { updateSwitch1(context, appWidgetManager, appWidgetID); } } } if (intent.getAction().equals(IMAGEVIEW1)) { remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget1); if(flag){ flag = flase remoteViews.setImageViewResource(R.id.imageview1, R.drawable.imageview1_image2); startService(new Intent(this, YOUR_SERVICE_CLASS_NAME.class)); } else { flag = true; remoteViews.setImageViewResource(R.id.imageview1, R.drawable.imageview1_image1); startService(new Intent(this, YOUR_SERVICE_CLASS_NAME.class)); } appWidgetManager.updateAppWidget(new ComponentName(context, SwitchWidget.class), remoteViews); } else if (intent.getAction().equals(IMAGEVIEW2)) { remoteViews = new RemoteViews(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(new ComponentName(context, SwitchWidget.class), remoteViews); } private void updateSwitch1(Context context, AppWidgetManager appWidgetManager, int appWidgetId) { // TODO Auto-generated method stub Log.d("SWitch Widget", "Switch1"); RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget1); Intent imageview1Intent= new Intent(context, SwitchWidget.class); wifiIntent.putExtra("ID", appWidgetId); wifiIntent.setAction(IMAGEVIEW1); PendingIntent imageview1PendingIntent = PendingIntent.getBroadcast(context, 0, imageview1Intent,0); remoteViews.setOnClickPendingIntent(R.id.imageview1, imageview1PendingIntent); Intent imageview2Intent= new Intent(context, SwitchWidget.class); wifiIntent.putExtra("ID", appWidgetId); wifiIntent.setAction(IMAGEVIEW2); PendingIntent imageview2PendingIntent = PendingIntent.getBroadcast(context, 0, imageview2Intent,0); remoteViews.setOnClickPendingIntent(R.id.imageview2, imageview2PendingIntent); appWidgetManager.updateAppWidget(appWidgetId, remoteViews); } }
Y también en tu receptor de widgets agrega estas dos acciones:
<action android:name="imageview1" /> <action android:name="imageview2" />
Sólo tiene que llamar a la función para establecer recursos de imágenes para ello.
view1.setImageViewResources(R.id.img, IMGS[1])
Entonces lo tienes
- Jenkins – Utiliza Genymotion VM en lugar de Android Emulator
- Tablas de ActionBar con la biblioteca de soporte