gpt4 book ai didi

android - 如何在android中以编程方式更改应用程序小部件中的图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:27:29 24 4
gpt4 key购买 nike

我设计了一个 android 应用程序小部件,其中有两个 ImageView 我想在单击图像时同时更改 ImageView 的图像并调用一个方法。现在我像这样使用 RemoteView

RemoteViews views1 = new RemoteViews(context.getPackageName(),
R.layout.activity_main);
views1.setOnClickPendingIntent(R.id.smsImageView, pendIntent1);
appWidgetManager.updateAppWidget(appWidgetIds, views1);

但我不知道如何更改 imageView 中的图像谢谢。

最佳答案

小部件_布局:

<?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>

在您的 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);
}

}

并且还在您的小部件接收器中添加这两个操作:

 <action android:name="imageview1" />
<action android:name="imageview2" />

关于android - 如何在android中以编程方式更改应用程序小部件中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14597911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com