Example usage for android.animation AnimatorSet AnimatorSet

List of usage examples for android.animation AnimatorSet AnimatorSet

Introduction

In this page you can find the example usage for android.animation AnimatorSet AnimatorSet.

Prototype

public AnimatorSet() 

Source Link

Usage

From source file:kr.wdream.ui.PhotoViewer.java

public boolean openPhoto(final MessageObject messageObject, final TLRPC.FileLocation fileLocation,
        final ArrayList<MessageObject> messages, final ArrayList<Object> photos, final int index,
        final PhotoViewerProvider provider, ChatActivity chatActivity, long dialogId, long mDialogId) {
    if (parentActivity == null || isVisible || provider == null && checkAnimation()
            || messageObject == null && fileLocation == null && messages == null && photos == null) {
        return false;
    }/*w  ww . j  a  v a  2 s.  c  o m*/

    final PlaceProviderObject object = provider.getPlaceForPhoto(messageObject, fileLocation, index);
    if (object == null && photos == null) {
        return false;
    }

    WindowManager wm = (WindowManager) parentActivity.getSystemService(Context.WINDOW_SERVICE);
    if (attachedToWindow) {
        try {
            wm.removeView(windowView);
        } catch (Exception e) {
            //don't promt
        }
    }

    try {
        windowLayoutParams.type = WindowManager.LayoutParams.LAST_APPLICATION_WINDOW;
        if (Build.VERSION.SDK_INT >= 21) {
            windowLayoutParams.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
                    | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR
                    | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                    | WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
        } else {
            windowLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
        }
        windowLayoutParams.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
                | WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION;
        windowView.setFocusable(false);
        containerView.setFocusable(false);
        wm.addView(windowView, windowLayoutParams);
    } catch (Exception e) {
        FileLog.e("tmessages", e);
        return false;
    }

    parentChatActivity = chatActivity;

    actionBar.setTitle(LocaleController.formatString("Of", kr.wdream.storyshop.R.string.Of, 1, 1));
    NotificationCenter.getInstance().addObserver(this, NotificationCenter.FileDidFailedLoad);
    NotificationCenter.getInstance().addObserver(this, NotificationCenter.FileDidLoaded);
    NotificationCenter.getInstance().addObserver(this, NotificationCenter.FileLoadProgressChanged);
    NotificationCenter.getInstance().addObserver(this, NotificationCenter.mediaCountDidLoaded);
    NotificationCenter.getInstance().addObserver(this, NotificationCenter.mediaDidLoaded);
    NotificationCenter.getInstance().addObserver(this, NotificationCenter.dialogPhotosLoaded);
    NotificationCenter.getInstance().addObserver(this, NotificationCenter.emojiDidLoaded);

    placeProvider = provider;
    mergeDialogId = mDialogId;
    currentDialogId = dialogId;

    if (velocityTracker == null) {
        velocityTracker = VelocityTracker.obtain();
    }

    isVisible = true;
    toggleActionBar(true, false);

    if (object != null) {
        disableShowCheck = true;
        animationInProgress = 1;
        if (messageObject != null) {
            currentAnimation = object.imageReceiver.getAnimation();
        }

        onPhotoShow(messageObject, fileLocation, messages, photos, index, object);

        final Rect drawRegion = object.imageReceiver.getDrawRegion();
        int orientation = object.imageReceiver.getOrientation();
        int animatedOrientation = object.imageReceiver.getAnimatedOrientation();
        if (animatedOrientation != 0) {
            orientation = animatedOrientation;
        }

        animatingImageView.setVisibility(View.VISIBLE);
        animatingImageView.setRadius(object.radius);
        animatingImageView.setOrientation(orientation);
        animatingImageView.setNeedRadius(object.radius != 0);
        animatingImageView.setImageBitmap(object.thumb);

        animatingImageView.setAlpha(1.0f);
        animatingImageView.setPivotX(0.0f);
        animatingImageView.setPivotY(0.0f);
        animatingImageView.setScaleX(object.scale);
        animatingImageView.setScaleY(object.scale);
        animatingImageView.setTranslationX(object.viewX + drawRegion.left * object.scale);
        animatingImageView.setTranslationY(object.viewY + drawRegion.top * object.scale);
        final ViewGroup.LayoutParams layoutParams = animatingImageView.getLayoutParams();
        layoutParams.width = (drawRegion.right - drawRegion.left);
        layoutParams.height = (drawRegion.bottom - drawRegion.top);
        animatingImageView.setLayoutParams(layoutParams);

        float scaleX = (float) AndroidUtilities.displaySize.x / layoutParams.width;
        float scaleY = (float) (AndroidUtilities.displaySize.y
                + (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0)) / layoutParams.height;
        float scale = scaleX > scaleY ? scaleY : scaleX;
        float width = layoutParams.width * scale;
        float height = layoutParams.height * scale;
        float xPos = (AndroidUtilities.displaySize.x - width) / 2.0f;
        float yPos = ((AndroidUtilities.displaySize.y
                + (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0)) - height) / 2.0f;
        int clipHorizontal = Math.abs(drawRegion.left - object.imageReceiver.getImageX());
        int clipVertical = Math.abs(drawRegion.top - object.imageReceiver.getImageY());

        int coords2[] = new int[2];
        object.parentView.getLocationInWindow(coords2);
        int clipTop = coords2[1] - (Build.VERSION.SDK_INT >= 21 ? 0 : AndroidUtilities.statusBarHeight)
                - (object.viewY + drawRegion.top) + object.clipTopAddition;
        if (clipTop < 0) {
            clipTop = 0;
        }
        int clipBottom = (object.viewY + drawRegion.top + layoutParams.height)
                - (coords2[1] + object.parentView.getHeight()
                        - (Build.VERSION.SDK_INT >= 21 ? 0 : AndroidUtilities.statusBarHeight))
                + object.clipBottomAddition;
        if (clipBottom < 0) {
            clipBottom = 0;
        }
        clipTop = Math.max(clipTop, clipVertical);
        clipBottom = Math.max(clipBottom, clipVertical);

        animationValues[0][0] = animatingImageView.getScaleX();
        animationValues[0][1] = animatingImageView.getScaleY();
        animationValues[0][2] = animatingImageView.getTranslationX();
        animationValues[0][3] = animatingImageView.getTranslationY();
        animationValues[0][4] = clipHorizontal * object.scale;
        animationValues[0][5] = clipTop * object.scale;
        animationValues[0][6] = clipBottom * object.scale;
        animationValues[0][7] = animatingImageView.getRadius();

        animationValues[1][0] = scale;
        animationValues[1][1] = scale;
        animationValues[1][2] = xPos;
        animationValues[1][3] = yPos;
        animationValues[1][4] = 0;
        animationValues[1][5] = 0;
        animationValues[1][6] = 0;
        animationValues[1][7] = 0;

        animatingImageView.setAnimationProgress(0);
        backgroundDrawable.setAlpha(0);
        containerView.setAlpha(0);

        final AnimatorSet animatorSet = new AnimatorSet();
        animatorSet.playTogether(ObjectAnimator.ofFloat(animatingImageView, "animationProgress", 0.0f, 1.0f),
                ObjectAnimator.ofInt(backgroundDrawable, "alpha", 0, 255),
                ObjectAnimator.ofFloat(containerView, "alpha", 0.0f, 1.0f));

        animationEndRunnable = new Runnable() {
            @Override
            public void run() {
                if (containerView == null || windowView == null) {
                    return;
                }
                if (Build.VERSION.SDK_INT >= 18) {
                    containerView.setLayerType(View.LAYER_TYPE_NONE, null);
                }
                animationInProgress = 0;
                transitionAnimationStartTime = 0;
                setImages();
                containerView.invalidate();
                animatingImageView.setVisibility(View.GONE);
                if (showAfterAnimation != null) {
                    showAfterAnimation.imageReceiver.setVisible(true, true);
                }
                if (hideAfterAnimation != null) {
                    hideAfterAnimation.imageReceiver.setVisible(false, true);
                }
                if (photos != null && sendPhotoType != 3) {
                    if (Build.VERSION.SDK_INT >= 21) {
                        windowLayoutParams.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
                                | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR
                                | WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
                    } else {
                        windowLayoutParams.flags = 0;
                    }
                    windowLayoutParams.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
                            | WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION;
                    WindowManager wm = (WindowManager) parentActivity.getSystemService(Context.WINDOW_SERVICE);
                    wm.updateViewLayout(windowView, windowLayoutParams);
                    windowView.setFocusable(true);
                    containerView.setFocusable(true);
                }
            }
        };

        animatorSet.setDuration(200);
        animatorSet.addListener(new AnimatorListenerAdapterProxy() {
            @Override
            public void onAnimationEnd(Animator animation) {
                AndroidUtilities.runOnUIThread(new Runnable() {
                    @Override
                    public void run() {
                        NotificationCenter.getInstance().setAnimationInProgress(false);
                        if (animationEndRunnable != null) {
                            animationEndRunnable.run();
                            animationEndRunnable = null;
                        }
                    }
                });
            }
        });
        transitionAnimationStartTime = System.currentTimeMillis();
        AndroidUtilities.runOnUIThread(new Runnable() {
            @Override
            public void run() {
                NotificationCenter.getInstance()
                        .setAllowedNotificationsDutingAnimation(new int[] {
                                NotificationCenter.dialogsNeedReload, NotificationCenter.closeChats,
                                NotificationCenter.mediaCountDidLoaded, NotificationCenter.mediaDidLoaded,
                                NotificationCenter.dialogPhotosLoaded });
                NotificationCenter.getInstance().setAnimationInProgress(true);
                animatorSet.start();
            }
        });
        if (Build.VERSION.SDK_INT >= 18) {
            containerView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
        }
        backgroundDrawable.drawRunnable = new Runnable() {
            @Override
            public void run() {
                disableShowCheck = false;
                object.imageReceiver.setVisible(false, true);
            }
        };
    } else {
        if (photos != null && sendPhotoType != 3) {
            if (Build.VERSION.SDK_INT >= 21) {
                windowLayoutParams.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
                        | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR
                        | WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
            } else {
                windowLayoutParams.flags = 0;
            }
            windowLayoutParams.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
                    | WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION;
            wm.updateViewLayout(windowView, windowLayoutParams);
            windowView.setFocusable(true);
            containerView.setFocusable(true);
        }

        backgroundDrawable.setAlpha(255);
        containerView.setAlpha(1.0f);
        onPhotoShow(messageObject, fileLocation, messages, photos, index, object);
    }
    return true;
}

From source file:kr.wdream.ui.PhotoViewer.java

public void closePhoto(boolean animated, boolean fromEditMode) {
    if (!fromEditMode && currentEditMode != 0) {
        if (currentEditMode == 3 && photoPaintView != null) {
            photoPaintView.maybeShowDismissalAlert(this, parentActivity, new Runnable() {
                @Override/*w  w  w .  j  av  a 2  s  .c o m*/
                public void run() {
                    switchToEditMode(0);
                }
            });
            return;
        }

        if (currentEditMode == 1) {
            photoCropView.cancelAnimationRunnable();
        }
        switchToEditMode(0);
        return;
    }
    try {
        if (visibleDialog != null) {
            visibleDialog.dismiss();
            visibleDialog = null;
        }
    } catch (Exception e) {
        FileLog.e("tmessages", e);
    }

    if (currentEditMode != 0) {
        if (currentEditMode == 2) {
            photoFilterView.shutdown();
            containerView.removeView(photoFilterView);
            photoFilterView = null;
        } else if (currentEditMode == 1) {
            editorDoneLayout.setVisibility(View.GONE);
            photoCropView.setVisibility(View.GONE);
        }
        currentEditMode = 0;
    }

    if (parentActivity == null || !isVisible || checkAnimation() || placeProvider == null) {
        return;
    }
    if (captionEditText.hideActionMode() && !fromEditMode) {
        return;
    }

    releasePlayer();
    captionEditText.onDestroy();
    parentChatActivity = null;
    NotificationCenter.getInstance().removeObserver(this, NotificationCenter.FileDidFailedLoad);
    NotificationCenter.getInstance().removeObserver(this, NotificationCenter.FileDidLoaded);
    NotificationCenter.getInstance().removeObserver(this, NotificationCenter.FileLoadProgressChanged);
    NotificationCenter.getInstance().removeObserver(this, NotificationCenter.mediaCountDidLoaded);
    NotificationCenter.getInstance().removeObserver(this, NotificationCenter.mediaDidLoaded);
    NotificationCenter.getInstance().removeObserver(this, NotificationCenter.dialogPhotosLoaded);
    NotificationCenter.getInstance().removeObserver(this, NotificationCenter.emojiDidLoaded);
    ConnectionsManager.getInstance().cancelRequestsForGuid(classGuid);

    isActionBarVisible = false;

    if (velocityTracker != null) {
        velocityTracker.recycle();
        velocityTracker = null;
    }
    ConnectionsManager.getInstance().cancelRequestsForGuid(classGuid);

    final PlaceProviderObject object = placeProvider.getPlaceForPhoto(currentMessageObject, currentFileLocation,
            currentIndex);

    if (animated) {
        animationInProgress = 1;
        animatingImageView.setVisibility(View.VISIBLE);
        containerView.invalidate();

        AnimatorSet animatorSet = new AnimatorSet();

        final ViewGroup.LayoutParams layoutParams = animatingImageView.getLayoutParams();
        Rect drawRegion = null;
        int orientation = centerImage.getOrientation();
        int animatedOrientation = 0;
        if (object != null && object.imageReceiver != null) {
            animatedOrientation = object.imageReceiver.getAnimatedOrientation();
        }
        if (animatedOrientation != 0) {
            orientation = animatedOrientation;
        }
        animatingImageView.setOrientation(orientation);
        if (object != null) {
            animatingImageView.setNeedRadius(object.radius != 0);
            drawRegion = object.imageReceiver.getDrawRegion();
            layoutParams.width = drawRegion.right - drawRegion.left;
            layoutParams.height = drawRegion.bottom - drawRegion.top;
            animatingImageView.setImageBitmap(object.thumb);
        } else {
            animatingImageView.setNeedRadius(false);
            layoutParams.width = centerImage.getImageWidth();
            layoutParams.height = centerImage.getImageHeight();
            animatingImageView.setImageBitmap(centerImage.getBitmap());
        }
        animatingImageView.setLayoutParams(layoutParams);

        float scaleX = (float) AndroidUtilities.displaySize.x / layoutParams.width;
        float scaleY = (float) (AndroidUtilities.displaySize.y
                + (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0)) / layoutParams.height;
        float scale2 = scaleX > scaleY ? scaleY : scaleX;
        float width = layoutParams.width * scale * scale2;
        float height = layoutParams.height * scale * scale2;
        float xPos = (AndroidUtilities.displaySize.x - width) / 2.0f;
        float yPos = ((AndroidUtilities.displaySize.y
                + (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0)) - height) / 2.0f;
        animatingImageView.setTranslationX(xPos + translationX);
        animatingImageView.setTranslationY(yPos + translationY);
        animatingImageView.setScaleX(scale * scale2);
        animatingImageView.setScaleY(scale * scale2);

        if (object != null) {
            object.imageReceiver.setVisible(false, true);
            int clipHorizontal = Math.abs(drawRegion.left - object.imageReceiver.getImageX());
            int clipVertical = Math.abs(drawRegion.top - object.imageReceiver.getImageY());

            int coords2[] = new int[2];
            object.parentView.getLocationInWindow(coords2);
            int clipTop = coords2[1] - (Build.VERSION.SDK_INT >= 21 ? 0 : AndroidUtilities.statusBarHeight)
                    - (object.viewY + drawRegion.top) + object.clipTopAddition;
            if (clipTop < 0) {
                clipTop = 0;
            }
            int clipBottom = (object.viewY + drawRegion.top + (drawRegion.bottom - drawRegion.top))
                    - (coords2[1] + object.parentView.getHeight()
                            - (Build.VERSION.SDK_INT >= 21 ? 0 : AndroidUtilities.statusBarHeight))
                    + object.clipBottomAddition;
            if (clipBottom < 0) {
                clipBottom = 0;
            }

            clipTop = Math.max(clipTop, clipVertical);
            clipBottom = Math.max(clipBottom, clipVertical);

            animationValues[0][0] = animatingImageView.getScaleX();
            animationValues[0][1] = animatingImageView.getScaleY();
            animationValues[0][2] = animatingImageView.getTranslationX();
            animationValues[0][3] = animatingImageView.getTranslationY();
            animationValues[0][4] = 0;
            animationValues[0][5] = 0;
            animationValues[0][6] = 0;
            animationValues[0][7] = 0;

            animationValues[1][0] = object.scale;
            animationValues[1][1] = object.scale;
            animationValues[1][2] = object.viewX + drawRegion.left * object.scale;
            animationValues[1][3] = object.viewY + drawRegion.top * object.scale;
            animationValues[1][4] = clipHorizontal * object.scale;
            animationValues[1][5] = clipTop * object.scale;
            animationValues[1][6] = clipBottom * object.scale;
            animationValues[1][7] = object.radius;

            animatorSet.playTogether(
                    ObjectAnimator.ofFloat(animatingImageView, "animationProgress", 0.0f, 1.0f),
                    ObjectAnimator.ofInt(backgroundDrawable, "alpha", 0),
                    ObjectAnimator.ofFloat(containerView, "alpha", 0.0f));
        } else {
            int h = (AndroidUtilities.displaySize.y
                    + (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0));
            animatorSet.playTogether(ObjectAnimator.ofInt(backgroundDrawable, "alpha", 0),
                    ObjectAnimator.ofFloat(animatingImageView, "alpha", 0.0f),
                    ObjectAnimator.ofFloat(animatingImageView, "translationY", translationY >= 0 ? h : -h),
                    ObjectAnimator.ofFloat(containerView, "alpha", 0.0f));
        }

        animationEndRunnable = new Runnable() {
            @Override
            public void run() {
                if (Build.VERSION.SDK_INT >= 18) {
                    containerView.setLayerType(View.LAYER_TYPE_NONE, null);
                }
                animationInProgress = 0;
                onPhotoClosed(object);
            }
        };

        animatorSet.setDuration(200);
        animatorSet.addListener(new AnimatorListenerAdapterProxy() {
            @Override
            public void onAnimationEnd(Animator animation) {
                AndroidUtilities.runOnUIThread(new Runnable() {
                    @Override
                    public void run() {
                        if (animationEndRunnable != null) {
                            animationEndRunnable.run();
                            animationEndRunnable = null;
                        }
                    }
                });
            }
        });
        transitionAnimationStartTime = System.currentTimeMillis();
        if (Build.VERSION.SDK_INT >= 18) {
            containerView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
        }
        animatorSet.start();
    } else {
        AnimatorSet animatorSet = new AnimatorSet();
        animatorSet.playTogether(ObjectAnimator.ofFloat(containerView, "scaleX", 0.9f),
                ObjectAnimator.ofFloat(containerView, "scaleY", 0.9f),
                ObjectAnimator.ofInt(backgroundDrawable, "alpha", 0),
                ObjectAnimator.ofFloat(containerView, "alpha", 0.0f));
        animationInProgress = 2;
        animationEndRunnable = new Runnable() {
            @Override
            public void run() {
                if (containerView == null) {
                    return;
                }
                if (Build.VERSION.SDK_INT >= 18) {
                    containerView.setLayerType(View.LAYER_TYPE_NONE, null);
                }
                animationInProgress = 0;
                onPhotoClosed(object);
                containerView.setScaleX(1.0f);
                containerView.setScaleY(1.0f);
            }
        };
        animatorSet.setDuration(200);
        animatorSet.addListener(new AnimatorListenerAdapterProxy() {
            @Override
            public void onAnimationEnd(Animator animation) {
                if (animationEndRunnable != null) {
                    animationEndRunnable.run();
                    animationEndRunnable = null;
                }
            }
        });
        transitionAnimationStartTime = System.currentTimeMillis();
        if (Build.VERSION.SDK_INT >= 18) {
            containerView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
        }
        animatorSet.start();
    }
    if (currentAnimation != null) {
        currentAnimation.setSecondParentView(null);
        currentAnimation = null;
        centerImage.setImageBitmap((Drawable) null);
    }
    if (placeProvider instanceof EmptyPhotoViewerProvider) {
        placeProvider.cancelButtonPressed();
    }
}

From source file:org.telegram.ui.ArticleViewer.java

private void toggleActionBar(boolean show, final boolean animated) {
    if (show) {/*from ww w.j a  v  a  2s .c  o m*/
        actionBar.setVisibility(View.VISIBLE);
        if (videoPlayer != null) {
            bottomLayout.setVisibility(View.VISIBLE);
        }
        if (captionTextView.getTag() != null) {
            captionTextView.setVisibility(View.VISIBLE);
        }
    }
    isActionBarVisible = show;
    actionBar.setEnabled(show);
    bottomLayout.setEnabled(show);

    if (animated) {
        ArrayList<Animator> arrayList = new ArrayList<>();
        arrayList.add(ObjectAnimator.ofFloat(actionBar, "alpha", show ? 1.0f : 0.0f));
        arrayList.add(ObjectAnimator.ofFloat(bottomLayout, "alpha", show ? 1.0f : 0.0f));
        if (captionTextView.getTag() != null) {
            arrayList.add(ObjectAnimator.ofFloat(captionTextView, "alpha", show ? 1.0f : 0.0f));
        }
        currentActionBarAnimation = new AnimatorSet();
        currentActionBarAnimation.playTogether(arrayList);
        if (!show) {
            currentActionBarAnimation.addListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    if (currentActionBarAnimation != null && currentActionBarAnimation.equals(animation)) {
                        actionBar.setVisibility(View.GONE);
                        if (videoPlayer != null) {
                            bottomLayout.setVisibility(View.GONE);
                        }
                        if (captionTextView.getTag() != null) {
                            captionTextView.setVisibility(View.INVISIBLE);
                        }
                        currentActionBarAnimation = null;
                    }
                }
            });
        }

        currentActionBarAnimation.setDuration(200);
        currentActionBarAnimation.start();
    } else {
        actionBar.setAlpha(show ? 1.0f : 0.0f);
        bottomLayout.setAlpha(show ? 1.0f : 0.0f);
        if (captionTextView.getTag() != null) {
            captionTextView.setAlpha(show ? 1.0f : 0.0f);
        }
        if (!show) {
            actionBar.setVisibility(View.GONE);
            if (videoPlayer != null) {
                bottomLayout.setVisibility(View.GONE);
            }
            if (captionTextView.getTag() != null) {
                captionTextView.setVisibility(View.INVISIBLE);
            }
        }
    }
}

From source file:kr.wdream.ui.PhotoViewer.java

private void animateTo(float newScale, float newTx, float newTy, boolean isZoom, int duration) {
    if (scale == newScale && translationX == newTx && translationY == newTy) {
        return;//ww  w . j a  v a2  s.co  m
    }
    zoomAnimation = isZoom;
    animateToScale = newScale;
    animateToX = newTx;
    animateToY = newTy;
    animationStartTime = System.currentTimeMillis();
    imageMoveAnimation = new AnimatorSet();
    imageMoveAnimation.playTogether(ObjectAnimator.ofFloat(this, "animationValue", 0, 1));
    imageMoveAnimation.setInterpolator(interpolator);
    imageMoveAnimation.setDuration(duration);
    imageMoveAnimation.addListener(new AnimatorListenerAdapterProxy() {
        @Override
        public void onAnimationEnd(Animator animation) {
            imageMoveAnimation = null;
            containerView.invalidate();
        }
    });
    imageMoveAnimation.start();
}

From source file:kr.wdream.ui.ChatActivity.java

private void addToSelectedMessages(MessageObject messageObject) {
    int index = messageObject.getDialogId() == dialog_id ? 0 : 1;
    if (selectedMessagesIds[index].containsKey(messageObject.getId())) {
        selectedMessagesIds[index].remove(messageObject.getId());
        if (messageObject.type == 0 || messageObject.caption != null) {
            selectedMessagesCanCopyIds[index].remove(messageObject.getId());
        }/*ww w . jav a  2s.  c o m*/
        if (!messageObject.canDeleteMessage(currentChat)) {
            cantDeleteMessagesCount--;
        }
    } else {
        selectedMessagesIds[index].put(messageObject.getId(), messageObject);
        if (messageObject.type == 0 || messageObject.caption != null) {
            selectedMessagesCanCopyIds[index].put(messageObject.getId(), messageObject);
        }
        if (!messageObject.canDeleteMessage(currentChat)) {
            cantDeleteMessagesCount++;
        }
    }
    if (actionBar.isActionModeShowed()) {
        if (selectedMessagesIds[0].isEmpty() && selectedMessagesIds[1].isEmpty()) {
            actionBar.hideActionMode();
            updatePinnedMessageView(true);
        } else {
            int copyVisible = actionBar.createActionMode().getItem(copy).getVisibility();
            actionBar.createActionMode().getItem(copy).setVisibility(
                    selectedMessagesCanCopyIds[0].size() + selectedMessagesCanCopyIds[1].size() != 0
                            ? View.VISIBLE
                            : View.GONE);
            int newCopyVisible = actionBar.createActionMode().getItem(copy).getVisibility();
            actionBar.createActionMode().getItem(delete)
                    .setVisibility(cantDeleteMessagesCount == 0 ? View.VISIBLE : View.GONE);
            final ActionBarMenuItem replyItem = actionBar.createActionMode().getItem(reply);
            if (replyItem != null) {
                boolean allowChatActions = true;
                if (currentEncryptedChat != null
                        && AndroidUtilities.getPeerLayerVersion(currentEncryptedChat.layer) < 46
                        || isBroadcast
                        || currentChat != null && (ChatObject.isNotInChat(currentChat)
                                || ChatObject.isChannel(currentChat) && !currentChat.creator
                                        && !currentChat.editor && !currentChat.megagroup)) {
                    allowChatActions = false;
                }
                final int newVisibility = allowChatActions
                        && selectedMessagesIds[0].size() + selectedMessagesIds[1].size() == 1 ? View.VISIBLE
                                : View.GONE;
                if (replyItem.getVisibility() != newVisibility) {
                    if (replyButtonAnimation != null) {
                        replyButtonAnimation.cancel();
                    }
                    if (copyVisible != newCopyVisible) {
                        if (newVisibility == View.VISIBLE) {
                            replyItem.setAlpha(1.0f);
                            replyItem.setScaleX(1.0f);
                        } else {
                            replyItem.setAlpha(0.0f);
                            replyItem.setScaleX(0.0f);
                        }
                        replyItem.setVisibility(newVisibility);
                    } else {
                        replyButtonAnimation = new AnimatorSet();
                        replyItem.setPivotX(AndroidUtilities.dp(54));
                        if (newVisibility == View.VISIBLE) {
                            replyItem.setVisibility(newVisibility);
                            replyButtonAnimation.playTogether(ObjectAnimator.ofFloat(replyItem, "alpha", 1.0f),
                                    ObjectAnimator.ofFloat(replyItem, "scaleX", 1.0f));
                        } else {
                            replyButtonAnimation.playTogether(ObjectAnimator.ofFloat(replyItem, "alpha", 0.0f),
                                    ObjectAnimator.ofFloat(replyItem, "scaleX", 0.0f));
                        }
                        replyButtonAnimation.setDuration(100);
                        replyButtonAnimation.addListener(new AnimatorListenerAdapterProxy() {
                            @Override
                            public void onAnimationEnd(Animator animation) {
                                if (replyButtonAnimation != null && replyButtonAnimation.equals(animation)) {
                                    if (newVisibility == View.GONE) {
                                        replyItem.setVisibility(View.GONE);
                                    }
                                }
                            }

                            @Override
                            public void onAnimationCancel(Animator animation) {
                                if (replyButtonAnimation != null && replyButtonAnimation.equals(animation)) {
                                    replyButtonAnimation = null;
                                }
                            }
                        });
                        replyButtonAnimation.start();
                    }
                }
            }
        }
    }
}

From source file:org.telegram.ui.ArticleViewer.java

public boolean openPhoto(TLRPC.PageBlock block) {
    if (parentActivity == null || isPhotoVisible || checkPhotoAnimation() || block == null) {
        return false;
    }/*from  w ww  .  j  a  v a 2  s. c o  m*/

    final PlaceProviderObject object = getPlaceForPhoto(block);
    if (object == null) {
        return false;
    }

    NotificationCenter.getInstance().addObserver(this, NotificationCenter.FileDidFailedLoad);
    NotificationCenter.getInstance().addObserver(this, NotificationCenter.FileDidLoaded);
    NotificationCenter.getInstance().addObserver(this, NotificationCenter.FileLoadProgressChanged);
    NotificationCenter.getInstance().addObserver(this, NotificationCenter.emojiDidLoaded);

    if (velocityTracker == null) {
        velocityTracker = VelocityTracker.obtain();
    }

    isPhotoVisible = true;
    toggleActionBar(true, false);
    actionBar.setAlpha(0.0f);
    bottomLayout.setAlpha(0.0f);
    captionTextView.setAlpha(0.0f);
    photoBackgroundDrawable.setAlpha(0);
    disableShowCheck = true;
    photoAnimationInProgress = 1;
    if (block != null) {
        currentAnimation = object.imageReceiver.getAnimation();
    }
    int index = photoBlocks.indexOf(block);

    imagesArr.clear();
    if (!(block instanceof TLRPC.TL_pageBlockVideo) || isVideoBlock(block)) {
        imagesArr.addAll(photoBlocks);
    } else {
        imagesArr.add(block);
        index = 0;
    }

    onPhotoShow(index, object);

    final Rect drawRegion = object.imageReceiver.getDrawRegion();
    int orientation = object.imageReceiver.getOrientation();
    int animatedOrientation = object.imageReceiver.getAnimatedOrientation();
    if (animatedOrientation != 0) {
        orientation = animatedOrientation;
    }

    animatingImageView.setVisibility(View.VISIBLE);
    animatingImageView.setRadius(object.radius);
    animatingImageView.setOrientation(orientation);
    animatingImageView.setNeedRadius(object.radius != 0);
    animatingImageView.setImageBitmap(object.thumb);

    animatingImageView.setAlpha(1.0f);
    animatingImageView.setPivotX(0.0f);
    animatingImageView.setPivotY(0.0f);
    animatingImageView.setScaleX(object.scale);
    animatingImageView.setScaleY(object.scale);
    animatingImageView.setTranslationX(object.viewX + drawRegion.left * object.scale);
    animatingImageView.setTranslationY(object.viewY + drawRegion.top * object.scale);
    final ViewGroup.LayoutParams layoutParams = animatingImageView.getLayoutParams();
    layoutParams.width = (drawRegion.right - drawRegion.left);
    layoutParams.height = (drawRegion.bottom - drawRegion.top);
    animatingImageView.setLayoutParams(layoutParams);

    float scaleX = (float) AndroidUtilities.displaySize.x / layoutParams.width;
    float scaleY = (float) (AndroidUtilities.displaySize.y + AndroidUtilities.statusBarHeight)
            / layoutParams.height;
    float scale = scaleX > scaleY ? scaleY : scaleX;
    float width = layoutParams.width * scale;
    float height = layoutParams.height * scale;
    float xPos = (AndroidUtilities.displaySize.x - width) / 2.0f;
    if (Build.VERSION.SDK_INT >= 21 && lastInsets != null) {
        xPos += ((WindowInsets) lastInsets).getSystemWindowInsetLeft();
    }
    float yPos = ((AndroidUtilities.displaySize.y + AndroidUtilities.statusBarHeight) - height) / 2.0f;
    int clipHorizontal = Math.abs(drawRegion.left - object.imageReceiver.getImageX());
    int clipVertical = Math.abs(drawRegion.top - object.imageReceiver.getImageY());

    int coords2[] = new int[2];
    object.parentView.getLocationInWindow(coords2);
    int clipTop = coords2[1] - (object.viewY + drawRegion.top) + object.clipTopAddition;
    if (clipTop < 0) {
        clipTop = 0;
    }
    int clipBottom = (object.viewY + drawRegion.top + layoutParams.height)
            - (coords2[1] + object.parentView.getHeight()) + object.clipBottomAddition;
    if (clipBottom < 0) {
        clipBottom = 0;
    }
    clipTop = Math.max(clipTop, clipVertical);
    clipBottom = Math.max(clipBottom, clipVertical);

    animationValues[0][0] = animatingImageView.getScaleX();
    animationValues[0][1] = animatingImageView.getScaleY();
    animationValues[0][2] = animatingImageView.getTranslationX();
    animationValues[0][3] = animatingImageView.getTranslationY();
    animationValues[0][4] = clipHorizontal * object.scale;
    animationValues[0][5] = clipTop * object.scale;
    animationValues[0][6] = clipBottom * object.scale;
    animationValues[0][7] = animatingImageView.getRadius();

    animationValues[1][0] = scale;
    animationValues[1][1] = scale;
    animationValues[1][2] = xPos;
    animationValues[1][3] = yPos;
    animationValues[1][4] = 0;
    animationValues[1][5] = 0;
    animationValues[1][6] = 0;
    animationValues[1][7] = 0;

    photoContainerView.setVisibility(View.VISIBLE);
    photoContainerBackground.setVisibility(View.VISIBLE);
    animatingImageView.setAnimationProgress(0);

    final AnimatorSet animatorSet = new AnimatorSet();
    animatorSet.playTogether(ObjectAnimator.ofFloat(animatingImageView, "animationProgress", 0.0f, 1.0f),
            ObjectAnimator.ofInt(photoBackgroundDrawable, "alpha", 0, 255),
            ObjectAnimator.ofFloat(actionBar, "alpha", 0, 1.0f),
            ObjectAnimator.ofFloat(bottomLayout, "alpha", 0, 1.0f),
            ObjectAnimator.ofFloat(captionTextView, "alpha", 0, 1.0f));

    photoAnimationEndRunnable = new Runnable() {
        @Override
        public void run() {
            if (photoContainerView == null) {
                return;
            }
            if (Build.VERSION.SDK_INT >= 18) {
                photoContainerView.setLayerType(View.LAYER_TYPE_NONE, null);
            }
            photoAnimationInProgress = 0;
            photoTransitionAnimationStartTime = 0;
            setImages();
            photoContainerView.invalidate();
            animatingImageView.setVisibility(View.GONE);
            if (showAfterAnimation != null) {
                showAfterAnimation.imageReceiver.setVisible(true, true);
            }
            if (hideAfterAnimation != null) {
                hideAfterAnimation.imageReceiver.setVisible(false, true);
            }
        }
    };

    animatorSet.setDuration(200);
    animatorSet.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            AndroidUtilities.runOnUIThread(new Runnable() {
                @Override
                public void run() {
                    NotificationCenter.getInstance().setAnimationInProgress(false);
                    if (photoAnimationEndRunnable != null) {
                        photoAnimationEndRunnable.run();
                        photoAnimationEndRunnable = null;
                    }
                }
            });
        }
    });
    photoTransitionAnimationStartTime = System.currentTimeMillis();
    AndroidUtilities.runOnUIThread(new Runnable() {
        @Override
        public void run() {
            NotificationCenter.getInstance()
                    .setAllowedNotificationsDutingAnimation(new int[] { NotificationCenter.dialogsNeedReload,
                            NotificationCenter.closeChats, NotificationCenter.mediaCountDidLoaded,
                            NotificationCenter.mediaDidLoaded, NotificationCenter.dialogPhotosLoaded });
            NotificationCenter.getInstance().setAnimationInProgress(true);
            animatorSet.start();
        }
    });
    if (Build.VERSION.SDK_INT >= 18) {
        photoContainerView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
    }
    photoBackgroundDrawable.drawRunnable = new Runnable() {
        @Override
        public void run() {
            disableShowCheck = false;
            object.imageReceiver.setVisible(false, true);
        }
    };
    return true;
}

From source file:com.tct.mail.ui.AbstractActivityController.java

@Override
public void animateShow(ImageButton fabButton) {
    Toolbar toolbar = mActivity.getToolbar();
    if (toolbar == null) {
        return;/*from   w  ww. j  a v  a 2  s  . c  o m*/
    }
    //Remove other animation.
    if (hideAnimatorSet != null && hideAnimatorSet.isRunning()) {
        hideAnimatorSet.cancel();
    }
    if (backAnimatorSet != null && backAnimatorSet.isRunning()) {
        //If the animation is running,do nothing.
    } else {
        if (!mToolbarHidden) {
            //toolbar is showing,no need to do the show animation.
            return;
        }
        backAnimatorSet = new AnimatorSet();
        ArrayList<Animator> animators = new ArrayList<>();
        //Show the toolbar
        ObjectAnimator headerAnimator = ObjectAnimator.ofFloat(toolbar, "translationY",
                toolbar.getTranslationY(), 0f);
        if (fabButton != null) {
            //Show the fabButton
            ObjectAnimator fabAnimator = ObjectAnimator.ofFloat(fabButton, "translationY",
                    fabButton.getTranslationY(), 0f);
            animators.add(fabAnimator);
        }
        if (mSearchHeader != null) {
            //Show search header view
            //If we are searching the message, we should also show the search header
            ObjectAnimator searchHeaderAnimator = ObjectAnimator.ofFloat(mSearchHeader, "translationY",
                    mSearchHeader.getTranslationY(), 0f);
            animators.add(searchHeaderAnimator);
        }
        animators.add(headerAnimator);
        backAnimatorSet.setDuration(200);
        backAnimatorSet.playTogether(animators);
        backAnimatorSet.start();
        mToolbarHidden = false;
    }
}

From source file:com.tct.mail.ui.AbstractActivityController.java

@Override
public void animateHide(ImageButton fabButton) {
    Toolbar toolbar = mActivity.getToolbar();
    if (toolbar == null) {
        return;/*from  w  w w  .  j a v  a  2s  . com*/
    }
    //Remove other animations first
    if (backAnimatorSet != null && backAnimatorSet.isRunning()) {
        backAnimatorSet.cancel();
    }
    if (hideAnimatorSet != null && hideAnimatorSet.isRunning()) {
        //If the animation is running, do nothing.
    } else {
        if (mToolbarHidden) {
            //toolbar is hidden,no need to do the hide animation
            return;
        }
        hideAnimatorSet = new AnimatorSet();
        ArrayList<Animator> animators = new ArrayList<>();
        //Hide the toolbar
        ObjectAnimator headerAnimator = ObjectAnimator.ofFloat(toolbar, "translationY",
                toolbar.getTranslationY(), -toolbar.getHeight());
        //Hide the fabButton
        ObjectAnimator fabAnimator = ObjectAnimator.ofFloat(fabButton, "translationY",
                fabButton.getTranslationY(), ((View) fabButton.getParent()).getHeight()); //TS: zheng.zou 2015-10-22 EMAIL BUGFIX-721230 MOD
        if (mSearchHeader != null) {
            //Hide search header view
            //If we are searching the message, we should also hide the search header
            ObjectAnimator searchHeaderAnimator = ObjectAnimator.ofFloat(mSearchHeader, "translationY",
                    toolbar.getTranslationY(), -mSearchHeader.getHeight());
            animators.add(searchHeaderAnimator);
        }
        animators.add(headerAnimator);
        animators.add(fabAnimator);
        hideAnimatorSet.setDuration(200);
        hideAnimatorSet.playTogether(animators);
        hideAnimatorSet.start();
        mToolbarHidden = true;
    }
}

From source file:org.telegram.ui.ArticleViewer.java

public void closePhoto(boolean animated) {
    if (parentActivity == null || !isPhotoVisible || checkPhotoAnimation()) {
        return;// w  w  w .  jav a  2 s .  c  o  m
    }

    releasePlayer();
    NotificationCenter.getInstance().removeObserver(this, NotificationCenter.FileDidFailedLoad);
    NotificationCenter.getInstance().removeObserver(this, NotificationCenter.FileDidLoaded);
    NotificationCenter.getInstance().removeObserver(this, NotificationCenter.FileLoadProgressChanged);
    NotificationCenter.getInstance().removeObserver(this, NotificationCenter.emojiDidLoaded);

    isActionBarVisible = false;

    if (velocityTracker != null) {
        velocityTracker.recycle();
        velocityTracker = null;
    }

    final PlaceProviderObject object = getPlaceForPhoto(currentMedia);

    if (animated) {
        photoAnimationInProgress = 1;
        animatingImageView.setVisibility(View.VISIBLE);
        photoContainerView.invalidate();

        AnimatorSet animatorSet = new AnimatorSet();

        final ViewGroup.LayoutParams layoutParams = animatingImageView.getLayoutParams();
        Rect drawRegion = null;
        int orientation = centerImage.getOrientation();
        int animatedOrientation = 0;
        if (object != null && object.imageReceiver != null) {
            animatedOrientation = object.imageReceiver.getAnimatedOrientation();
        }
        if (animatedOrientation != 0) {
            orientation = animatedOrientation;
        }
        animatingImageView.setOrientation(orientation);
        if (object != null) {
            animatingImageView.setNeedRadius(object.radius != 0);
            drawRegion = object.imageReceiver.getDrawRegion();
            layoutParams.width = drawRegion.right - drawRegion.left;
            layoutParams.height = drawRegion.bottom - drawRegion.top;
            animatingImageView.setImageBitmap(object.thumb);
        } else {
            animatingImageView.setNeedRadius(false);
            layoutParams.width = centerImage.getImageWidth();
            layoutParams.height = centerImage.getImageHeight();
            animatingImageView.setImageBitmap(centerImage.getBitmap());
        }
        animatingImageView.setLayoutParams(layoutParams);

        float scaleX = (float) AndroidUtilities.displaySize.x / layoutParams.width;
        float scaleY = (float) (AndroidUtilities.displaySize.y + AndroidUtilities.statusBarHeight)
                / layoutParams.height;
        float scale2 = scaleX > scaleY ? scaleY : scaleX;
        float width = layoutParams.width * scale * scale2;
        float height = layoutParams.height * scale * scale2;
        float xPos = (AndroidUtilities.displaySize.x - width) / 2.0f;
        if (Build.VERSION.SDK_INT >= 21 && lastInsets != null) {
            xPos += ((WindowInsets) lastInsets).getSystemWindowInsetLeft();
        }
        float yPos = (AndroidUtilities.displaySize.y + AndroidUtilities.statusBarHeight - height) / 2.0f;
        animatingImageView.setTranslationX(xPos + translationX);
        animatingImageView.setTranslationY(yPos + translationY);
        animatingImageView.setScaleX(scale * scale2);
        animatingImageView.setScaleY(scale * scale2);

        if (object != null) {
            object.imageReceiver.setVisible(false, true);
            int clipHorizontal = Math.abs(drawRegion.left - object.imageReceiver.getImageX());
            int clipVertical = Math.abs(drawRegion.top - object.imageReceiver.getImageY());

            int coords2[] = new int[2];
            object.parentView.getLocationInWindow(coords2);
            int clipTop = coords2[1] - (object.viewY + drawRegion.top) + object.clipTopAddition;
            if (clipTop < 0) {
                clipTop = 0;
            }
            int clipBottom = (object.viewY + drawRegion.top + (drawRegion.bottom - drawRegion.top))
                    - (coords2[1] + object.parentView.getHeight()) + object.clipBottomAddition;
            if (clipBottom < 0) {
                clipBottom = 0;
            }

            clipTop = Math.max(clipTop, clipVertical);
            clipBottom = Math.max(clipBottom, clipVertical);

            animationValues[0][0] = animatingImageView.getScaleX();
            animationValues[0][1] = animatingImageView.getScaleY();
            animationValues[0][2] = animatingImageView.getTranslationX();
            animationValues[0][3] = animatingImageView.getTranslationY();
            animationValues[0][4] = 0;
            animationValues[0][5] = 0;
            animationValues[0][6] = 0;
            animationValues[0][7] = 0;

            animationValues[1][0] = object.scale;
            animationValues[1][1] = object.scale;
            animationValues[1][2] = object.viewX + drawRegion.left * object.scale;
            animationValues[1][3] = object.viewY + drawRegion.top * object.scale;
            animationValues[1][4] = clipHorizontal * object.scale;
            animationValues[1][5] = clipTop * object.scale;
            animationValues[1][6] = clipBottom * object.scale;
            animationValues[1][7] = object.radius;

            animatorSet.playTogether(
                    ObjectAnimator.ofFloat(animatingImageView, "animationProgress", 0.0f, 1.0f),
                    ObjectAnimator.ofInt(photoBackgroundDrawable, "alpha", 0),
                    ObjectAnimator.ofFloat(actionBar, "alpha", 0),
                    ObjectAnimator.ofFloat(bottomLayout, "alpha", 0),
                    ObjectAnimator.ofFloat(captionTextView, "alpha", 0));
        } else {
            int h = AndroidUtilities.displaySize.y + AndroidUtilities.statusBarHeight;
            animatorSet.playTogether(ObjectAnimator.ofInt(photoBackgroundDrawable, "alpha", 0),
                    ObjectAnimator.ofFloat(animatingImageView, "alpha", 0.0f),
                    ObjectAnimator.ofFloat(animatingImageView, "translationY", translationY >= 0 ? h : -h),
                    ObjectAnimator.ofFloat(actionBar, "alpha", 0),
                    ObjectAnimator.ofFloat(bottomLayout, "alpha", 0),
                    ObjectAnimator.ofFloat(captionTextView, "alpha", 0));
        }

        photoAnimationEndRunnable = new Runnable() {
            @Override
            public void run() {
                if (Build.VERSION.SDK_INT >= 18) {
                    photoContainerView.setLayerType(View.LAYER_TYPE_NONE, null);
                }
                photoContainerView.setVisibility(View.INVISIBLE);
                photoContainerBackground.setVisibility(View.INVISIBLE);
                photoAnimationInProgress = 0;
                onPhotoClosed(object);
            }
        };

        animatorSet.setDuration(200);
        animatorSet.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                AndroidUtilities.runOnUIThread(new Runnable() {
                    @Override
                    public void run() {
                        if (photoAnimationEndRunnable != null) {
                            photoAnimationEndRunnable.run();
                            photoAnimationEndRunnable = null;
                        }
                    }
                });
            }
        });
        photoTransitionAnimationStartTime = System.currentTimeMillis();
        if (Build.VERSION.SDK_INT >= 18) {
            photoContainerView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
        }
        animatorSet.start();
    } else {
        AnimatorSet animatorSet = new AnimatorSet();
        animatorSet.playTogether(ObjectAnimator.ofFloat(photoContainerView, "scaleX", 0.9f),
                ObjectAnimator.ofFloat(photoContainerView, "scaleY", 0.9f),
                ObjectAnimator.ofInt(photoBackgroundDrawable, "alpha", 0),
                ObjectAnimator.ofFloat(actionBar, "alpha", 0), ObjectAnimator.ofFloat(bottomLayout, "alpha", 0),
                ObjectAnimator.ofFloat(captionTextView, "alpha", 0));
        photoAnimationInProgress = 2;
        photoAnimationEndRunnable = new Runnable() {
            @Override
            public void run() {
                if (photoContainerView == null) {
                    return;
                }
                if (Build.VERSION.SDK_INT >= 18) {
                    photoContainerView.setLayerType(View.LAYER_TYPE_NONE, null);
                }
                photoContainerView.setVisibility(View.INVISIBLE);
                photoContainerBackground.setVisibility(View.INVISIBLE);
                photoAnimationInProgress = 0;
                onPhotoClosed(object);
                photoContainerView.setScaleX(1.0f);
                photoContainerView.setScaleY(1.0f);
            }
        };
        animatorSet.setDuration(200);
        animatorSet.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                if (photoAnimationEndRunnable != null) {
                    photoAnimationEndRunnable.run();
                    photoAnimationEndRunnable = null;
                }
            }
        });
        photoTransitionAnimationStartTime = System.currentTimeMillis();
        if (Build.VERSION.SDK_INT >= 18) {
            photoContainerView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
        }
        animatorSet.start();
    }
    if (currentAnimation != null) {
        currentAnimation.setSecondParentView(null);
        currentAnimation = null;
        centerImage.setImageBitmap((Drawable) null);
    }
}

From source file:org.telegram.ui.ArticleViewer.java

private void animateTo(float newScale, float newTx, float newTy, boolean isZoom, int duration) {
    if (scale == newScale && translationX == newTx && translationY == newTy) {
        return;/* w  w  w.j  av a2  s  .co  m*/
    }
    zoomAnimation = isZoom;
    animateToScale = newScale;
    animateToX = newTx;
    animateToY = newTy;
    animationStartTime = System.currentTimeMillis();
    imageMoveAnimation = new AnimatorSet();
    imageMoveAnimation.playTogether(ObjectAnimator.ofFloat(this, "animationValue", 0, 1));
    imageMoveAnimation.setInterpolator(interpolator);
    imageMoveAnimation.setDuration(duration);
    imageMoveAnimation.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            imageMoveAnimation = null;
            photoContainerView.invalidate();
        }
    });
    imageMoveAnimation.start();
}