Search in sources :

Example 6 with TransitionValues

use of android.transition.TransitionValues in project Telegram-FOSS by Telegram-FOSS-Team.

the class StickersAlert method loadStickerSet.

private void loadStickerSet() {
    if (inputStickerSet != null) {
        final MediaDataController mediaDataController = MediaDataController.getInstance(currentAccount);
        if (stickerSet == null && inputStickerSet.short_name != null) {
            stickerSet = mediaDataController.getStickerSetByName(inputStickerSet.short_name);
        }
        if (stickerSet == null) {
            stickerSet = mediaDataController.getStickerSetById(inputStickerSet.id);
        }
        if (stickerSet == null) {
            TLRPC.TL_messages_getStickerSet req = new TLRPC.TL_messages_getStickerSet();
            req.stickerset = inputStickerSet;
            ConnectionsManager.getInstance(currentAccount).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> {
                reqId = 0;
                if (error == null) {
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                        Transition addTarget = new Transition() {

                            @Override
                            public void captureStartValues(TransitionValues transitionValues) {
                                transitionValues.values.put("start", true);
                                transitionValues.values.put("offset", containerView.getTop() + scrollOffsetY);
                            }

                            @Override
                            public void captureEndValues(TransitionValues transitionValues) {
                                transitionValues.values.put("start", false);
                                transitionValues.values.put("offset", containerView.getTop() + scrollOffsetY);
                            }

                            @Override
                            public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues, TransitionValues endValues) {
                                int scrollOffsetY = StickersAlert.this.scrollOffsetY;
                                int startValue = (int) startValues.values.get("offset") - (int) endValues.values.get("offset");
                                final ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
                                animator.setDuration(250);
                                animator.addUpdateListener(a -> {
                                    float fraction = a.getAnimatedFraction();
                                    gridView.setAlpha(fraction);
                                    titleTextView.setAlpha(fraction);
                                    if (startValue != 0) {
                                        int value = (int) (startValue * (1f - fraction));
                                        setScrollOffsetY(scrollOffsetY + value);
                                        gridView.setTranslationY(value);
                                    }
                                });
                                return animator;
                            }
                        };
                        addTarget.addTarget(containerView);
                        TransitionManager.beginDelayedTransition(container, addTarget);
                    }
                    optionsButton.setVisibility(View.VISIBLE);
                    stickerSet = (TLRPC.TL_messages_stickerSet) response;
                    showEmoji = !stickerSet.set.masks;
                    mediaDataController.preloadStickerSetThumb(stickerSet);
                    updateSendButton();
                    updateFields();
                    adapter.notifyDataSetChanged();
                } else {
                    Toast.makeText(getContext(), LocaleController.getString("AddStickersNotFound", R.string.AddStickersNotFound), Toast.LENGTH_SHORT).show();
                    dismiss();
                }
            }));
        } else {
            if (adapter != null) {
                updateSendButton();
                updateFields();
                adapter.notifyDataSetChanged();
            }
            mediaDataController.preloadStickerSetThumb(stickerSet);
        }
    }
    if (stickerSet != null) {
        showEmoji = !stickerSet.set.masks;
    }
}
Also used : ThemeDescription(org.telegram.ui.ActionBar.ThemeDescription) Rect(android.graphics.Rect) LinearLayout(android.widget.LinearLayout) ActionBarMenuItem(org.telegram.ui.ActionBar.ActionBarMenuItem) Spannable(android.text.Spannable) Uri(android.net.Uri) FrameLayout(android.widget.FrameLayout) AndroidUtilities(org.telegram.messenger.AndroidUtilities) Animator(android.animation.Animator) LinkMovementMethod(android.text.method.LinkMovementMethod) TransitionManager(android.transition.TransitionManager) Drawable(android.graphics.drawable.Drawable) Selection(android.text.Selection) Matcher(java.util.regex.Matcher) MediaController(org.telegram.messenger.MediaController) View(android.view.View) Transition(android.transition.Transition) Emoji(org.telegram.messenger.Emoji) FileRefController(org.telegram.messenger.FileRefController) RecyclerView(androidx.recyclerview.widget.RecyclerView) Utilities(org.telegram.messenger.Utilities) ObjectAnimator(android.animation.ObjectAnimator) ImageLocation(org.telegram.messenger.ImageLocation) InputType(android.text.InputType) BaseFragment(org.telegram.ui.ActionBar.BaseFragment) AnimatorListenerAdapter(android.animation.AnimatorListenerAdapter) SendMessagesHelper(org.telegram.messenger.SendMessagesHelper) ConnectionsManager(org.telegram.tgnet.ConnectionsManager) ViewGroup(android.view.ViewGroup) NotificationCenter(org.telegram.messenger.NotificationCenter) SparseArray(android.util.SparseArray) HapticFeedbackConstants(android.view.HapticFeedbackConstants) List(java.util.List) TextView(android.widget.TextView) Pattern(java.util.regex.Pattern) EditorInfo(android.view.inputmethod.EditorInfo) EmptyCell(org.telegram.ui.Cells.EmptyCell) TextWatcher(android.text.TextWatcher) FileLoader(org.telegram.messenger.FileLoader) ChatActivity(org.telegram.ui.ChatActivity) Context(android.content.Context) GridLayoutManager(androidx.recyclerview.widget.GridLayoutManager) FeaturedStickerSetInfoCell(org.telegram.ui.Cells.FeaturedStickerSetInfoCell) Theme(org.telegram.ui.ActionBar.Theme) RequestDelegate(org.telegram.tgnet.RequestDelegate) LocaleController(org.telegram.messenger.LocaleController) HashMap(java.util.HashMap) Editable(android.text.Editable) ArrayList(java.util.ArrayList) SuppressLint(android.annotation.SuppressLint) SpannableStringBuilder(android.text.SpannableStringBuilder) MotionEvent(android.view.MotionEvent) TLRPC(org.telegram.tgnet.TLRPC) TransitionValues(android.transition.TransitionValues) Toast(android.widget.Toast) TLObject(org.telegram.tgnet.TLObject) AnimatorSet(android.animation.AnimatorSet) MessageObject(org.telegram.messenger.MessageObject) MediaDataController(org.telegram.messenger.MediaDataController) Build(android.os.Build) StickerEmojiCell(org.telegram.ui.Cells.StickerEmojiCell) Parcelable(android.os.Parcelable) R(org.telegram.messenger.R) BottomSheet(org.telegram.ui.ActionBar.BottomSheet) ContentPreviewViewer(org.telegram.ui.ContentPreviewViewer) TextUtils(android.text.TextUtils) FileLog(org.telegram.messenger.FileLog) File(java.io.File) MessagesController(org.telegram.messenger.MessagesController) Gravity(android.view.Gravity) android.graphics(android.graphics) TypedValue(android.util.TypedValue) Activity(android.app.Activity) AlertDialog(org.telegram.ui.ActionBar.AlertDialog) ValueAnimator(android.animation.ValueAnimator) TransitionValues(android.transition.TransitionValues) Animator(android.animation.Animator) ObjectAnimator(android.animation.ObjectAnimator) ValueAnimator(android.animation.ValueAnimator) ViewGroup(android.view.ViewGroup) Transition(android.transition.Transition) ValueAnimator(android.animation.ValueAnimator) TLRPC(org.telegram.tgnet.TLRPC) MediaDataController(org.telegram.messenger.MediaDataController)

Example 7 with TransitionValues

use of android.transition.TransitionValues in project Telegram-FOSS by Telegram-FOSS-Team.

the class ActionBar method beginDelayedTransition.

public void beginDelayedTransition() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        TransitionSet transitionSet = new TransitionSet();
        transitionSet.setOrdering(TransitionSet.ORDERING_TOGETHER);
        transitionSet.addTransition(new Fade());
        transitionSet.addTransition(new ChangeBounds() {

            public void captureStartValues(TransitionValues transitionValues) {
                super.captureStartValues(transitionValues);
                if (transitionValues.view instanceof SimpleTextView) {
                    float textSize = ((SimpleTextView) transitionValues.view).getTextPaint().getTextSize();
                    transitionValues.values.put("text_size", textSize);
                }
            }

            public void captureEndValues(TransitionValues transitionValues) {
                super.captureEndValues(transitionValues);
                if (transitionValues.view instanceof SimpleTextView) {
                    float textSize = ((SimpleTextView) transitionValues.view).getTextPaint().getTextSize();
                    transitionValues.values.put("text_size", textSize);
                }
            }

            @Override
            public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues, TransitionValues endValues) {
                if (startValues != null && startValues.view instanceof SimpleTextView) {
                    AnimatorSet animatorSet = new AnimatorSet();
                    if (startValues != null && endValues != null) {
                        Animator animator = super.createAnimator(sceneRoot, startValues, endValues);
                        float s = (float) startValues.values.get("text_size") / (float) endValues.values.get("text_size");
                        startValues.view.setScaleX(s);
                        startValues.view.setScaleY(s);
                        if (animator != null) {
                            animatorSet.playTogether(animator);
                        }
                    }
                    animatorSet.playTogether(ObjectAnimator.ofFloat(startValues.view, SCALE_X, 1f));
                    animatorSet.playTogether(ObjectAnimator.ofFloat(startValues.view, SCALE_Y, 1f));
                    animatorSet.addListener(new AnimatorListenerAdapter() {

                        @Override
                        public void onAnimationStart(Animator animation) {
                            super.onAnimationStart(animation);
                            startValues.view.setLayerType(LAYER_TYPE_HARDWARE, null);
                        }

                        @Override
                        public void onAnimationEnd(Animator animation) {
                            super.onAnimationEnd(animation);
                            startValues.view.setLayerType(LAYER_TYPE_NONE, null);
                        }
                    });
                    return animatorSet;
                } else {
                    return super.createAnimator(sceneRoot, startValues, endValues);
                }
            }
        });
        centerScale = false;
        transitionSet.setDuration(220);
        transitionSet.setInterpolator(CubicBezierInterpolator.DEFAULT);
        TransitionManager.beginDelayedTransition(this, transitionSet);
    }
}
Also used : TransitionValues(android.transition.TransitionValues) Animator(android.animation.Animator) EllipsizeSpanAnimator(org.telegram.ui.Components.EllipsizeSpanAnimator) ObjectAnimator(android.animation.ObjectAnimator) ViewPropertyAnimator(android.view.ViewPropertyAnimator) TransitionSet(android.transition.TransitionSet) ChangeBounds(android.transition.ChangeBounds) ViewGroup(android.view.ViewGroup) AnimatorListenerAdapter(android.animation.AnimatorListenerAdapter) AnimatorSet(android.animation.AnimatorSet) Fade(android.transition.Fade)

Example 8 with TransitionValues

use of android.transition.TransitionValues in project Telegram-FOSS by Telegram-FOSS-Team.

the class PhotoViewer method setCurrentCaption.

private void setCurrentCaption(MessageObject messageObject, final CharSequence caption, boolean animated) {
    if (needCaptionLayout) {
        if (captionTextViewSwitcher.getParent() != pickerView) {
            if (captionContainer != null) {
                captionContainer.removeView(captionTextViewSwitcher);
            }
            captionTextViewSwitcher.setMeasureAllChildren(false);
            pickerView.addView(captionTextViewSwitcher, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.BOTTOM | Gravity.LEFT, 0, 0, 76, 48));
        }
    } else {
        if (captionScrollView == null) {
            captionScrollView = new CaptionScrollView(containerView.getContext());
            captionContainer = new FrameLayout(containerView.getContext());
            captionContainer.setClipChildren(false);
            captionScrollView.addView(captionContainer, new ViewGroup.LayoutParams(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
            containerView.addView(captionScrollView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.BOTTOM));
        }
        if (captionTextViewSwitcher.getParent() != captionContainer) {
            pickerView.removeView(captionTextViewSwitcher);
            captionTextViewSwitcher.setMeasureAllChildren(true);
            captionContainer.addView(captionTextViewSwitcher, LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT);
            videoPreviewFrame.bringToFront();
        }
    }
    final boolean isCaptionEmpty = TextUtils.isEmpty(caption);
    final boolean isCurrentCaptionEmpty = TextUtils.isEmpty(captionTextViewSwitcher.getCurrentView().getText());
    TextView captionTextView = animated ? captionTextViewSwitcher.getNextView() : captionTextViewSwitcher.getCurrentView();
    if (isCurrentVideo) {
        if (captionTextView.getMaxLines() != 1) {
            captionTextViewSwitcher.getCurrentView().setMaxLines(1);
            captionTextViewSwitcher.getNextView().setMaxLines(1);
            captionTextViewSwitcher.getCurrentView().setSingleLine(true);
            captionTextViewSwitcher.getNextView().setSingleLine(true);
            captionTextViewSwitcher.getCurrentView().setEllipsize(TextUtils.TruncateAt.END);
            captionTextViewSwitcher.getNextView().setEllipsize(TextUtils.TruncateAt.END);
        }
    } else {
        final int maxLines = captionTextView.getMaxLines();
        if (maxLines == 1) {
            captionTextViewSwitcher.getCurrentView().setSingleLine(false);
            captionTextViewSwitcher.getNextView().setSingleLine(false);
        }
        final int newCount;
        if (needCaptionLayout) {
            newCount = AndroidUtilities.displaySize.x > AndroidUtilities.displaySize.y ? 5 : 10;
        } else {
            newCount = Integer.MAX_VALUE;
        }
        if (maxLines != newCount) {
            captionTextViewSwitcher.getCurrentView().setMaxLines(newCount);
            captionTextViewSwitcher.getNextView().setMaxLines(newCount);
            captionTextViewSwitcher.getCurrentView().setEllipsize(null);
            captionTextViewSwitcher.getNextView().setEllipsize(null);
        }
    }
    captionTextView.setScrollX(0);
    dontChangeCaptionPosition = !needCaptionLayout && animated && isCaptionEmpty;
    boolean withTransition = false;
    if (!needCaptionLayout) {
        captionScrollView.dontChangeTopMargin = false;
    }
    if (animated && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        withTransition = true;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            TransitionManager.endTransitions(needCaptionLayout ? pickerView : captionScrollView);
        }
        if (needCaptionLayout) {
            final TransitionSet transitionSet = new TransitionSet();
            transitionSet.setOrdering(TransitionSet.ORDERING_TOGETHER);
            transitionSet.addTransition(new ChangeBounds());
            transitionSet.addTransition(new Fade(Fade.OUT));
            transitionSet.addTransition(new Fade(Fade.IN));
            transitionSet.setDuration(200);
            TransitionManager.beginDelayedTransition(pickerView, transitionSet);
        } else {
            final TransitionSet transition = new TransitionSet().addTransition(new Fade(Fade.OUT) {

                @Override
                public Animator onDisappear(ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues) {
                    final Animator animator = super.onDisappear(sceneRoot, view, startValues, endValues);
                    if (!isCurrentCaptionEmpty && isCaptionEmpty && view == captionTextViewSwitcher) {
                        animator.addListener(new AnimatorListenerAdapter() {

                            @Override
                            public void onAnimationEnd(Animator animation) {
                                captionScrollView.setVisibility(View.INVISIBLE);
                                captionScrollView.backgroundAlpha = 1f;
                            }
                        });
                        ((ObjectAnimator) animator).addUpdateListener(animation -> {
                            captionScrollView.backgroundAlpha = (float) animation.getAnimatedValue();
                            captionScrollView.invalidate();
                        });
                    }
                    return animator;
                }
            }).addTransition(new Fade(Fade.IN) {

                @Override
                public Animator onAppear(ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues) {
                    final Animator animator = super.onAppear(sceneRoot, view, startValues, endValues);
                    if (isCurrentCaptionEmpty && !isCaptionEmpty && view == captionTextViewSwitcher) {
                        animator.addListener(new AnimatorListenerAdapter() {

                            @Override
                            public void onAnimationEnd(Animator animation) {
                                captionScrollView.backgroundAlpha = 1f;
                            }
                        });
                        ((ObjectAnimator) animator).addUpdateListener(animation -> {
                            captionScrollView.backgroundAlpha = (float) animation.getAnimatedValue();
                            captionScrollView.invalidate();
                        });
                    }
                    return animator;
                }
            }).setDuration(200);
            if (!isCurrentCaptionEmpty) {
                captionScrollView.dontChangeTopMargin = true;
                transition.addTransition(new Transition() {

                    @Override
                    public void captureStartValues(TransitionValues transitionValues) {
                        if (transitionValues.view == captionScrollView) {
                            transitionValues.values.put("scrollY", captionScrollView.getScrollY());
                        }
                    }

                    @Override
                    public void captureEndValues(TransitionValues transitionValues) {
                        if (transitionValues.view == captionTextViewSwitcher) {
                            transitionValues.values.put("translationY", captionScrollView.getPendingMarginTopDiff());
                        }
                    }

                    @Override
                    public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues, TransitionValues endValues) {
                        if (startValues.view == captionScrollView) {
                            final ValueAnimator animator = ValueAnimator.ofInt((Integer) startValues.values.get("scrollY"), 0);
                            animator.addListener(new AnimatorListenerAdapter() {

                                @Override
                                public void onAnimationEnd(Animator animation) {
                                    captionTextViewSwitcher.getNextView().setText(null);
                                    captionScrollView.applyPendingTopMargin();
                                }

                                @Override
                                public void onAnimationStart(Animator animation) {
                                    captionScrollView.stopScrolling();
                                }
                            });
                            animator.addUpdateListener(a -> captionScrollView.scrollTo(0, (Integer) a.getAnimatedValue()));
                            return animator;
                        } else if (endValues.view == captionTextViewSwitcher) {
                            final int endValue = (int) endValues.values.get("translationY");
                            if (endValue != 0) {
                                final ObjectAnimator animator = ObjectAnimator.ofFloat(captionTextViewSwitcher, View.TRANSLATION_Y, 0, endValue);
                                animator.addListener(new AnimatorListenerAdapter() {

                                    @Override
                                    public void onAnimationEnd(Animator animation) {
                                        captionTextViewSwitcher.setTranslationY(0);
                                    }
                                });
                                return animator;
                            }
                        }
                        return null;
                    }
                });
            }
            if (isCurrentCaptionEmpty && !isCaptionEmpty) {
                transition.addTarget(captionTextViewSwitcher);
            }
            TransitionManager.beginDelayedTransition(captionScrollView, transition);
        }
    } else {
        captionTextViewSwitcher.getCurrentView().setText(null);
        if (captionScrollView != null) {
            captionScrollView.scrollTo(0, 0);
        }
    }
    if (!isCaptionEmpty) {
        Theme.createChatResources(null, true);
        CharSequence str;
        if (messageObject != null && !messageObject.messageOwner.entities.isEmpty()) {
            Spannable spannableString = SpannableString.valueOf(caption);
            messageObject.addEntitiesToText(spannableString, true, false);
            if (messageObject.isVideo()) {
                MessageObject.addUrlsByPattern(messageObject.isOutOwner(), spannableString, false, 3, messageObject.getDuration(), false);
            }
            str = Emoji.replaceEmoji(spannableString, captionTextView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(20), false);
        } else {
            str = Emoji.replaceEmoji(new SpannableStringBuilder(caption), captionTextView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(20), false);
        }
        captionTextViewSwitcher.setTag(str);
        try {
            captionTextViewSwitcher.setText(str, animated);
            if (captionScrollView != null) {
                captionScrollView.updateTopMargin();
            }
        } catch (Exception e) {
            FileLog.e(e);
        }
        captionTextView.setScrollY(0);
        captionTextView.setTextColor(0xffffffff);
        boolean visible = isActionBarVisible && (bottomLayout.getVisibility() == View.VISIBLE || pickerView.getVisibility() == View.VISIBLE || pageBlocksAdapter != null);
        captionTextViewSwitcher.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
    } else {
        if (needCaptionLayout) {
            captionTextViewSwitcher.setText(LocaleController.getString("AddCaption", R.string.AddCaption), animated);
            captionTextViewSwitcher.getCurrentView().setTextColor(0xb2ffffff);
            captionTextViewSwitcher.setTag("empty");
            captionTextViewSwitcher.setVisibility(View.VISIBLE);
        } else {
            captionTextViewSwitcher.setText(null, animated);
            captionTextViewSwitcher.getCurrentView().setTextColor(0xffffffff);
            captionTextViewSwitcher.setVisibility(View.INVISIBLE, !withTransition || isCurrentCaptionEmpty);
            captionTextViewSwitcher.setTag(null);
        }
    }
}
Also used : ViewHelper(org.telegram.ui.Components.ViewHelper) Bundle(android.os.Bundle) AdjustPanLayoutHelper(org.telegram.ui.ActionBar.AdjustPanLayoutHelper) NonNull(androidx.annotation.NonNull) StickersAlert(org.telegram.ui.Components.StickersAlert) Property(android.util.Property) Keep(androidx.annotation.Keep) Map(java.util.Map) ContextCompat(androidx.core.content.ContextCompat) MediaActivity(org.telegram.ui.Components.MediaActivity) C(com.google.android.exoplayer2.C) Surface(android.view.Surface) NotificationCenter(org.telegram.messenger.NotificationCenter) TextViewSwitcher(org.telegram.ui.Components.TextViewSwitcher) Layout(android.text.Layout) Paint(android.graphics.Paint) LinearSmoothScrollerEnd(androidx.recyclerview.widget.LinearSmoothScrollerEnd) PhotoCropView(org.telegram.ui.Components.PhotoCropView) SystemClock(android.os.SystemClock) ExoPlayer(com.google.android.exoplayer2.ExoPlayer) SpannableStringBuilder(android.text.SpannableStringBuilder) Log(com.google.android.exoplayer2.util.Log) TransitionValues(android.transition.TransitionValues) Toast(android.widget.Toast) Menu(android.view.Menu) Settings(android.provider.Settings) PhotoViewerWebView(org.telegram.ui.Components.PhotoViewerWebView) CropView(org.telegram.ui.Components.Crop.CropView) AspectRatioFrameLayout(com.google.android.exoplayer2.ui.AspectRatioFrameLayout) SimpleTextView(org.telegram.ui.ActionBar.SimpleTextView) URLSpan(android.text.style.URLSpan) ActionBarMenu(org.telegram.ui.ActionBar.ActionBarMenu) R(org.telegram.messenger.R) BottomSheet(org.telegram.ui.ActionBar.BottomSheet) Field(java.lang.reflect.Field) UserObject(org.telegram.messenger.UserObject) SharedPreferences(android.content.SharedPreferences) ContactsController(org.telegram.messenger.ContactsController) MessagesStorage(org.telegram.messenger.MessagesStorage) SpoilersTextView(org.telegram.ui.Components.spoilers.SpoilersTextView) Rect(android.graphics.Rect) ActionMode(android.view.ActionMode) LinearLayout(android.widget.LinearLayout) PackageManager(android.content.pm.PackageManager) NestedScrollView(androidx.core.widget.NestedScrollView) FloatSeekBarAccessibilityDelegate(org.telegram.ui.Components.FloatSeekBarAccessibilityDelegate) Date(java.util.Date) WindowManager(android.view.WindowManager) ClickableSpan(android.text.style.ClickableSpan) URLSpanUserMentionPhotoViewer(org.telegram.ui.Components.URLSpanUserMentionPhotoViewer) Animator(android.animation.Animator) TransitionManager(android.transition.TransitionManager) FloatProperty(android.util.FloatProperty) WebFile(org.telegram.messenger.WebFile) ByteArrayInputStream(java.io.ByteArrayInputStream) Locale(java.util.Locale) SpringAnimation(androidx.dynamicanimation.animation.SpringAnimation) ActivityInfo(android.content.pm.ActivityInfo) RecyclerView(androidx.recyclerview.widget.RecyclerView) Method(java.lang.reflect.Method) RectF(android.graphics.RectF) OverScroller(android.widget.OverScroller) ImageLoader(org.telegram.messenger.ImageLoader) SpringForce(androidx.dynamicanimation.animation.SpringForce) PipVideoView(org.telegram.ui.Components.PipVideoView) BaseFragment(org.telegram.ui.ActionBar.BaseFragment) VideoPlayer(org.telegram.ui.Components.VideoPlayer) PorterDuff(android.graphics.PorterDuff) SendMessagesHelper(org.telegram.messenger.SendMessagesHelper) DefaultItemAnimator(androidx.recyclerview.widget.DefaultItemAnimator) UserConfig(org.telegram.messenger.UserConfig) LinearInterpolator(android.view.animation.LinearInterpolator) WindowInsets(android.view.WindowInsets) AnalyticsListener(com.google.android.exoplayer2.analytics.AnalyticsListener) CropTransform(org.telegram.ui.Components.Crop.CropTransform) Spanned(android.text.Spanned) LocaleController(org.telegram.messenger.LocaleController) VideoSeekPreviewImage(org.telegram.ui.Components.VideoSeekPreviewImage) ChangeBounds(android.transition.ChangeBounds) SecureDocument(org.telegram.messenger.SecureDocument) ActionBar(org.telegram.ui.ActionBar.ActionBar) TLObject(org.telegram.tgnet.TLObject) SharedConfig(org.telegram.messenger.SharedConfig) MessageObject(org.telegram.messenger.MessageObject) BuildVars(org.telegram.messenger.BuildVars) Build(android.os.Build) NumberPicker(org.telegram.ui.Components.NumberPicker) DownloadController(org.telegram.messenger.DownloadController) Scroller(android.widget.Scroller) DialogObject(org.telegram.messenger.DialogObject) BackupImageView(org.telegram.ui.Components.BackupImageView) LayoutHelper(org.telegram.ui.Components.LayoutHelper) TextureView(android.view.TextureView) VideoPlayerRewinder(org.telegram.messenger.video.VideoPlayerRewinder) Color(android.graphics.Color) Bitmap(android.graphics.Bitmap) OvershootInterpolator(android.view.animation.OvershootInterpolator) Tooltip(org.telegram.ui.Components.Tooltip) Fade(android.transition.Fade) ViewTreeObserver(android.view.ViewTreeObserver) Vibrator(android.os.Vibrator) Activity(android.app.Activity) ImageReceiver(org.telegram.messenger.ImageReceiver) RecyclerListView(org.telegram.ui.Components.RecyclerListView) Arrays(java.util.Arrays) Uri(android.net.Uri) FrameLayout(android.widget.FrameLayout) ImageView(android.widget.ImageView) AnimatedFileDrawable(org.telegram.ui.Components.AnimatedFileDrawable) SizeNotifierFrameLayoutPhoto(org.telegram.ui.Components.SizeNotifierFrameLayoutPhoto) ColorDrawable(android.graphics.drawable.ColorDrawable) Drawable(android.graphics.drawable.Drawable) Bulletin(org.telegram.ui.Components.Bulletin) PickerBottomLayoutViewer(org.telegram.ui.Components.PickerBottomLayoutViewer) Selection(android.text.Selection) RadialProgressView(org.telegram.ui.Components.RadialProgressView) Manifest(android.Manifest) ActionBarMenuSubItem(org.telegram.ui.ActionBar.ActionBarMenuSubItem) PhotoViewerCaptionEnterView(org.telegram.ui.Components.PhotoViewerCaptionEnterView) GestureDetector2(org.telegram.ui.Components.GestureDetector2) Canvas(android.graphics.Canvas) AccessibilityEvent(android.view.accessibility.AccessibilityEvent) Emoji(org.telegram.messenger.Emoji) ArrayMap(androidx.collection.ArrayMap) ViewCompat(androidx.core.view.ViewCompat) CombinedDrawable(org.telegram.ui.Components.CombinedDrawable) Interpolator(android.view.animation.Interpolator) MentionsAdapter(org.telegram.ui.Adapters.MentionsAdapter) UndoView(org.telegram.ui.Components.UndoView) AnimationProperties(org.telegram.ui.Components.AnimationProperties) AnimatorListenerAdapter(android.animation.AnimatorListenerAdapter) HapticFeedbackConstants(android.view.HapticFeedbackConstants) Nullable(androidx.annotation.Nullable) TextPaint(android.text.TextPaint) VideoEditTextureView(org.telegram.ui.Components.VideoEditTextureView) PorterDuffColorFilter(android.graphics.PorterDuffColorFilter) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager) ExifInterface(androidx.exifinterface.media.ExifInterface) FileLoader(org.telegram.messenger.FileLoader) Dialog(android.app.Dialog) BitmapFactory(android.graphics.BitmapFactory) PaintingOverlay(org.telegram.ui.Components.PaintingOverlay) AlertsCreator(org.telegram.ui.Components.AlertsCreator) Editable(android.text.Editable) ArrayList(java.util.ArrayList) TLRPC(org.telegram.tgnet.TLRPC) GradientDrawable(android.graphics.drawable.GradientDrawable) PhotoPickerPhotoCell(org.telegram.ui.Cells.PhotoPickerPhotoCell) BuildConfig(org.telegram.messenger.BuildConfig) GroupedPhotosListView(org.telegram.ui.Components.GroupedPhotosListView) SpannableString(android.text.SpannableString) PhotoPaintView(org.telegram.ui.Components.PhotoPaintView) FileOutputStream(java.io.FileOutputStream) TextUtils(android.text.TextUtils) ClippingImageView(org.telegram.ui.Components.ClippingImageView) File(java.io.File) Gravity(android.view.Gravity) TypedValue(android.util.TypedValue) Configuration(android.content.res.Configuration) VideoForwardDrawable(org.telegram.ui.Components.VideoForwardDrawable) ColorUtils(androidx.core.graphics.ColorUtils) ChatObject(org.telegram.messenger.ChatObject) AlertDialog(org.telegram.ui.ActionBar.AlertDialog) ValueAnimator(android.animation.ValueAnimator) ActionBarMenuItem(org.telegram.ui.ActionBar.ActionBarMenuItem) FadingTextViewLayout(org.telegram.ui.Components.FadingTextViewLayout) BringAppForegroundService(org.telegram.messenger.BringAppForegroundService) Spannable(android.text.Spannable) Range(android.util.Range) AndroidUtilities(org.telegram.messenger.AndroidUtilities) CubicBezierInterpolator(org.telegram.ui.Components.CubicBezierInterpolator) LinkMovementMethod(android.text.method.LinkMovementMethod) ViewConfiguration(android.view.ViewConfiguration) CheckBoxCell(org.telegram.ui.Cells.CheckBoxCell) ApplicationLoader(org.telegram.messenger.ApplicationLoader) MediaCodecInfo(android.media.MediaCodecInfo) ContextThemeWrapper(android.view.ContextThemeWrapper) MediaController(org.telegram.messenger.MediaController) View(android.view.View) Transition(android.transition.Transition) Matrix(android.graphics.Matrix) TransitionSet(android.transition.TransitionSet) Utilities(org.telegram.messenger.Utilities) HideViewAfterAnimation(org.telegram.ui.Components.HideViewAfterAnimation) ObjectAnimator(android.animation.ObjectAnimator) ImageLocation(org.telegram.messenger.ImageLocation) Touch(android.text.method.Touch) BitmapDrawable(android.graphics.drawable.BitmapDrawable) ConnectionsManager(org.telegram.tgnet.ConnectionsManager) ViewGroup(android.view.ViewGroup) MediaCodec(android.media.MediaCodec) SparseArray(android.util.SparseArray) List(java.util.List) TextView(android.widget.TextView) FileProvider(androidx.core.content.FileProvider) ViewPropertyAnimator(android.view.ViewPropertyAnimator) OtherDocumentPlaceholderDrawable(org.telegram.ui.Components.OtherDocumentPlaceholderDrawable) PlayPauseDrawable(org.telegram.ui.Components.PlayPauseDrawable) VideoTimelinePlayView(org.telegram.ui.Components.VideoTimelinePlayView) OrientationEventListener(android.view.OrientationEventListener) DecelerateInterpolator(android.view.animation.DecelerateInterpolator) PhotoFilterView(org.telegram.ui.Components.PhotoFilterView) ActionBarPopupWindow(org.telegram.ui.ActionBar.ActionBarPopupWindow) Context(android.content.Context) StaticLayout(android.text.StaticLayout) KeyEvent(android.view.KeyEvent) CheckBox(org.telegram.ui.Components.CheckBox) Bitmaps(org.telegram.messenger.Bitmaps) Theme(org.telegram.ui.ActionBar.Theme) BulletinFactory(org.telegram.ui.Components.BulletinFactory) Intent(android.content.Intent) FilterShaders(org.telegram.ui.Components.FilterShaders) HashMap(java.util.HashMap) PixelFormat(android.graphics.PixelFormat) DynamicAnimation(androidx.dynamicanimation.animation.DynamicAnimation) VelocityTracker(android.view.VelocityTracker) SuppressLint(android.annotation.SuppressLint) AccessibilityManager(android.view.accessibility.AccessibilityManager) VideoEditedInfo(org.telegram.messenger.VideoEditedInfo) MotionEvent(android.view.MotionEvent) AnimatorSet(android.animation.AnimatorSet) MediaDataController(org.telegram.messenger.MediaDataController) DialogInterface(android.content.DialogInterface) Browser(org.telegram.messenger.browser.Browser) SurfaceTexture(android.graphics.SurfaceTexture) FileLog(org.telegram.messenger.FileLog) URLSpanReplacement(org.telegram.ui.Components.URLSpanReplacement) MessagesController(org.telegram.messenger.MessagesController) URLEncoder(java.net.URLEncoder) ChatAttachAlert(org.telegram.ui.Components.ChatAttachAlert) VideoPlayerSeekBar(org.telegram.ui.Components.VideoPlayerSeekBar) Collections(java.util.Collections) RLottieDrawable(org.telegram.ui.Components.RLottieDrawable) TransitionValues(android.transition.TransitionValues) ViewGroup(android.view.ViewGroup) ChangeBounds(android.transition.ChangeBounds) ObjectAnimator(android.animation.ObjectAnimator) ValueAnimator(android.animation.ValueAnimator) PhotoCropView(org.telegram.ui.Components.PhotoCropView) PhotoViewerWebView(org.telegram.ui.Components.PhotoViewerWebView) CropView(org.telegram.ui.Components.Crop.CropView) SimpleTextView(org.telegram.ui.ActionBar.SimpleTextView) SpoilersTextView(org.telegram.ui.Components.spoilers.SpoilersTextView) NestedScrollView(androidx.core.widget.NestedScrollView) RecyclerView(androidx.recyclerview.widget.RecyclerView) PipVideoView(org.telegram.ui.Components.PipVideoView) BackupImageView(org.telegram.ui.Components.BackupImageView) TextureView(android.view.TextureView) RecyclerListView(org.telegram.ui.Components.RecyclerListView) ImageView(android.widget.ImageView) RadialProgressView(org.telegram.ui.Components.RadialProgressView) PhotoViewerCaptionEnterView(org.telegram.ui.Components.PhotoViewerCaptionEnterView) UndoView(org.telegram.ui.Components.UndoView) VideoEditTextureView(org.telegram.ui.Components.VideoEditTextureView) GroupedPhotosListView(org.telegram.ui.Components.GroupedPhotosListView) PhotoPaintView(org.telegram.ui.Components.PhotoPaintView) ClippingImageView(org.telegram.ui.Components.ClippingImageView) View(android.view.View) TextView(android.widget.TextView) VideoTimelinePlayView(org.telegram.ui.Components.VideoTimelinePlayView) PhotoFilterView(org.telegram.ui.Components.PhotoFilterView) Paint(android.graphics.Paint) TextPaint(android.text.TextPaint) SuppressLint(android.annotation.SuppressLint) Animator(android.animation.Animator) DefaultItemAnimator(androidx.recyclerview.widget.DefaultItemAnimator) ValueAnimator(android.animation.ValueAnimator) ObjectAnimator(android.animation.ObjectAnimator) ViewPropertyAnimator(android.view.ViewPropertyAnimator) TransitionSet(android.transition.TransitionSet) AnimatorListenerAdapter(android.animation.AnimatorListenerAdapter) AspectRatioFrameLayout(com.google.android.exoplayer2.ui.AspectRatioFrameLayout) FrameLayout(android.widget.FrameLayout) Transition(android.transition.Transition) SimpleTextView(org.telegram.ui.ActionBar.SimpleTextView) SpoilersTextView(org.telegram.ui.Components.spoilers.SpoilersTextView) TextView(android.widget.TextView) Fade(android.transition.Fade) Spannable(android.text.Spannable) SpannableStringBuilder(android.text.SpannableStringBuilder)

Aggregations

TransitionValues (android.transition.TransitionValues)8 Animator (android.animation.Animator)7 ObjectAnimator (android.animation.ObjectAnimator)7 ViewGroup (android.view.ViewGroup)7 AnimatorSet (android.animation.AnimatorSet)6 TransitionSet (android.transition.TransitionSet)6 View (android.view.View)6 TextView (android.widget.TextView)6 ValueAnimator (android.animation.ValueAnimator)5 ChangeBounds (android.transition.ChangeBounds)5 ImageView (android.widget.ImageView)5 AnimatorListenerAdapter (android.animation.AnimatorListenerAdapter)4 Paint (android.graphics.Paint)4 Transition (android.transition.Transition)4 SuppressLint (android.annotation.SuppressLint)3 Context (android.content.Context)3 Drawable (android.graphics.drawable.Drawable)3 Build (android.os.Build)3 TransitionManager (android.transition.TransitionManager)3 Visibility (android.transition.Visibility)3