我正在开发我的第一个应用小部件。一切都很好,除了一件事。我不知道,如何使用 Glide 在 RemoteViewsFactroy 的 getViewAt() 方法中将图像加载到 ImageView 中。我总是出错,因为我必须在 MainThread 遇到(AppWidgetTarget),但我不能从 RemoteViewsFactory 调用 new Handler(Looper.getMainLooper())。
问问题
1972 次
1 回答
2
Glide 通过提供AppWidgetTarget类对此提供支持。
在 中更新小部件时onUpdate()
,您创建一个新的 AppWidgetTarget,将RemoteViews
对象、图像视图的 id 和 appwidgetId 传递给它,然后以与应用程序中的图像视图几乎相同的方式调用 glide。
appWidgetTarget = new AppWidgetTarget( context, rv, R.id.custom_view_image, appWidgetIds );
Glide
.with( context.getApplicationContext() ) // safer!
.load( GlideExampleActivity.eatFoodyImages[3] )
.asBitmap()
.into( appWidgetTarget );
上面的示例代码取自这套精彩的滑翔教程。这些教程涵盖了使用 glide 的许多实际方面。
同样,glide 也提供了一个NotificationTarget目标类——它解决了同样的问题,但用于通知而不是 appWidgets。
于 2017-06-07T15:56:34.270 回答