@SuppressWarnings("unchecked") // addListener always returns the same instance. @SuppressLint("CheckResult") private void initRequestListeners(List<RequestListener<Object>> requestListeners) { for (RequestListener<Object> listener : requestListeners) { addListener((RequestListener<TranscodeType>) listener); } }
/** * Sets a {@link RequestListener} to monitor the resource load. It's best to create a single * instance of an exception handler per type of request (usually activity/fragment) rather than * pass one in per request to avoid some redundant object allocation. * * <p>Subsequent calls to this method will replace previously set listeners. To set multiple * listeners, use {@link #addListener} instead. * * @param requestListener The request listener to use. * @return This request builder. */ @NonNull @CheckResult @SuppressWarnings("unchecked") public RequestBuilder<TranscodeType> listener( @Nullable RequestListener<TranscodeType> requestListener) { this.requestListeners = null; return addListener(requestListener); }
@Test public void testMultipleRequestListeners() { getNullModelRequest().addListener(listener1).addListener(listener2).into(target); verify(requestManager).track(any(Target.class), requestCaptor.capture()); requestCaptor.getValue().onResourceReady(new SimpleResource<>(new Object()), DataSource.LOCAL); verify(listener1) .onResourceReady( any(), any(), isA(Target.class), isA(DataSource.class), anyBoolean()); verify(listener2) .onResourceReady( any(), any(), isA(Target.class), isA(DataSource.class), anyBoolean()); }
@Test public void testListenerApiOverridesListeners() { getNullModelRequest().addListener(listener1).listener(listener2).into(target); verify(requestManager).track(any(Target.class), requestCaptor.capture()); requestCaptor.getValue().onResourceReady(new SimpleResource<>(new Object()), DataSource.LOCAL); // The #listener API removes any previous listeners, so the first listener should not be called. verify(listener1, never()) .onResourceReady( any(), any(), isA(Target.class), isA(DataSource.class), anyBoolean()); verify(listener2) .onResourceReady( any(), any(), isA(Target.class), isA(DataSource.class), anyBoolean()); }
private void initView() { jinyunView = findViewById(R.id.sv_bg); iv_bg = findViewById(R.id.iv_bg); ivShowPic = findViewById(R.id.ivShowPic); Glide.with(MainActivity.this).asBitmap().addListener(new RequestListener<Bitmap>() { @Override public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) { return false; } @Override public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) { jinyunView.setmPaintColor(ImageUtil.getColor(resource, 3).getRgb()); return false; } }).load(R.mipmap.ic_show).into(ivShowPic); ivShowPic.setClipToOutline(true); ivShowPic.setOutlineProvider(ImageUtil.getOutline(true, 20, 1)); objectAnimator = ObjectAnimator.ofFloat(ivShowPic, "rotation", 0f, 360f); objectAnimator.setDuration(20 * 1000); objectAnimator.setRepeatMode(ValueAnimator.RESTART); objectAnimator.setInterpolator(new LinearInterpolator()); objectAnimator.setRepeatCount(-1); objectAnimator.start(); }