public static void loadImage(ImageView view, String imageUrl, GlideRoundedCornersTransformation.CornerType cornerType) {
RequestOptions requestOptionsTransform = RequestOptions.bitmapTransform(
new GlideRoundedCornersTransformation(view.getContext(), (int) AndroidUtil.dpToPx(view.getContext(),
view.getContext().getResources().getInteger(R.integer.image_rounded_corner_radius_dp)),
0, cornerType));
Glide.with(view.getContext())
.load(imageUrl)
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
Glide.with(view.getContext()).load(R.drawable.default_image)
.apply(requestOptionsTransform)
.into(view));
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
view.setImageDrawable(resource);
return true;
}
})
.apply(requestOptionsTransform)
.into(view);
}
但是我得到了这个错误:
FATAL EXCEPTION: main
Process: com.myproject.android.customer.debug, PID: 25205
java.lang.IllegalStateException: You can't start or clear loads in RequestListener or Target callbacks. If you must do so, consider posting your into() or clear() calls to the main thread using a Handler instead.
at com.bumptech.glide.request.SingleRequest.assertNotCallingCallbacks(SingleRequest.java:279)
at com.bumptech.glide.request.SingleRequest.clear(SingleRequest.java:296)
at com.bumptech.glide.manager.RequestTracker.clearRemoveAndRecycle(RequestTracker.java:62)
at com.bumptech.glide.RequestManager.untrack(RequestManager.java:443)
at com.bumptech.glide.RequestManager.untrackOrDelegate(RequestManager.java:430)
at com.bumptech.glide.RequestManager.clear(RequestManager.java:418)
at com.bumptech.glide.RequestBuilder.into(RequestBuilder.java:380)
at com.bumptech.glide.RequestBuilder.into(RequestBuilder.java:432)
at com.myproject.android.customer.util.CommonUtil$1.onLoadFailed(CommonUtil.java:69)
at com.bumptech.glide.request.SingleRequest.onLoadFailed(SingleRequest.java:592)
at com.bumptech.glide.request.SingleRequest.onLoadFailed(SingleRequest.java:572)
at com.bumptech.glide.load.engine.EngineJob.handleExceptionOnMainThread(EngineJob.java:259)
at com.bumptech.glide.load.engine.EngineJob$MainThreadCallback.handleMessage(EngineJob.java:291)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7377)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:469)
我找到解决办法了。使用滑翔4.3。
这里的代码是:
public static void loadImage(ImageView view, String imageUrl, GlideRoundedCornersTransformation.CornerType cornerType) {
RequestOptions requestOptionsTransform = RequestOptions.bitmapTransform(
new GlideRoundedCornersTransformation(view.getContext(), (int) AndroidUtil.dpToPx(view.getContext(),
view.getContext().getResources().getInteger(R.integer.image_rounded_corner_radius_dp)),
0, cornerType));
Glide.with(view.getContext())
.load(imageUrl)
.error(Glide.with(view.getContext())
.load(R.drawable.default_image))
.apply(requestOptionsTransform)
.into(view);
}
我从https://bumptech.github.io/glide/doc/debugging.html#you-cant-start-or-clear-loads-in-requestlistener-or-target-callbacks中获得帮助
这是一个扩展Thread并实现run()函数的类: 现在在主活动中的一个按钮中,我有这样的代码: 据我所知,这应该将runnable放在目标线程的消息队列中,并且线程(不是UI线程)将在可能的情况下运行它。但此代码会阻止 UI。为什么会发生这种情况?如您所见,我将目标线程的循环器发送到处理程序构造函数,并且处理程序应使用该循环器而不是主线程的循环程序。
问题内容: 我正在尝试为应用程序创建登录名。但是我有一个问题。 这是我的代码: Android studio表示必须在istructions的UI线程中调用该方法:以及 可能的解决方案? 问题答案: 尝试将您的值传递给 via 方法:
我有客户端代码运行在javascript试图发送html内容到自定义处理程序。 客户端代码如下所示: 处理程序代码为: 问题在于,使用Chrome浏览器时,处理程序获取的消息(txt_内容)不完整。我得到的字符串的最大长度是:524288 当我在资源管理器中运行时,我会得到完整的消息(长度=567130)。 我在这里看到了一个类似的问题,但没有得到回答(设置maxAllowedContentLen
问题内容: 方法getText()必须从UI线程调用,请提供帮助。我是android studio的初学者,可以在网上找到这些代码,但无法弄清楚,我真的很感激。 问题答案: 在其UI线程而非后台线程中获取值。
问题内容: 我有一种写入日志文件的方法。如果文件存在,则应将其追加到文件中,否则,我希望它创建一个新文件。 我要检查是否可以创建文件。文件是一个java.io.File对象。createNewFile引发IOException:没有此类文件或目录。自从我几周前编写此方法以来,该方法一直非常有效,直到最近才开始执行此方法,尽管我不知道自己可以更改什么。我检查了该目录是否存在,并且我拥有该目录的写权限
问题内容: 我的JavaScript中有一个计时器,该计时器需要模拟时间流逝后单击链接以转到另一个页面。为此,我使用了jQuery的功能。我已经用过了,也可以使用,并且我可以使这三个都按预期工作。 我观察到一些奇怪的行为,并且试图了解发生了什么以及为什么。 我在这个问题中描述的所有内容都使用了Firefox,但是我也对其他浏览器将如何使用它感兴趣。 如果我没有使用过或未设置事件处理程序,则调用似乎