gpt4 book ai didi

android - 以编程方式更改Android小部件ImageButton的src图像

转载 作者:行者123 更新时间:2023-11-29 16:02:13 24 4
gpt4 key购买 nike

我正在开发一个带有主屏幕小部件的 Android 应用程序,它是一个 imageButton,我希望按钮的图像在按下后发生变化。我曾尝试在 xml 文件中使用选择器来更改按钮的图像,但它仅在按下时更改它,但在释放时返回。

我希望它在按下后更改图像,并且当执行 WidgetProvider 中的代码时,它将图像更改回默认图像。

我尝试以编程方式执行此操作(在 onRecieve() 方法中),我想它应该与 RemoteViews 相关,但无论我尝试什么,它都不起作用。

有人可以帮我解决这个问题吗?我看到很多人问这个问题,但大多数帖子要么太旧,要么解决方案不适合我。

谢谢你:)

最佳答案

通常你会将图像设置在 ImageButton 的表面上使用 setImageResource方法( ImageButton 继承自 ImageView ),但该方法不适用于 RemoteViews .

RemoteViews提供相应的setImageViewResource执行所需操作的方法(以及 setImageViewBitmapsetImageViewUri,具体取决于您希望如何提供图像数据)。

设置图像的代码(比如,在您的 BroadcastReceiver 的 onReceive 方法中)看起来像这样:

@Override
public void onReceive(Context context, Intent intent) {
int appWidgetId = intent.getIntExtra("appWidgetId", -1);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.main);
views.setImageViewResource(R.id.imageButton1, R.drawable.awesome_image);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
appWidgetManager.updateAppWidget(appWidgetId, views);
}

请注意,上面的代码假定您已经使用键“appWidgetId”将要操作的小部件的 ID 添加到广播 Intent 中(包装在用户单击 ImageButton 时发送的 PendingIntent 中)。您很可能希望在 AppWidgetProvider 的 onUpdate 方法中执行此操作,如下所示:

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for (int i = 0; i < appWidgetIds.length; i++) {
int appWidgetId = appWidgetIds[i];
Intent intent = new Intent ("YourActionHere");
intent.putExtra("appWidgetId", appWidgetId);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, i, intent, 0);

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.main);
views.setImageViewResource(R.id.imageButton1, R.drawable.initial_image);

views.setOnClickPendingIntent(R.id.imageButton1, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}

关于android - 以编程方式更改Android小部件ImageButton的src图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23228855/

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