use of androidx.annotation.Nullable in project Douya by DreaminginCodeZH.
the class GalleryAdapter method loadImageForPosition.
private void loadImageForPosition(int position, ViewHolder holder) {
ViewUtils.fadeIn(holder.progress);
GlideApp.with(holder.progress.getContext()).downloadOnlyDefaultPriority().load(mImageList.get(position)).progressListener(new ProgressListener() {
@Override
public void onProgress(long bytesRead, long contentLength, boolean done) {
int progress = Math.round((float) bytesRead / contentLength * holder.progress.getMax());
ProgressBarCompat.setProgress(holder.progress, progress, true);
}
}).listener(new RequestListener<File>() {
@Override
public boolean onResourceReady(File resource, Object model, Target<File> target, DataSource dataSource, boolean isFirstResource) {
return false;
}
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<File> target, boolean isFirstResource) {
showError(e, R.string.gallery_network_error, holder);
return false;
}
}).into(new SimpleTarget<File>() {
@Override
public void onResourceReady(File file, Transition<? super File> transition) {
mFileMap.put(position, file);
if (mListener != null) {
mListener.onFileDownloaded(position);
}
holder.progress.setIndeterminate(true);
loadImageFromFile(file, holder);
}
});
}
use of androidx.annotation.Nullable in project AntennaPod by AntennaPod.
the class OnlineFeedViewActivity method doParseFeed.
/**
* Try to parse the feed.
* @return The FeedHandlerResult if successful.
* Null if unsuccessful but we started another attempt.
* @throws Exception If unsuccessful but we do not know a resolution.
*/
@Nullable
private FeedHandlerResult doParseFeed() throws Exception {
FeedHandler handler = new FeedHandler();
try {
return handler.parseFeed(feed);
} catch (UnsupportedFeedtypeException e) {
Log.d(TAG, "Unsupported feed type detected");
if ("html".equalsIgnoreCase(e.getRootElement())) {
boolean dialogShown = showFeedDiscoveryDialog(new File(feed.getFile_url()), feed.getDownload_url());
if (dialogShown) {
// Should not display an error message
return null;
} else {
throw new UnsupportedFeedtypeException(getString(R.string.download_error_unsupported_type_html));
}
} else {
throw e;
}
} catch (Exception e) {
Log.e(TAG, Log.getStackTraceString(e));
throw e;
} finally {
boolean rc = new File(feed.getFile_url()).delete();
Log.d(TAG, "Deleted feed source file. Result: " + rc);
}
}
use of androidx.annotation.Nullable in project AntennaPod by AntennaPod.
the class OnlineFeedViewActivity method showFeedInformation.
/**
* Called when feed parsed successfully.
* This method is executed on the GUI thread.
*/
private void showFeedInformation(final Feed feed, Map<String, String> alternateFeedUrls) {
viewBinding.progressBar.setVisibility(View.GONE);
viewBinding.feedDisplayContainer.setVisibility(View.VISIBLE);
if (isFeedFoundBySearch) {
int resId = R.string.no_feed_url_podcast_found_by_search;
Snackbar.make(findViewById(android.R.id.content), resId, Snackbar.LENGTH_LONG).show();
}
this.feed = feed;
this.selectedDownloadUrl = feed.getDownload_url();
viewBinding.backgroundImage.setColorFilter(new LightingColorFilter(0xff828282, 0x000000));
View header = View.inflate(this, R.layout.onlinefeedview_header, null);
viewBinding.listView.addHeaderView(header);
viewBinding.listView.setSelector(android.R.color.transparent);
viewBinding.listView.setAdapter(new FeedItemlistDescriptionAdapter(this, 0, feed.getItems()));
TextView description = header.findViewById(R.id.txtvDescription);
if (StringUtils.isNotBlank(feed.getImageUrl())) {
Glide.with(this).load(feed.getImageUrl()).apply(new RequestOptions().placeholder(R.color.light_gray).error(R.color.light_gray).diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY).fitCenter().dontAnimate()).into(viewBinding.coverImage);
Glide.with(this).load(feed.getImageUrl()).apply(new RequestOptions().placeholder(R.color.image_readability_tint).error(R.color.image_readability_tint).diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY).transform(new FastBlurTransformation()).dontAnimate()).into(viewBinding.backgroundImage);
}
viewBinding.titleLabel.setText(feed.getTitle());
viewBinding.authorLabel.setText(feed.getAuthor());
description.setText(HtmlToPlainText.getPlainText(feed.getDescription()));
viewBinding.subscribeButton.setOnClickListener(v -> {
if (feedInFeedlist(feed)) {
openFeed();
} else {
Feed f = new Feed(selectedDownloadUrl, null, feed.getTitle());
f.setPreferences(feed.getPreferences());
this.feed = f;
DownloadService.download(this, false, DownloadRequestCreator.create(f).build());
didPressSubscribe = true;
handleUpdatedFeedStatus(feed);
}
});
viewBinding.stopPreviewButton.setOnClickListener(v -> {
PlaybackPreferences.writeNoMediaPlaying();
IntentUtils.sendLocalBroadcast(this, PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE);
});
if (UserPreferences.isEnableAutodownload()) {
SharedPreferences preferences = getSharedPreferences(PREFS, MODE_PRIVATE);
viewBinding.autoDownloadCheckBox.setChecked(preferences.getBoolean(PREF_LAST_AUTO_DOWNLOAD, true));
}
final int MAX_LINES_COLLAPSED = 10;
description.setMaxLines(MAX_LINES_COLLAPSED);
description.setOnClickListener(v -> {
if (description.getMaxLines() > MAX_LINES_COLLAPSED) {
description.setMaxLines(MAX_LINES_COLLAPSED);
} else {
description.setMaxLines(2000);
}
});
if (alternateFeedUrls.isEmpty()) {
viewBinding.alternateUrlsSpinner.setVisibility(View.GONE);
} else {
viewBinding.alternateUrlsSpinner.setVisibility(View.VISIBLE);
final List<String> alternateUrlsList = new ArrayList<>();
final List<String> alternateUrlsTitleList = new ArrayList<>();
alternateUrlsList.add(feed.getDownload_url());
alternateUrlsTitleList.add(feed.getTitle());
alternateUrlsList.addAll(alternateFeedUrls.keySet());
for (String url : alternateFeedUrls.keySet()) {
alternateUrlsTitleList.add(alternateFeedUrls.get(url));
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.alternate_urls_item, alternateUrlsTitleList) {
@Override
public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
// reusing the old view causes a visual bug on Android <= 10
return super.getDropDownView(position, null, parent);
}
};
adapter.setDropDownViewResource(R.layout.alternate_urls_dropdown_item);
viewBinding.alternateUrlsSpinner.setAdapter(adapter);
viewBinding.alternateUrlsSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
selectedDownloadUrl = alternateUrlsList.get(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
handleUpdatedFeedStatus(feed);
}
use of androidx.annotation.Nullable in project RSAndroidApp by RailwayStations.
the class DetailsActivity method checkForLocalPhoto.
/**
* Check if there's a local photo file for this station.
*
* @return the Bitmap of the photo, or null if none exists.
*/
@Nullable
private Bitmap checkForLocalPhoto(final Upload upload) {
// show the image
final File localFile = getStoredMediaFile(upload);
Log.d(TAG, "File: " + localFile);
crc32 = null;
if (localFile != null && localFile.canRead()) {
Log.d(TAG, "FileGetPath: " + localFile.getPath());
try (final CheckedInputStream cis = new CheckedInputStream(new FileInputStream(localFile), new CRC32())) {
final Bitmap scaledScreen = BitmapFactory.decodeStream(cis);
crc32 = cis.getChecksum().getValue();
Log.d(TAG, "img width " + scaledScreen.getWidth() + ", height " + scaledScreen.getHeight() + ", crc32 " + crc32);
localFotoUsed = true;
setButtonEnabled(binding.details.buttonUpload, true);
return scaledScreen;
} catch (final Exception e) {
Log.e(TAG, String.format("Error reading media file for station %s", bahnhofId), e);
}
} else {
localFotoUsed = false;
setButtonEnabled(binding.details.buttonUpload, false);
Log.e(TAG, String.format("Media file not available for station %s", bahnhofId));
}
return null;
}
use of androidx.annotation.Nullable in project Conversations by siacs.
the class ActionBarUtil method findViewSupportOrAndroid.
@SuppressWarnings("ConstantConditions")
@Nullable
private static View findViewSupportOrAndroid(@NonNull View root, @NonNull String resourceName) {
Context context = root.getContext();
View result = null;
if (result == null) {
int supportID = context.getResources().getIdentifier(resourceName, "id", context.getPackageName());
result = root.findViewById(supportID);
}
if (result == null) {
int androidID = context.getResources().getIdentifier(resourceName, "id", "android");
result = root.findViewById(androidID);
}
return result;
}
Aggregations