private void sendImageRequest(boolean allowCachedResponse) { try { ImageRequest.Builder requestBuilder = new ImageRequest.Builder( getContext(), ImageRequest.getProfilePictureUri(profileId, queryWidth, queryHeight)); ImageRequest request = requestBuilder .setAllowCachedRedirects(allowCachedResponse) .setCallerTag(this) .setCallback( new ImageRequest.Callback() { @Override public void onCompleted(ImageResponse response) { processResponse(response); } }) .build(); // Make sure to cancel the old request before sending the new one to prevent // accidental cancellation of the new request. This could happen if the URL and // caller tag stayed the same. if (lastRequest != null) { ImageDownloader.cancelRequest(lastRequest); } lastRequest = request; ImageDownloader.downloadAsync(request); } catch (Exception e) { Logger.log(LoggingBehavior.REQUESTS, Log.ERROR, TAG, e.toString()); } }
private void updateUI() { if (!isAdded()) { return; } if (isSessionOpen()) { connectedStateLabel.setTextColor( getResources().getColor(R.color.com_facebook_usersettingsfragment_connected_text_color)); connectedStateLabel.setShadowLayer( 1f, 0f, -1f, getResources() .getColor(R.color.com_facebook_usersettingsfragment_connected_shadow_color)); if (user != null) { ImageRequest request = getImageRequest(); if (request != null) { URI requestUrl = request.getImageUri(); // Do we already have the right picture? If so, leave it alone. if (!requestUrl.equals(connectedStateLabel.getTag())) { if (user.getId().equals(userProfilePicID)) { connectedStateLabel.setCompoundDrawables(null, userProfilePic, null, null); connectedStateLabel.setTag(requestUrl); } else { ImageDownloader.downloadAsync(request); } } } connectedStateLabel.setText(user.getName()); } else { connectedStateLabel.setText( getResources().getString(R.string.com_facebook_usersettingsfragment_logged_in)); Drawable noProfilePic = getResources().getDrawable(R.drawable.com_facebook_profile_default_icon); noProfilePic.setBounds( 0, 0, getResources() .getDimensionPixelSize( R.dimen.com_facebook_usersettingsfragment_profile_picture_width), getResources() .getDimensionPixelSize( R.dimen.com_facebook_usersettingsfragment_profile_picture_height)); connectedStateLabel.setCompoundDrawables(null, noProfilePic, null, null); } } else { int textColor = getResources() .getColor(R.color.com_facebook_usersettingsfragment_not_connected_text_color); connectedStateLabel.setTextColor(textColor); connectedStateLabel.setShadowLayer(0f, 0f, 0f, textColor); connectedStateLabel.setText( getResources().getString(R.string.com_facebook_usersettingsfragment_not_logged_in)); connectedStateLabel.setCompoundDrawables(null, null, null, null); connectedStateLabel.setTag(null); } }
private void downloadProfilePicture( final String profileId, URI pictureURI, final ImageView imageView) { if (pictureURI == null) { return; } // If we don't have an imageView, we are pre-fetching this image to store in-memory because we // think the user might scroll to its corresponding list row. If we do have an imageView, we // only want to queue a download if the view's tag isn't already set to the URL (which would // mean // it's already got the correct picture). boolean prefetching = imageView == null; if (prefetching || !pictureURI.equals(imageView.getTag())) { if (!prefetching) { // Setting the tag to the profile ID indicates that we're currently downloading the // picture for this profile; we'll set it to the actual picture URL when complete. imageView.setTag(profileId); imageView.setImageResource(getDefaultPicture()); } ImageRequest.Builder builder = new ImageRequest.Builder(context.getApplicationContext(), pictureURI) .setCallerTag(this) .setCallback( new ImageRequest.Callback() { @Override public void onCompleted(ImageResponse response) { processImageResponse(response, profileId, imageView); } }); ImageRequest newRequest = builder.build(); pendingRequests.put(profileId, newRequest); ImageDownloader.downloadAsync(newRequest); } }