Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 12cdec9b authored by Michael Jurka's avatar Michael Jurka
Browse files

Fix Recents transition for RTL languages

Bug: 8058416

Change-Id: I81dca6dfd6662a94133566bf1efc863df66e33d1
parent 64d41d73
Loading
Loading
Loading
Loading
+46 −19
Original line number Diff line number Diff line
@@ -45,6 +45,8 @@ import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.view.accessibility.AccessibilityEvent;
import android.view.animation.AnimationUtils;
import android.view.animation.DecelerateInterpolator;
@@ -162,7 +164,7 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
            if (convertView == null) {
                convertView = createView(parent);
            }
            ViewHolder holder = (ViewHolder) convertView.getTag();
            final ViewHolder holder = (ViewHolder) convertView.getTag();

            // index is reverse since most recent appears at the bottom...
            final int index = mRecentTaskDescriptions.size() - position - 1;
@@ -178,6 +180,24 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
            }
            if (index == 0) {
                if (mAnimateIconOfFirstTask) {
                    if (mItemToAnimateInWhenWindowAnimationIsFinished != null) {
                        holder.iconView.setAlpha(1f);
                        holder.iconView.setTranslationX(0f);
                        holder.iconView.setTranslationY(0f);
                        holder.labelView.setAlpha(1f);
                        holder.labelView.setTranslationX(0f);
                        holder.labelView.setTranslationY(0f);
                        if (holder.calloutLine != null) {
                            holder.calloutLine.setAlpha(1f);
                            holder.calloutLine.setTranslationX(0f);
                            holder.calloutLine.setTranslationY(0f);
                        }
                    }
                    mItemToAnimateInWhenWindowAnimationIsFinished = null;

                    final ViewTreeObserver observer = getViewTreeObserver();
                    final OnGlobalLayoutListener animateFirstIcon = new OnGlobalLayoutListener() {
                        public void onGlobalLayout() {
                            if (mItemToAnimateInWhenWindowAnimationIsFinished != null) {
                                holder.iconView.setAlpha(1f);
                                holder.iconView.setTranslationX(0f);
@@ -192,10 +212,13 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
                                }
                            }
                            mItemToAnimateInWhenWindowAnimationIsFinished = holder;
                    final int translation = -getResources().getDimensionPixelSize(
                            int translation = -getResources().getDimensionPixelSize(
                                    R.dimen.status_bar_recents_app_icon_translate_distance);
                            final Configuration config = getResources().getConfiguration();
                            if (config.orientation == Configuration.ORIENTATION_PORTRAIT) {
                                if (getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) {
                                    translation = -translation;
                                }
                                holder.iconView.setAlpha(0f);
                                holder.iconView.setTranslationX(translation);
                                holder.labelView.setAlpha(0f);
@@ -209,6 +232,10 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
                            if (!mWaitingForWindowAnimation) {
                                animateInIconOfFirstTask();
                            }
                            getViewTreeObserver().removeOnGlobalLayoutListener(this);
                        }
                    };
                    observer.addOnGlobalLayoutListener(animateFirstIcon);
                }
            }

+4 −0
Original line number Diff line number Diff line
@@ -597,6 +597,10 @@ public abstract class BaseStatusBar extends SystemUI implements
                    y = (int) ((dm.heightPixels - statusBarHeight - height) / 2f + thumbTopMargin
                            + recentsItemTopPadding + thumbBgPadding + statusBarHeight);
                }
                if (mLayoutDirection == View.LAYOUT_DIRECTION_RTL) {
                    x = dm.widthPixels - x - res
                            .getDimensionPixelSize(R.dimen.status_bar_recents_thumbnail_width);
                }

                ActivityOptions opts = ActivityOptions.makeThumbnailScaleDownAnimation(
                        getStatusBarView(),