diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java index 0441e1ba1a6..2b4413c666b 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java @@ -104,6 +104,8 @@ import static org.schabi.newpipe.extractor.StreamingService.ServiceInfo.MediaCapability.COMMENTS; import static org.schabi.newpipe.extractor.stream.StreamExtractor.NO_AGE_LIMIT; +import static org.schabi.newpipe.util.AnimationUtils.DEFAULT_LONG_ANIM_DURATION; +import static org.schabi.newpipe.util.AnimationUtils.DEFAULT_SHORT_ANIM_DURATION; import static org.schabi.newpipe.util.AnimationUtils.animateView; public class VideoDetailFragment extends BaseStateFragment @@ -564,8 +566,8 @@ private View.OnTouchListener getOnControlsTouchListener() { } if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { - animateView(appendControlsDetail, true, 250, 0, () -> - animateView(appendControlsDetail, false, 1500, 1000)); + animateView(appendControlsDetail, true, DEFAULT_SHORT_ANIM_DURATION, 0, () -> + animateView(appendControlsDetail, false, DEFAULT_LONG_ANIM_DURATION, 1000)); } return false; }; @@ -639,6 +641,8 @@ public boolean onOptionsItemSelected(final MenuItem item) { switch (id) { case R.id.menu_item_share: if (currentInfo != null) { + Log.i(TAG, "onOptionsItemSelected: " + currentInfo.getUrl()); + Log.i(TAG, "onOptionsItemSelected: " + currentInfo.getOriginalUrl()); ShareUtils.shareUrl(requireContext(), currentInfo.getName(), currentInfo.getOriginalUrl()); } @@ -1029,8 +1033,8 @@ private void setErrorImage(final int imageResource) { } thumbnailImageView.setImageDrawable(ContextCompat.getDrawable(activity, imageResource)); - animateView(thumbnailImageView, false, 0, 0, - () -> animateView(thumbnailImageView, true, 500)); + animateView(thumbnailImageView, false, DEFAULT_SHORT_ANIM_DURATION, 0, + () -> animateView(thumbnailImageView, true, DEFAULT_SHORT_ANIM_DURATION)); } @Override @@ -1058,15 +1062,15 @@ public void showLoading() { contentRootLayoutHiding.setVisibility(View.INVISIBLE); } - animateView(spinnerToolbar, false, 200); - animateView(thumbnailPlayButton, false, 50); - animateView(detailDurationView, false, 100); - animateView(detailPositionView, false, 100); - animateView(positionView, false, 50); + animateView(spinnerToolbar, false, DEFAULT_SHORT_ANIM_DURATION); + animateView(thumbnailPlayButton, false, DEFAULT_SHORT_ANIM_DURATION); + animateView(detailDurationView, false, DEFAULT_SHORT_ANIM_DURATION); + animateView(detailPositionView, false, DEFAULT_SHORT_ANIM_DURATION); + animateView(positionView, false, DEFAULT_SHORT_ANIM_DURATION); videoTitleTextView.setText(name != null ? name : ""); videoTitleTextView.setMaxLines(1); - animateView(videoTitleTextView, true, 0); + animateView(videoTitleTextView, true, DEFAULT_SHORT_ANIM_DURATION); videoDescriptionRootLayout.setVisibility(View.GONE); videoTitleToggleArrow.setImageResource(R.drawable.arrow_down); @@ -1109,7 +1113,7 @@ public void handleResult(@NonNull final StreamInfo info) { //pushToStack(serviceId, url, name); - animateView(thumbnailPlayButton, true, 200); + animateView(thumbnailPlayButton, true, DEFAULT_SHORT_ANIM_DURATION); videoTitleTextView.setText(name); if (!TextUtils.isEmpty(info.getUploaderName())) { @@ -1169,12 +1173,12 @@ public void handleResult(@NonNull final StreamInfo info) { detailDurationView.setText(Localization.getDurationString(info.getDuration())); detailDurationView.setBackgroundColor( ContextCompat.getColor(activity, R.color.duration_background_color)); - animateView(detailDurationView, true, 100); + animateView(detailDurationView, true, DEFAULT_SHORT_ANIM_DURATION); } else if (info.getStreamType() == StreamType.LIVE_STREAM) { detailDurationView.setText(R.string.duration_live); detailDurationView.setBackgroundColor( ContextCompat.getColor(activity, R.color.live_duration_background_color)); - animateView(detailDurationView, true, 100); + animateView(detailDurationView, true, DEFAULT_SHORT_ANIM_DURATION); } else { detailDurationView.setVisibility(View.GONE); } @@ -1197,7 +1201,7 @@ public void handleResult(@NonNull final StreamInfo info) { prepareDescription(info.getDescription()); updateProgressInfo(info); - animateView(spinnerToolbar, true, 500); + animateView(spinnerToolbar, true, DEFAULT_SHORT_ANIM_DURATION); setupActionBar(info); initThumbnailViews(info); @@ -1331,15 +1335,15 @@ private void updateProgressInfo(@NonNull final StreamInfo info) { positionView.setMax((int) info.getDuration()); positionView.setProgressAnimated(seconds); detailPositionView.setText(Localization.getDurationString(seconds)); - animateView(positionView, true, 500); - animateView(detailPositionView, true, 500); + animateView(positionView, true, DEFAULT_SHORT_ANIM_DURATION); + animateView(detailPositionView, true, DEFAULT_SHORT_ANIM_DURATION); }, e -> { if (DEBUG) { e.printStackTrace(); } }, () -> { - animateView(positionView, false, 500); - animateView(detailPositionView, false, 500); + animateView(positionView, false, DEFAULT_SHORT_ANIM_DURATION); + animateView(detailPositionView, false, DEFAULT_SHORT_ANIM_DURATION); }); } } diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java index 55301dd5051..fe75743356f 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java @@ -39,6 +39,7 @@ import java.util.List; import java.util.Queue; +import static org.schabi.newpipe.util.AnimationUtils.DEFAULT_SHORT_ANIM_DURATION; import static org.schabi.newpipe.util.AnimationUtils.animateView; public abstract class BaseListFragment extends BaseStateFragment @@ -116,8 +117,8 @@ public void onResume() { /** * If the default implementation of {@link StateSaver.WriteRead} should be used. * - * @see StateSaver * @param useDefaultStateSaving Whether the default implementation should be used + * @see StateSaver */ public void setUseDefaultStateSaving(final boolean useDefaultStateSaving) { this.useDefaultStateSaving = useDefaultStateSaving; @@ -354,14 +355,14 @@ public void showLoading() { @Override public void hideLoading() { super.hideLoading(); - animateView(itemsList, true, 300); + animateView(itemsList, true, DEFAULT_SHORT_ANIM_DURATION); } @Override public void showError(final String message, final boolean showRetryButton) { super.showError(message, showRetryButton); showListFooter(false); - animateView(itemsList, false, 200); + animateView(itemsList, false, DEFAULT_SHORT_ANIM_DURATION); } @Override diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/channel/ChannelFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/channel/ChannelFragment.java index ad8d25d3a7d..56b6acf039d 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/channel/ChannelFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/channel/ChannelFragment.java @@ -61,6 +61,7 @@ import io.reactivex.functions.Function; import io.reactivex.schedulers.Schedulers; +import static org.schabi.newpipe.util.AnimationUtils.DEFAULT_SHORT_ANIM_DURATION; import static org.schabi.newpipe.util.AnimationUtils.animateBackgroundColor; import static org.schabi.newpipe.util.AnimationUtils.animateTextColor; import static org.schabi.newpipe.util.AnimationUtils.animateView; @@ -225,7 +226,7 @@ public boolean onOptionsItemSelected(final MenuItem item) { private void monitorSubscription(final ChannelInfo info) { final Consumer onError = (Throwable throwable) -> { - animateView(headerSubscribeButton, false, 100); + animateView(headerSubscribeButton, false, DEFAULT_SHORT_ANIM_DURATION); showSnackBarError(throwable, UserAction.SUBSCRIPTION, NewPipe.getNameOfService(currentInfo.getServiceId()), "Get subscription status", 0); @@ -377,7 +378,8 @@ private void updateSubscribeButton(final boolean isSubscribed) { animateTextColor(headerSubscribeButton, textDuration, subscribeText, subscribedText); } - animateView(headerSubscribeButton, AnimationUtils.Type.LIGHT_SCALE_AND_ALPHA, true, 100); + animateView(headerSubscribeButton, AnimationUtils.Type.LIGHT_SCALE_AND_ALPHA, + true, DEFAULT_SHORT_ANIM_DURATION); } /*////////////////////////////////////////////////////////////////////////// @@ -404,7 +406,7 @@ public void showLoading() { IMAGE_LOADER.cancelDisplayTask(headerChannelBanner); IMAGE_LOADER.cancelDisplayTask(headerAvatarView); - animateView(headerSubscribeButton, false, 100); + animateView(headerSubscribeButton, false, DEFAULT_SHORT_ANIM_DURATION); } @Override diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/kiosk/KioskFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/kiosk/KioskFragment.java index 21a7944eeb7..f6dfd24e88c 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/kiosk/KioskFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/kiosk/KioskFragment.java @@ -28,6 +28,7 @@ import icepick.State; import io.reactivex.Single; +import static org.schabi.newpipe.util.AnimationUtils.DEFAULT_SHORT_ANIM_DURATION; import static org.schabi.newpipe.util.AnimationUtils.animateView; /** @@ -160,7 +161,7 @@ public Single loadMoreItemsLogic() { @Override public void showLoading() { super.showLoading(); - animateView(itemsList, false, 100); + animateView(itemsList, false, DEFAULT_SHORT_ANIM_DURATION); } @Override diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/playlist/PlaylistFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/playlist/PlaylistFragment.java index 93df98c9727..9595f029e29 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/playlist/PlaylistFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/playlist/PlaylistFragment.java @@ -56,6 +56,7 @@ import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposables; +import static org.schabi.newpipe.util.AnimationUtils.DEFAULT_SHORT_ANIM_DURATION; import static org.schabi.newpipe.util.AnimationUtils.animateView; public class PlaylistFragment extends BaseListInfoFragment { @@ -266,19 +267,19 @@ public boolean onOptionsItemSelected(final MenuItem item) { @Override public void showLoading() { super.showLoading(); - animateView(headerRootLayout, false, 200); - animateView(itemsList, false, 100); + animateView(headerRootLayout, false, DEFAULT_SHORT_ANIM_DURATION); + animateView(itemsList, false, DEFAULT_SHORT_ANIM_DURATION); IMAGE_LOADER.cancelDisplayTask(headerUploaderAvatar); - animateView(headerUploaderLayout, false, 200); + animateView(headerUploaderLayout, false, DEFAULT_SHORT_ANIM_DURATION); } @Override public void handleResult(@NonNull final PlaylistInfo result) { super.handleResult(result); - animateView(headerRootLayout, true, 100); - animateView(headerUploaderLayout, true, 300); + animateView(headerRootLayout, true, DEFAULT_SHORT_ANIM_DURATION); + animateView(headerUploaderLayout, true, DEFAULT_SHORT_ANIM_DURATION); headerUploaderLayout.setOnClickListener(null); // If we have an uploader put them into the UI if (!TextUtils.isEmpty(result.getUploaderName())) { diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java index 2b6accbc78b..4580897a405 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java @@ -73,6 +73,7 @@ import static androidx.recyclerview.widget.ItemTouchHelper.Callback.makeMovementFlags; import static java.util.Arrays.asList; +import static org.schabi.newpipe.util.AnimationUtils.DEFAULT_SHORT_ANIM_DURATION; import static org.schabi.newpipe.util.AnimationUtils.animateView; public class SearchFragment extends BaseListFragment @@ -93,45 +94,35 @@ public class SearchFragment extends BaseListFragment suggestionPublisher = PublishSubject.create(); - - @State - int filterItemCheckedId = -1; - + private final CompositeDisposable disposables = new CompositeDisposable(); @State protected int serviceId = Constants.NO_SERVICE_ID; - + @State + int filterItemCheckedId = -1; // these three represents the current search query @State String searchString; - /** * No content filter should add like contentFilter = all * be aware of this when implementing an extractor. */ @State String[] contentFilter = new String[0]; - @State String sortFilter; - // these represents the last search @State String lastSearchedString; - @State boolean wasSearchFocused = false; - private Map menuItemToFilterName; private StreamingService service; private String currentPageUrl; private String nextPageUrl; private String contentCountry; private boolean isSuggestionsEnabled = true; - private Disposable searchDisposable; private Disposable suggestionDisposable; - private final CompositeDisposable disposables = new CompositeDisposable(); - private SuggestionListAdapter suggestionListAdapter; private HistoryRecordManager historyRecordManager; @@ -389,7 +380,7 @@ public void reloadContent() { searchEditText.setText(""); showKeyboardSearch(); } - animateView(errorPanelRoot, false, 200); + animateView(errorPanelRoot, false, DEFAULT_SHORT_ANIM_DURATION); } } @@ -554,11 +545,13 @@ public void onSuggestionItemLongClick(final SuggestionItem item) { textWatcher = new TextWatcher() { @Override public void beforeTextChanged(final CharSequence s, final int start, - final int count, final int after) { } + final int count, final int after) { + } @Override public void onTextChanged(final CharSequence s, final int start, - final int before, final int count) { } + final int before, final int count) { + } @Override public void afterTextChanged(final Editable s) { @@ -609,14 +602,16 @@ private void showSuggestionsPanel() { if (DEBUG) { Log.d(TAG, "showSuggestionsPanel() called"); } - animateView(suggestionsPanel, AnimationUtils.Type.LIGHT_SLIDE_AND_ALPHA, true, 200); + animateView(suggestionsPanel, AnimationUtils.Type.LIGHT_SLIDE_AND_ALPHA, true, + DEFAULT_SHORT_ANIM_DURATION); } private void hideSuggestionsPanel() { if (DEBUG) { Log.d(TAG, "hideSuggestionsPanel() called"); } - animateView(suggestionsPanel, AnimationUtils.Type.LIGHT_SLIDE_AND_ALPHA, false, 200); + animateView(suggestionsPanel, AnimationUtils.Type.LIGHT_SLIDE_AND_ALPHA, false, + DEFAULT_SHORT_ANIM_DURATION); } private void showKeyboardSearch() { diff --git a/app/src/main/java/org/schabi/newpipe/info_list/holder/StreamMiniInfoItemHolder.java b/app/src/main/java/org/schabi/newpipe/info_list/holder/StreamMiniInfoItemHolder.java index da6c9e82f17..cbb076fe246 100644 --- a/app/src/main/java/org/schabi/newpipe/info_list/holder/StreamMiniInfoItemHolder.java +++ b/app/src/main/java/org/schabi/newpipe/info_list/holder/StreamMiniInfoItemHolder.java @@ -14,13 +14,15 @@ import org.schabi.newpipe.extractor.stream.StreamType; import org.schabi.newpipe.info_list.InfoItemBuilder; import org.schabi.newpipe.local.history.HistoryRecordManager; -import org.schabi.newpipe.util.AnimationUtils; import org.schabi.newpipe.util.ImageDisplayConstants; import org.schabi.newpipe.util.Localization; import org.schabi.newpipe.views.AnimatedProgressBar; import java.util.concurrent.TimeUnit; +import static org.schabi.newpipe.util.AnimationUtils.DEFAULT_SHORT_ANIM_DURATION; +import static org.schabi.newpipe.util.AnimationUtils.animateView; + public class StreamMiniInfoItemHolder extends InfoItemHolder { public final ImageView itemThumbnailView; public final TextView itemVideoTitleView; @@ -123,10 +125,10 @@ public void updateState(final InfoItem infoItem, } else { itemProgressView.setProgress((int) TimeUnit.MILLISECONDS .toSeconds(state.getProgressTime())); - AnimationUtils.animateView(itemProgressView, true, 500); + animateView(itemProgressView, true, DEFAULT_SHORT_ANIM_DURATION); } } else if (itemProgressView.getVisibility() == View.VISIBLE) { - AnimationUtils.animateView(itemProgressView, false, 500); + animateView(itemProgressView, false, DEFAULT_SHORT_ANIM_DURATION); } } diff --git a/app/src/main/java/org/schabi/newpipe/local/BaseLocalListFragment.java b/app/src/main/java/org/schabi/newpipe/local/BaseLocalListFragment.java index 650953bea46..afe0094fb83 100644 --- a/app/src/main/java/org/schabi/newpipe/local/BaseLocalListFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/BaseLocalListFragment.java @@ -20,6 +20,7 @@ import org.schabi.newpipe.fragments.BaseStateFragment; import org.schabi.newpipe.fragments.list.ListViewContract; +import static org.schabi.newpipe.util.AnimationUtils.DEFAULT_SHORT_ANIM_DURATION; import static org.schabi.newpipe.util.AnimationUtils.animateView; /** @@ -178,10 +179,10 @@ public void startLoading(final boolean forceLoad) { public void showLoading() { super.showLoading(); if (itemsList != null) { - animateView(itemsList, false, 200); + animateView(itemsList, false, DEFAULT_SHORT_ANIM_DURATION); } if (headerRootView != null) { - animateView(headerRootView, false, 200); + animateView(headerRootView, false, DEFAULT_SHORT_ANIM_DURATION); } } @@ -189,10 +190,10 @@ public void showLoading() { public void hideLoading() { super.hideLoading(); if (itemsList != null) { - animateView(itemsList, true, 200); + animateView(itemsList, true, DEFAULT_SHORT_ANIM_DURATION); } if (headerRootView != null) { - animateView(headerRootView, true, 200); + animateView(headerRootView, true, DEFAULT_SHORT_ANIM_DURATION); } } @@ -202,10 +203,10 @@ public void showError(final String message, final boolean showRetryButton) { showListFooter(false); if (itemsList != null) { - animateView(itemsList, false, 200); + animateView(itemsList, false, DEFAULT_SHORT_ANIM_DURATION); } if (headerRootView != null) { - animateView(headerRootView, false, 200); + animateView(headerRootView, false, DEFAULT_SHORT_ANIM_DURATION); } } diff --git a/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt b/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt index e7ff8b86a25..7c107c579ee 100644 --- a/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt +++ b/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt @@ -35,6 +35,7 @@ import org.schabi.newpipe.database.feed.model.FeedGroupEntity import org.schabi.newpipe.fragments.list.BaseListFragment import org.schabi.newpipe.local.feed.service.FeedLoadService import org.schabi.newpipe.report.UserAction +import org.schabi.newpipe.util.AnimationUtils.DEFAULT_SHORT_ANIM_DURATION import org.schabi.newpipe.util.AnimationUtils.animateView import org.schabi.newpipe.util.Localization import java.util.* @@ -155,49 +156,49 @@ class FeedFragment : BaseListFragment() { /////////////////////////////////////////////////////////////////////////// override fun showLoading() { - animateView(refresh_root_view, false, 0) - animateView(items_list, false, 0) + animateView(refresh_root_view, false, DEFAULT_SHORT_ANIM_DURATION) + animateView(items_list, false, DEFAULT_SHORT_ANIM_DURATION) - animateView(loading_progress_bar, true, 200) - animateView(loading_progress_text, true, 200) + animateView(loading_progress_bar, true, DEFAULT_SHORT_ANIM_DURATION) + animateView(loading_progress_text, true, DEFAULT_SHORT_ANIM_DURATION) - empty_state_view?.let { animateView(it, false, 0) } - animateView(error_panel, false, 0) + empty_state_view?.let { animateView(it, false, DEFAULT_SHORT_ANIM_DURATION) } + animateView(error_panel, false, DEFAULT_SHORT_ANIM_DURATION) } override fun hideLoading() { - animateView(refresh_root_view, true, 200) - animateView(items_list, true, 300) + animateView(refresh_root_view, true, DEFAULT_SHORT_ANIM_DURATION) + animateView(items_list, true, DEFAULT_SHORT_ANIM_DURATION) - animateView(loading_progress_bar, false, 0) - animateView(loading_progress_text, false, 0) + animateView(loading_progress_bar, false, DEFAULT_SHORT_ANIM_DURATION) + animateView(loading_progress_text, false, DEFAULT_SHORT_ANIM_DURATION) - empty_state_view?.let { animateView(it, false, 0) } - animateView(error_panel, false, 0) + empty_state_view?.let { animateView(it, false, DEFAULT_SHORT_ANIM_DURATION) } + animateView(error_panel, false, DEFAULT_SHORT_ANIM_DURATION) } override fun showEmptyState() { - animateView(refresh_root_view, true, 200) - animateView(items_list, false, 0) + animateView(refresh_root_view, true, DEFAULT_SHORT_ANIM_DURATION) + animateView(items_list, false, DEFAULT_SHORT_ANIM_DURATION) - animateView(loading_progress_bar, false, 0) - animateView(loading_progress_text, false, 0) + animateView(loading_progress_bar, false, DEFAULT_SHORT_ANIM_DURATION) + animateView(loading_progress_text, false, DEFAULT_SHORT_ANIM_DURATION) empty_state_view?.let { animateView(it, true, 800) } - animateView(error_panel, false, 0) + animateView(error_panel, false, DEFAULT_SHORT_ANIM_DURATION) } override fun showError(message: String, showRetryButton: Boolean) { infoListAdapter.clearStreamItemList() - animateView(refresh_root_view, false, 120) - animateView(items_list, false, 120) + animateView(refresh_root_view, false, DEFAULT_SHORT_ANIM_DURATION) + animateView(items_list, false, DEFAULT_SHORT_ANIM_DURATION) - animateView(loading_progress_bar, false, 120) - animateView(loading_progress_text, false, 120) + animateView(loading_progress_bar, false, DEFAULT_SHORT_ANIM_DURATION) + animateView(loading_progress_text, false, DEFAULT_SHORT_ANIM_DURATION) error_message_view.text = message - animateView(error_button_retry, showRetryButton, if (showRetryButton) 600 else 0) - animateView(error_panel, true, 300) + animateView(error_button_retry, showRetryButton, if (showRetryButton) 600 else DEFAULT_SHORT_ANIM_DURATION) + animateView(error_panel, true, DEFAULT_SHORT_ANIM_DURATION) } override fun handleResult(result: FeedState) { diff --git a/app/src/main/java/org/schabi/newpipe/local/holder/LocalPlaylistStreamItemHolder.java b/app/src/main/java/org/schabi/newpipe/local/holder/LocalPlaylistStreamItemHolder.java index ece5f099448..713de6d6d13 100644 --- a/app/src/main/java/org/schabi/newpipe/local/holder/LocalPlaylistStreamItemHolder.java +++ b/app/src/main/java/org/schabi/newpipe/local/holder/LocalPlaylistStreamItemHolder.java @@ -15,7 +15,6 @@ import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.local.LocalItemBuilder; import org.schabi.newpipe.local.history.HistoryRecordManager; -import org.schabi.newpipe.util.AnimationUtils; import org.schabi.newpipe.util.ImageDisplayConstants; import org.schabi.newpipe.util.Localization; import org.schabi.newpipe.views.AnimatedProgressBar; @@ -24,11 +23,14 @@ import java.util.ArrayList; import java.util.concurrent.TimeUnit; +import static org.schabi.newpipe.util.AnimationUtils.animateView; +import static org.schabi.newpipe.util.AnimationUtils.DEFAULT_SHORT_ANIM_DURATION; + public class LocalPlaylistStreamItemHolder extends LocalItemHolder { public final ImageView itemThumbnailView; public final TextView itemVideoTitleView; - private final TextView itemAdditionalDetailsView; public final TextView itemDurationView; + private final TextView itemAdditionalDetailsView; private final View itemHandleView; private final AnimatedProgressBar itemProgressView; @@ -72,8 +74,8 @@ public void updateFromItem(final LocalItem localItem, StreamStateEntity state = historyRecordManager .loadLocalStreamStateBatch(new ArrayList() {{ - add(localItem); - }}).blockingGet().get(0); + add(localItem); + }}).blockingGet().get(0); if (state != null) { itemProgressView.setVisibility(View.VISIBLE); itemProgressView.setMax((int) item.getStreamEntity().getDuration()); @@ -118,8 +120,8 @@ public void updateState(final LocalItem localItem, StreamStateEntity state = historyRecordManager .loadLocalStreamStateBatch(new ArrayList() {{ - add(localItem); - }}).blockingGet().get(0); + add(localItem); + }}).blockingGet().get(0); if (state != null && item.getStreamEntity().getDuration() > 0) { itemProgressView.setMax((int) item.getStreamEntity().getDuration()); if (itemProgressView.getVisibility() == View.VISIBLE) { @@ -128,10 +130,10 @@ public void updateState(final LocalItem localItem, } else { itemProgressView.setProgress((int) TimeUnit.MILLISECONDS .toSeconds(state.getProgressTime())); - AnimationUtils.animateView(itemProgressView, true, 500); + animateView(itemProgressView, true, DEFAULT_SHORT_ANIM_DURATION); } } else if (itemProgressView.getVisibility() == View.VISIBLE) { - AnimationUtils.animateView(itemProgressView, false, 500); + animateView(itemProgressView, false, DEFAULT_SHORT_ANIM_DURATION); } } diff --git a/app/src/main/java/org/schabi/newpipe/local/holder/LocalStatisticStreamItemHolder.java b/app/src/main/java/org/schabi/newpipe/local/holder/LocalStatisticStreamItemHolder.java index a83c6ba6746..02db87fbab1 100644 --- a/app/src/main/java/org/schabi/newpipe/local/holder/LocalStatisticStreamItemHolder.java +++ b/app/src/main/java/org/schabi/newpipe/local/holder/LocalStatisticStreamItemHolder.java @@ -15,7 +15,6 @@ import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.local.LocalItemBuilder; import org.schabi.newpipe.local.history.HistoryRecordManager; -import org.schabi.newpipe.util.AnimationUtils; import org.schabi.newpipe.util.ImageDisplayConstants; import org.schabi.newpipe.util.Localization; import org.schabi.newpipe.views.AnimatedProgressBar; @@ -24,6 +23,8 @@ import java.util.ArrayList; import java.util.concurrent.TimeUnit; +import static org.schabi.newpipe.util.AnimationUtils.DEFAULT_SHORT_ANIM_DURATION; +import static org.schabi.newpipe.util.AnimationUtils.animateView; /* * Created by Christian Schabesberger on 01.08.16. *

@@ -100,8 +101,8 @@ public void updateFromItem(final LocalItem localItem, StreamStateEntity state = historyRecordManager .loadLocalStreamStateBatch(new ArrayList() {{ - add(localItem); - }}).blockingGet().get(0); + add(localItem); + }}).blockingGet().get(0); if (state != null) { itemProgressView.setVisibility(View.VISIBLE); itemProgressView.setMax((int) item.getStreamEntity().getDuration()); @@ -148,8 +149,8 @@ public void updateState(final LocalItem localItem, StreamStateEntity state = historyRecordManager .loadLocalStreamStateBatch(new ArrayList() {{ - add(localItem); - }}).blockingGet().get(0); + add(localItem); + }}).blockingGet().get(0); if (state != null && item.getStreamEntity().getDuration() > 0) { itemProgressView.setMax((int) item.getStreamEntity().getDuration()); if (itemProgressView.getVisibility() == View.VISIBLE) { @@ -158,10 +159,10 @@ public void updateState(final LocalItem localItem, } else { itemProgressView.setProgress((int) TimeUnit.MILLISECONDS .toSeconds(state.getProgressTime())); - AnimationUtils.animateView(itemProgressView, true, 500); + animateView(itemProgressView, true, DEFAULT_SHORT_ANIM_DURATION); } } else if (itemProgressView.getVisibility() == View.VISIBLE) { - AnimationUtils.animateView(itemProgressView, false, 500); + animateView(itemProgressView, false, DEFAULT_SHORT_ANIM_DURATION); } } } diff --git a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java index d430afa5c40..ed494c158ee 100644 --- a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java @@ -50,6 +50,7 @@ import io.reactivex.disposables.Disposables; import io.reactivex.subjects.PublishSubject; +import static org.schabi.newpipe.util.AnimationUtils.DEFAULT_SHORT_ANIM_DURATION; import static org.schabi.newpipe.util.AnimationUtils.animateView; public class LocalPlaylistFragment extends BaseLocalListFragment, Void> { @@ -195,10 +196,10 @@ public void drag(final LocalItem selectedItem, public void showLoading() { super.showLoading(); if (headerRootLayout != null) { - animateView(headerRootLayout, false, 200); + animateView(headerRootLayout, false, DEFAULT_SHORT_ANIM_DURATION); } if (playlistControl != null) { - animateView(playlistControl, false, 200); + animateView(playlistControl, false, DEFAULT_SHORT_ANIM_DURATION); } } @@ -206,10 +207,10 @@ public void showLoading() { public void hideLoading() { super.hideLoading(); if (headerRootLayout != null) { - animateView(headerRootLayout, true, 200); + animateView(headerRootLayout, true, DEFAULT_SHORT_ANIM_DURATION); } if (playlistControl != null) { - animateView(playlistControl, true, 200); + animateView(playlistControl, true, DEFAULT_SHORT_ANIM_DURATION); } } diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionFragment.kt b/app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionFragment.kt index eae406ed295..71f47f0399f 100644 --- a/app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionFragment.kt +++ b/app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionFragment.kt @@ -39,6 +39,7 @@ import org.schabi.newpipe.local.subscription.services.SubscriptionsImportService import org.schabi.newpipe.local.subscription.services.SubscriptionsImportService.* import org.schabi.newpipe.report.UserAction import org.schabi.newpipe.util.* +import org.schabi.newpipe.util.AnimationUtils.DEFAULT_SHORT_ANIM_DURATION import org.schabi.newpipe.util.AnimationUtils.animateView import java.io.File import java.text.SimpleDateFormat @@ -372,12 +373,12 @@ class SubscriptionFragment : BaseStateFragment() { override fun showLoading() { super.showLoading() - animateView(items_list, false, 100) + animateView(items_list, false, DEFAULT_SHORT_ANIM_DURATION) } override fun hideLoading() { super.hideLoading() - animateView(items_list, true, 200) + animateView(items_list, true, DEFAULT_SHORT_ANIM_DURATION) } /////////////////////////////////////////////////////////////////////////// diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/item/PickerSubscriptionItem.kt b/app/src/main/java/org/schabi/newpipe/local/subscription/item/PickerSubscriptionItem.kt index e0754e07885..eb6868f8a7c 100644 --- a/app/src/main/java/org/schabi/newpipe/local/subscription/item/PickerSubscriptionItem.kt +++ b/app/src/main/java/org/schabi/newpipe/local/subscription/item/PickerSubscriptionItem.kt @@ -9,6 +9,7 @@ import kotlinx.android.synthetic.main.picker_subscription_item.* import org.schabi.newpipe.R import org.schabi.newpipe.database.subscription.SubscriptionEntity import org.schabi.newpipe.util.AnimationUtils +import org.schabi.newpipe.util.AnimationUtils.DEFAULT_SHORT_ANIM_DURATION import org.schabi.newpipe.util.AnimationUtils.animateView import org.schabi.newpipe.util.ImageDisplayConstants @@ -23,7 +24,7 @@ data class PickerSubscriptionItem(val subscriptionEntity: SubscriptionEntity, va override fun bind(viewHolder: GroupieViewHolder, position: Int, payloads: MutableList) { if (payloads.contains(UPDATE_SELECTED)) { - animateView(viewHolder.selected_highlight, AnimationUtils.Type.LIGHT_SCALE_AND_ALPHA, isSelected, 150) + animateView(viewHolder.selected_highlight, AnimationUtils.Type.LIGHT_SCALE_AND_ALPHA, isSelected, DEFAULT_SHORT_ANIM_DURATION) return } diff --git a/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java b/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java index 6656ec29e9f..a80df324d1f 100644 --- a/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java +++ b/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java @@ -92,8 +92,8 @@ import java.util.UUID; import static org.schabi.newpipe.player.BasePlayer.STATE_PLAYING; -import static org.schabi.newpipe.player.VideoPlayer.DEFAULT_CONTROLS_DURATION; import static org.schabi.newpipe.player.VideoPlayer.DEFAULT_CONTROLS_HIDE_TIME; +import static org.schabi.newpipe.util.AnimationUtils.DEFAULT_SHORT_ANIM_DURATION; import static org.schabi.newpipe.util.AnimationUtils.Type.SCALE_AND_ALPHA; import static org.schabi.newpipe.util.AnimationUtils.Type.SLIDE_AND_ALPHA; import static org.schabi.newpipe.util.AnimationUtils.animateRotation; @@ -793,9 +793,9 @@ public void onClick(final View v) { if (getCurrentState() != STATE_COMPLETED) { getControlsVisibilityHandler().removeCallbacksAndMessages(null); - animateView(getControlsRoot(), true, DEFAULT_CONTROLS_DURATION, 0, () -> { + animateView(getControlsRoot(), true, DEFAULT_SHORT_ANIM_DURATION, 0, () -> { if (getCurrentState() == STATE_PLAYING && !isSomePopupMenuVisible()) { - hideControls(DEFAULT_CONTROLS_DURATION, DEFAULT_CONTROLS_HIDE_TIME); + hideControls(DEFAULT_SHORT_ANIM_DURATION, DEFAULT_CONTROLS_HIDE_TIME); } }); } @@ -809,13 +809,13 @@ private void onQueueClicked() { updatePlaybackButtons(); getControlsRoot().setVisibility(View.INVISIBLE); - animateView(queueLayout, SLIDE_AND_ALPHA, true, DEFAULT_CONTROLS_DURATION); + animateView(queueLayout, SLIDE_AND_ALPHA, true, DEFAULT_SHORT_ANIM_DURATION); itemsList.scrollToPosition(playQueue.getIndex()); } private void onQueueClosed() { - animateView(queueLayout, SLIDE_AND_ALPHA, false, DEFAULT_CONTROLS_DURATION); + animateView(queueLayout, SLIDE_AND_ALPHA, false, DEFAULT_SHORT_ANIM_DURATION); queueVisible = false; } @@ -827,11 +827,11 @@ private void onMoreOptionsClicked() { final boolean isMoreControlsVisible = secondaryControls.getVisibility() == View.VISIBLE; - animateRotation(moreOptionsButton, DEFAULT_CONTROLS_DURATION, + animateRotation(moreOptionsButton, DEFAULT_SHORT_ANIM_DURATION, isMoreControlsVisible ? 0 : 180); animateView(secondaryControls, SLIDE_AND_ALPHA, !isMoreControlsVisible, - DEFAULT_CONTROLS_DURATION); - showControls(DEFAULT_CONTROLS_DURATION); + DEFAULT_SHORT_ANIM_DURATION); + showControls(DEFAULT_SHORT_ANIM_DURATION); setMuteButton(muteButton, playerImpl.isMuted()); } @@ -869,7 +869,7 @@ public void onStopTrackingTouch(final SeekBar seekBar) { public void onDismiss(final PopupMenu menu) { super.onDismiss(menu); if (isPlaying()) { - hideControls(DEFAULT_CONTROLS_DURATION, 0); + hideControls(DEFAULT_SHORT_ANIM_DURATION, 0); } hideSystemUi(); } @@ -919,7 +919,7 @@ public int getOverrideResolutionIndex(final List sortedVideos, // States //////////////////////////////////////////////////////////////////////////*/ - private void animatePlayButtons(final boolean show, final int duration) { + private void animatePlayButtons(final boolean show, final long duration) { animateView(playPauseButton, AnimationUtils.Type.SCALE_AND_ALPHA, show, duration); animateView(playPreviousButton, AnimationUtils.Type.SCALE_AND_ALPHA, show, duration); animateView(playNextButton, AnimationUtils.Type.SCALE_AND_ALPHA, show, duration); @@ -929,8 +929,8 @@ private void animatePlayButtons(final boolean show, final int duration) { public void onBlocked() { super.onBlocked(); playPauseButton.setImageResource(R.drawable.ic_pause_white); - animatePlayButtons(false, 100); - animateView(closeButton, false, DEFAULT_CONTROLS_DURATION); + animatePlayButtons(false, DEFAULT_SHORT_ANIM_DURATION); + animateView(closeButton, false, DEFAULT_SHORT_ANIM_DURATION); getRootView().setKeepScreenOn(true); } @@ -943,10 +943,11 @@ public void onBuffering() { @Override public void onPlaying() { super.onPlaying(); - animateView(playPauseButton, AnimationUtils.Type.SCALE_AND_ALPHA, false, 80, 0, () -> { + animateView(playPauseButton, AnimationUtils.Type.SCALE_AND_ALPHA, false, + DEFAULT_SHORT_ANIM_DURATION, 0, () -> { playPauseButton.setImageResource(R.drawable.ic_pause_white); - animatePlayButtons(true, 200); - animateView(closeButton, false, DEFAULT_CONTROLS_DURATION); + animatePlayButtons(true, DEFAULT_SHORT_ANIM_DURATION); + animateView(closeButton, false, DEFAULT_SHORT_ANIM_DURATION); }); getRootView().setKeepScreenOn(true); @@ -955,10 +956,11 @@ public void onPlaying() { @Override public void onPaused() { super.onPaused(); - animateView(playPauseButton, AnimationUtils.Type.SCALE_AND_ALPHA, false, 80, 0, () -> { + animateView(playPauseButton, AnimationUtils.Type.SCALE_AND_ALPHA, false, + DEFAULT_SHORT_ANIM_DURATION, 0, () -> { playPauseButton.setImageResource(R.drawable.ic_play_arrow_white); - animatePlayButtons(true, 200); - animateView(closeButton, false, DEFAULT_CONTROLS_DURATION); + animatePlayButtons(true, DEFAULT_SHORT_ANIM_DURATION); + animateView(closeButton, false, DEFAULT_SHORT_ANIM_DURATION); }); showSystemUi(); @@ -968,17 +970,18 @@ public void onPaused() { @Override public void onPausedSeek() { super.onPausedSeek(); - animatePlayButtons(false, 100); + animatePlayButtons(false, DEFAULT_SHORT_ANIM_DURATION); getRootView().setKeepScreenOn(true); } @Override public void onCompleted() { - animateView(playPauseButton, AnimationUtils.Type.SCALE_AND_ALPHA, false, 0, 0, () -> { + animateView(playPauseButton, AnimationUtils.Type.SCALE_AND_ALPHA, false, + DEFAULT_SHORT_ANIM_DURATION, 0, () -> { playPauseButton.setImageResource(R.drawable.ic_replay_white); - animatePlayButtons(true, DEFAULT_CONTROLS_DURATION); - animateView(closeButton, true, DEFAULT_CONTROLS_DURATION); + animatePlayButtons(true, DEFAULT_SHORT_ANIM_DURATION); + animateView(closeButton, true, DEFAULT_SHORT_ANIM_DURATION); }); getRootView().setKeepScreenOn(false); super.onCompleted(); @@ -1221,7 +1224,7 @@ public boolean onSingleTapConfirmed(final MotionEvent e) { } if (playerImpl.isControlsVisible()) { - playerImpl.hideControls(150, 0); + playerImpl.hideControls(DEFAULT_SHORT_ANIM_DURATION, 0); } else { playerImpl.showControlsThenHide(); showSystemUi(); @@ -1293,7 +1296,8 @@ public boolean onScroll(final MotionEvent initialEvent, final MotionEvent moving ); if (playerImpl.getVolumeRelativeLayout().getVisibility() != View.VISIBLE) { - animateView(playerImpl.getVolumeRelativeLayout(), SCALE_AND_ALPHA, true, 200); + animateView(playerImpl.getVolumeRelativeLayout(), SCALE_AND_ALPHA, true, + DEFAULT_SHORT_ANIM_DURATION); } if (playerImpl.getBrightnessRelativeLayout().getVisibility() == View.VISIBLE) { playerImpl.getBrightnessRelativeLayout().setVisibility(View.GONE); @@ -1315,8 +1319,8 @@ public boolean onScroll(final MotionEvent initialEvent, final MotionEvent moving final int resId = currentProgressPercent < 0.25 ? R.drawable.ic_brightness_low_white_72dp : currentProgressPercent < 0.75 - ? R.drawable.ic_brightness_medium_white_72dp - : R.drawable.ic_brightness_high_white_72dp; + ? R.drawable.ic_brightness_medium_white_72dp + : R.drawable.ic_brightness_high_white_72dp; playerImpl.getBrightnessImageView().setImageDrawable( AppCompatResources.getDrawable(getApplicationContext(), resId) @@ -1324,7 +1328,7 @@ public boolean onScroll(final MotionEvent initialEvent, final MotionEvent moving if (playerImpl.getBrightnessRelativeLayout().getVisibility() != View.VISIBLE) { animateView(playerImpl.getBrightnessRelativeLayout(), SCALE_AND_ALPHA, true, - 200); + DEFAULT_SHORT_ANIM_DURATION); } if (playerImpl.getVolumeRelativeLayout().getVisibility() == View.VISIBLE) { playerImpl.getVolumeRelativeLayout().setVisibility(View.GONE); @@ -1340,15 +1344,15 @@ private void onScrollEnd() { if (playerImpl.getVolumeRelativeLayout().getVisibility() == View.VISIBLE) { animateView(playerImpl.getVolumeRelativeLayout(), SCALE_AND_ALPHA, false, - 200, 200); + DEFAULT_SHORT_ANIM_DURATION, 200); } if (playerImpl.getBrightnessRelativeLayout().getVisibility() == View.VISIBLE) { animateView(playerImpl.getBrightnessRelativeLayout(), SCALE_AND_ALPHA, false, - 200, 200); + DEFAULT_SHORT_ANIM_DURATION, 200); } if (playerImpl.isControlsVisible() && playerImpl.getCurrentState() == STATE_PLAYING) { - playerImpl.hideControls(DEFAULT_CONTROLS_DURATION, DEFAULT_CONTROLS_HIDE_TIME); + playerImpl.hideControls(DEFAULT_SHORT_ANIM_DURATION, DEFAULT_CONTROLS_HIDE_TIME); } } diff --git a/app/src/main/java/org/schabi/newpipe/player/PopupVideoPlayer.java b/app/src/main/java/org/schabi/newpipe/player/PopupVideoPlayer.java index de9e9b74669..609aec198c9 100644 --- a/app/src/main/java/org/schabi/newpipe/player/PopupVideoPlayer.java +++ b/app/src/main/java/org/schabi/newpipe/player/PopupVideoPlayer.java @@ -79,8 +79,8 @@ import java.util.List; import static org.schabi.newpipe.player.BasePlayer.STATE_PLAYING; -import static org.schabi.newpipe.player.VideoPlayer.DEFAULT_CONTROLS_DURATION; import static org.schabi.newpipe.player.VideoPlayer.DEFAULT_CONTROLS_HIDE_TIME; +import static org.schabi.newpipe.util.AnimationUtils.DEFAULT_SHORT_ANIM_DURATION; import static org.schabi.newpipe.util.AnimationUtils.animateView; import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage; @@ -668,7 +668,7 @@ public void onFullScreenButtonClicked() { public void onDismiss(final PopupMenu menu) { super.onDismiss(menu); if (isPlaying()) { - hideControls(500, 0); + hideControls(DEFAULT_SHORT_ANIM_DURATION, 0); } } @@ -685,7 +685,7 @@ protected int nextResizeMode(final int resizeMode) { public void onStopTrackingTouch(final SeekBar seekBar) { super.onStopTrackingTouch(seekBar); if (wasPlaying()) { - hideControls(100, 0); + hideControls(DEFAULT_SHORT_ANIM_DURATION, 0); } } @@ -911,7 +911,7 @@ public void onPlaying() { updateNotification(R.drawable.ic_pause_white); videoPlayPause.setBackgroundResource(R.drawable.ic_pause_white); - hideControls(DEFAULT_CONTROLS_DURATION, DEFAULT_CONTROLS_HIDE_TIME); + hideControls(DEFAULT_SHORT_ANIM_DURATION, DEFAULT_CONTROLS_HIDE_TIME); startForeground(NOTIFICATION_ID, notBuilder.build()); lockManager.acquireWifiAndCpu(); @@ -1030,7 +1030,7 @@ public boolean onDoubleTap(final MotionEvent e) { return false; } - playerImpl.hideControls(0, 0); + playerImpl.hideControls(DEFAULT_SHORT_ANIM_DURATION, 0); if (e.getX() > popupWidth / 2) { playerImpl.onFastForward(); @@ -1050,7 +1050,7 @@ public boolean onSingleTapConfirmed(final MotionEvent e) { return false; } if (playerImpl.isControlsVisible()) { - playerImpl.hideControls(100, 100); + playerImpl.hideControls(DEFAULT_SHORT_ANIM_DURATION, 100); } else { playerImpl.showControlsThenHide(); @@ -1093,7 +1093,7 @@ public boolean onScroll(final MotionEvent initialEvent, final MotionEvent moving } if (!isMoving) { - animateView(closeOverlayButton, true, 200); + animateView(closeOverlayButton, true, DEFAULT_SHORT_ANIM_DURATION); } isMoving = true; @@ -1121,11 +1121,11 @@ public boolean onScroll(final MotionEvent initialEvent, final MotionEvent moving final View closingOverlayView = playerImpl.getClosingOverlayView(); if (isInsideClosingRadius(movingEvent)) { if (closingOverlayView.getVisibility() == View.GONE) { - animateView(closingOverlayView, true, 250); + animateView(closingOverlayView, true, DEFAULT_SHORT_ANIM_DURATION); } } else { if (closingOverlayView.getVisibility() == View.VISIBLE) { - animateView(closingOverlayView, false, 0); + animateView(closingOverlayView, false, DEFAULT_SHORT_ANIM_DURATION); } } @@ -1154,16 +1154,16 @@ private void onScrollEnd(final MotionEvent event) { return; } if (playerImpl.isControlsVisible() && playerImpl.getCurrentState() == STATE_PLAYING) { - playerImpl.hideControls(DEFAULT_CONTROLS_DURATION, DEFAULT_CONTROLS_HIDE_TIME); + playerImpl.hideControls(DEFAULT_SHORT_ANIM_DURATION, DEFAULT_CONTROLS_HIDE_TIME); } if (isInsideClosingRadius(event)) { closePopup(); } else { - animateView(playerImpl.getClosingOverlayView(), false, 0); + animateView(playerImpl.getClosingOverlayView(), false, DEFAULT_SHORT_ANIM_DURATION); if (!isPopupClosing) { - animateView(closeOverlayButton, false, 200); + animateView(closeOverlayButton, false, DEFAULT_SHORT_ANIM_DURATION); } } } @@ -1207,9 +1207,11 @@ public boolean onTouch(final View v, final MotionEvent event) { playerImpl.showAndAnimateControl(-1, true); playerImpl.getLoadingPanel().setVisibility(View.GONE); - playerImpl.hideControls(0, 0); - animateView(playerImpl.getCurrentDisplaySeek(), false, 0, 0); - animateView(playerImpl.getResizingIndicator(), true, 200, 0); + playerImpl.hideControls(DEFAULT_SHORT_ANIM_DURATION, 0); + animateView(playerImpl.getCurrentDisplaySeek(), false, + DEFAULT_SHORT_ANIM_DURATION, 0); + animateView(playerImpl.getResizingIndicator(), true, + DEFAULT_SHORT_ANIM_DURATION, 0); //record co-ordinates of fingers initFirstPointerX = event.getX(0); @@ -1218,7 +1220,7 @@ public boolean onTouch(final View v, final MotionEvent event) { initSecPointerY = event.getY(1); //record distance between fingers initPointerDistance = Math.hypot(initFirstPointerX - initSecPointerX, - initFirstPointerY - initSecPointerY); + initFirstPointerY - initSecPointerY); isResizing = true; } @@ -1250,7 +1252,8 @@ public boolean onTouch(final View v, final MotionEvent event) { initSecPointerX = -1; initSecPointerY = -1; - animateView(playerImpl.getResizingIndicator(), false, 100, 0); + animateView(playerImpl.getResizingIndicator(), false, + DEFAULT_SHORT_ANIM_DURATION, 0); playerImpl.changeState(playerImpl.getCurrentState()); } diff --git a/app/src/main/java/org/schabi/newpipe/player/VideoPlayer.java b/app/src/main/java/org/schabi/newpipe/player/VideoPlayer.java index 7e74a6ee2b9..310d55a4a20 100644 --- a/app/src/main/java/org/schabi/newpipe/player/VideoPlayer.java +++ b/app/src/main/java/org/schabi/newpipe/player/VideoPlayer.java @@ -75,6 +75,7 @@ import static org.schabi.newpipe.player.helper.PlayerHelper.formatSpeed; import static org.schabi.newpipe.player.helper.PlayerHelper.getTimeString; +import static org.schabi.newpipe.util.AnimationUtils.DEFAULT_SHORT_ANIM_DURATION; import static org.schabi.newpipe.util.AnimationUtils.animateView; /** @@ -90,69 +91,51 @@ public abstract class VideoPlayer extends BasePlayer Player.EventListener, PopupMenu.OnMenuItemClickListener, PopupMenu.OnDismissListener { - public final String TAG; public static final boolean DEBUG = BasePlayer.DEBUG; + public static final int DEFAULT_CONTROLS_HIDE_TIME = 2000; // 2 Seconds /*////////////////////////////////////////////////////////////////////////// // Player //////////////////////////////////////////////////////////////////////////*/ - - public static final int DEFAULT_CONTROLS_DURATION = 300; // 300 millis - public static final int DEFAULT_CONTROLS_HIDE_TIME = 2000; // 2 Seconds protected static final int RENDERER_UNAVAILABLE = -1; - + public final String TAG; @NonNull private final VideoPlaybackResolver resolver; - - private List availableStreams; - private int selectedStreamIndex; - - protected boolean wasPlaying = false; + private final Handler controlsVisibilityHandler = new Handler(); + private final int qualityPopupMenuGroupId = 69; + private final int playbackSpeedPopupMenuGroupId = 79; /*////////////////////////////////////////////////////////////////////////// // Views //////////////////////////////////////////////////////////////////////////*/ - + private final int captionPopupMenuGroupId = 89; + protected boolean wasPlaying = false; + boolean isSomePopupMenuVisible = false; + private List availableStreams; + private int selectedStreamIndex; private View rootView; - private AspectRatioFrameLayout aspectRatioFrameLayout; private SurfaceView surfaceView; private View surfaceForeground; - private View loadingPanel; private ImageView endScreen; private ImageView controlAnimationView; - private View controlsRoot; private TextView currentDisplaySeek; - private View bottomControlsRoot; private SeekBar playbackSeekBar; private TextView playbackCurrentTime; private TextView playbackEndTime; private TextView playbackLiveSync; private TextView playbackSpeedTextView; - private View topControlsRoot; private TextView qualityTextView; - private SubtitleView subtitleView; - private TextView resizeView; private TextView captionTextView; - private ValueAnimator controlViewAnimator; - private final Handler controlsVisibilityHandler = new Handler(); - - boolean isSomePopupMenuVisible = false; - - private final int qualityPopupMenuGroupId = 69; private PopupMenu qualityPopupMenu; - - private final int playbackSpeedPopupMenuGroupId = 79; private PopupMenu playbackSpeedPopupMenu; - - private final int captionPopupMenuGroupId = 89; private PopupMenu captionPopupMenu; /////////////////////////////////////////////////////////////////////////// @@ -359,8 +342,8 @@ private void buildCaptionMenu(final List availableLanguages) { if (userPreferredLanguage != null && (captionLanguage.equals(userPreferredLanguage) || searchForAutogenerated && captionLanguage.startsWith(userPreferredLanguage) || userPreferredLanguage.contains("(") && captionLanguage.startsWith( - userPreferredLanguage - .substring(0, userPreferredLanguage.indexOf('('))))) { + userPreferredLanguage + .substring(0, userPreferredLanguage.indexOf('('))))) { final int textRendererIndex = getRendererIndex(C.TRACK_TYPE_TEXT); if (textRendererIndex != RENDERER_UNAVAILABLE) { trackSelector.setPreferredTextLanguage(captionLanguage); @@ -454,7 +437,7 @@ public void onBlocked() { super.onBlocked(); controlsVisibilityHandler.removeCallbacksAndMessages(null); - animateView(controlsRoot, false, DEFAULT_CONTROLS_DURATION); + animateView(controlsRoot, false, DEFAULT_SHORT_ANIM_DURATION); playbackSeekBar.setEnabled(false); // Bug on lower api, disabling and enabling the seekBar resets the thumb color -.-, @@ -464,8 +447,8 @@ public void onBlocked() { } loadingPanel.setBackgroundColor(Color.BLACK); - animateView(loadingPanel, true, 0); - animateView(surfaceForeground, true, 100); + animateView(loadingPanel, true, DEFAULT_SHORT_ANIM_DURATION); + animateView(surfaceForeground, true, DEFAULT_SHORT_ANIM_DURATION); } @Override @@ -485,7 +468,8 @@ public void onPlaying() { loadingPanel.setVisibility(View.GONE); - animateView(currentDisplaySeek, AnimationUtils.Type.SCALE_AND_ALPHA, false, 200); + animateView(currentDisplaySeek, AnimationUtils.Type.SCALE_AND_ALPHA, false, + DEFAULT_SHORT_ANIM_DURATION); } @Override @@ -501,7 +485,7 @@ public void onPaused() { if (DEBUG) { Log.d(TAG, "onPaused() called"); } - showControls(400); + showControls(DEFAULT_SHORT_ANIM_DURATION); loadingPanel.setVisibility(View.GONE); } @@ -517,12 +501,13 @@ public void onPausedSeek() { public void onCompleted() { super.onCompleted(); - showControls(500); - animateView(endScreen, true, 800); - animateView(currentDisplaySeek, AnimationUtils.Type.SCALE_AND_ALPHA, false, 200); + showControls(DEFAULT_SHORT_ANIM_DURATION); + animateView(endScreen, true, 1000); + animateView(currentDisplaySeek, AnimationUtils.Type.SCALE_AND_ALPHA, false, + DEFAULT_SHORT_ANIM_DURATION); loadingPanel.setVisibility(View.GONE); - animateView(surfaceForeground, true, 100); + animateView(surfaceForeground, true, DEFAULT_SHORT_ANIM_DURATION); } /*////////////////////////////////////////////////////////////////////////// @@ -558,7 +543,7 @@ public void onVideoSizeChanged(final int width, final int height, @Override public void onRenderedFirstFrame() { - animateView(surfaceForeground, false, 100); + animateView(surfaceForeground, false, DEFAULT_SHORT_ANIM_DURATION); } /*////////////////////////////////////////////////////////////////////////// @@ -622,7 +607,7 @@ public void onPrepared(final boolean playWhenReady) { if (simpleExoPlayer.getCurrentPosition() != 0 && !isControlsVisible()) { controlsVisibilityHandler.removeCallbacksAndMessages(null); controlsVisibilityHandler - .postDelayed(this::showControlsThenHide, DEFAULT_CONTROLS_DURATION); + .postDelayed(this::showControlsThenHide, DEFAULT_SHORT_ANIM_DURATION); } } @@ -767,7 +752,7 @@ public void onQualitySelectorClicked() { } qualityPopupMenu.show(); isSomePopupMenuVisible = true; - showControls(DEFAULT_CONTROLS_DURATION); + showControls(DEFAULT_SHORT_ANIM_DURATION); final VideoStream videoStream = getSelectedVideoStream(); if (videoStream != null) { @@ -785,7 +770,7 @@ public void onPlaybackSpeedClicked() { } playbackSpeedPopupMenu.show(); isSomePopupMenuVisible = true; - showControls(DEFAULT_CONTROLS_DURATION); + showControls(DEFAULT_SHORT_ANIM_DURATION); } private void onCaptionClicked() { @@ -794,7 +779,7 @@ private void onCaptionClicked() { } captionPopupMenu.show(); isSomePopupMenuVisible = true; - showControls(DEFAULT_CONTROLS_DURATION); + showControls(DEFAULT_SHORT_ANIM_DURATION); } private void onResizeClicked() { @@ -843,9 +828,9 @@ public void onStartTrackingTouch(final SeekBar seekBar) { simpleExoPlayer.setPlayWhenReady(false); } - showControls(0); + showControls(DEFAULT_SHORT_ANIM_DURATION); animateView(currentDisplaySeek, AnimationUtils.Type.SCALE_AND_ALPHA, true, - DEFAULT_CONTROLS_DURATION); + DEFAULT_SHORT_ANIM_DURATION); } @Override @@ -860,7 +845,8 @@ public void onStopTrackingTouch(final SeekBar seekBar) { } playbackCurrentTime.setText(getTimeString(seekBar.getProgress())); - animateView(currentDisplaySeek, AnimationUtils.Type.SCALE_AND_ALPHA, false, 200); + animateView(currentDisplaySeek, AnimationUtils.Type.SCALE_AND_ALPHA, false, + DEFAULT_SHORT_ANIM_DURATION); if (getCurrentState() == STATE_PAUSED_SEEK) { changeState(STATE_BUFFERING); @@ -917,7 +903,7 @@ public void showAndAnimateControl(final int drawableId, final boolean goneOnEnd) PropertyValuesHolder.ofFloat(View.ALPHA, 1f, 0f), PropertyValuesHolder.ofFloat(View.SCALE_X, 1.4f, 1f), PropertyValuesHolder.ofFloat(View.SCALE_Y, 1.4f, 1f) - ).setDuration(DEFAULT_CONTROLS_DURATION); + ).setDuration(DEFAULT_SHORT_ANIM_DURATION); controlViewAnimator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(final Animator animation) { @@ -966,8 +952,8 @@ public void showControlsThenHide() { if (DEBUG) { Log.d(TAG, "showControlsThenHide() called"); } - animateView(controlsRoot, true, DEFAULT_CONTROLS_DURATION, 0, () -> - hideControls(DEFAULT_CONTROLS_DURATION, DEFAULT_CONTROLS_HIDE_TIME)); + animateView(controlsRoot, true, DEFAULT_SHORT_ANIM_DURATION, 0, () -> + hideControls(DEFAULT_SHORT_ANIM_DURATION, DEFAULT_CONTROLS_HIDE_TIME)); } public void showControls(final long duration) { diff --git a/app/src/main/java/org/schabi/newpipe/util/AnimationUtils.java b/app/src/main/java/org/schabi/newpipe/util/AnimationUtils.java index 4fa14ed014a..1fa0ff011c6 100644 --- a/app/src/main/java/org/schabi/newpipe/util/AnimationUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/AnimationUtils.java @@ -38,6 +38,8 @@ public final class AnimationUtils { private static final String TAG = "AnimationUtils"; private static final boolean DEBUG = MainActivity.DEBUG; + public static final long DEFAULT_SHORT_ANIM_DURATION = 250; + public static final long DEFAULT_LONG_ANIM_DURATION = 1000; private AnimationUtils() { }