5

我正在开发我的第一个应用小部件。一切都很好,除了一件事。我不知道,如何使用 Glide 在 RemoteViewsFactroy 的 getViewAt() 方法中将图像加载到 ImageView 中。我总是出错,因为我必须在 MainThread 遇到(AppWidgetTarget),但我不能从 RemoteViewsFactory 调用 new Handler(Looper.getMainLooper())。

4

1 回答 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 回答