Merge "Fix Recents transition for RTL languages"
This commit is contained in:
committed by
Android (Google) Code Review
commit
1af81b6bdc
@@ -45,6 +45,8 @@ import android.view.MenuItem;
|
|||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.view.ViewTreeObserver;
|
||||||
|
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
|
||||||
import android.view.accessibility.AccessibilityEvent;
|
import android.view.accessibility.AccessibilityEvent;
|
||||||
import android.view.animation.AnimationUtils;
|
import android.view.animation.AnimationUtils;
|
||||||
import android.view.animation.DecelerateInterpolator;
|
import android.view.animation.DecelerateInterpolator;
|
||||||
@@ -162,7 +164,7 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
|
|||||||
if (convertView == null) {
|
if (convertView == null) {
|
||||||
convertView = createView(parent);
|
convertView = createView(parent);
|
||||||
}
|
}
|
||||||
ViewHolder holder = (ViewHolder) convertView.getTag();
|
final ViewHolder holder = (ViewHolder) convertView.getTag();
|
||||||
|
|
||||||
// index is reverse since most recent appears at the bottom...
|
// index is reverse since most recent appears at the bottom...
|
||||||
final int index = mRecentTaskDescriptions.size() - position - 1;
|
final int index = mRecentTaskDescriptions.size() - position - 1;
|
||||||
@@ -191,24 +193,49 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
|
|||||||
holder.calloutLine.setTranslationY(0f);
|
holder.calloutLine.setTranslationY(0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mItemToAnimateInWhenWindowAnimationIsFinished = holder;
|
mItemToAnimateInWhenWindowAnimationIsFinished = null;
|
||||||
final int translation = -getResources().getDimensionPixelSize(
|
|
||||||
R.dimen.status_bar_recents_app_icon_translate_distance);
|
final ViewTreeObserver observer = getViewTreeObserver();
|
||||||
final Configuration config = getResources().getConfiguration();
|
final OnGlobalLayoutListener animateFirstIcon = new OnGlobalLayoutListener() {
|
||||||
if (config.orientation == Configuration.ORIENTATION_PORTRAIT) {
|
public void onGlobalLayout() {
|
||||||
holder.iconView.setAlpha(0f);
|
if (mItemToAnimateInWhenWindowAnimationIsFinished != null) {
|
||||||
holder.iconView.setTranslationX(translation);
|
holder.iconView.setAlpha(1f);
|
||||||
holder.labelView.setAlpha(0f);
|
holder.iconView.setTranslationX(0f);
|
||||||
holder.labelView.setTranslationX(translation);
|
holder.iconView.setTranslationY(0f);
|
||||||
holder.calloutLine.setAlpha(0f);
|
holder.labelView.setAlpha(1f);
|
||||||
holder.calloutLine.setTranslationX(translation);
|
holder.labelView.setTranslationX(0f);
|
||||||
} else {
|
holder.labelView.setTranslationY(0f);
|
||||||
holder.iconView.setAlpha(0f);
|
if (holder.calloutLine != null) {
|
||||||
holder.iconView.setTranslationY(translation);
|
holder.calloutLine.setAlpha(1f);
|
||||||
}
|
holder.calloutLine.setTranslationX(0f);
|
||||||
if (!mWaitingForWindowAnimation) {
|
holder.calloutLine.setTranslationY(0f);
|
||||||
animateInIconOfFirstTask();
|
}
|
||||||
}
|
}
|
||||||
|
mItemToAnimateInWhenWindowAnimationIsFinished = holder;
|
||||||
|
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);
|
||||||
|
holder.labelView.setTranslationX(translation);
|
||||||
|
holder.calloutLine.setAlpha(0f);
|
||||||
|
holder.calloutLine.setTranslationX(translation);
|
||||||
|
} else {
|
||||||
|
holder.iconView.setAlpha(0f);
|
||||||
|
holder.iconView.setTranslationY(translation);
|
||||||
|
}
|
||||||
|
if (!mWaitingForWindowAnimation) {
|
||||||
|
animateInIconOfFirstTask();
|
||||||
|
}
|
||||||
|
getViewTreeObserver().removeOnGlobalLayoutListener(this);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
observer.addOnGlobalLayoutListener(animateFirstIcon);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -597,6 +597,10 @@ public abstract class BaseStatusBar extends SystemUI implements
|
|||||||
y = (int) ((dm.heightPixels - statusBarHeight - height) / 2f + thumbTopMargin
|
y = (int) ((dm.heightPixels - statusBarHeight - height) / 2f + thumbTopMargin
|
||||||
+ recentsItemTopPadding + thumbBgPadding + statusBarHeight);
|
+ 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(
|
ActivityOptions opts = ActivityOptions.makeThumbnailScaleDownAnimation(
|
||||||
getStatusBarView(),
|
getStatusBarView(),
|
||||||
|
|||||||
Reference in New Issue
Block a user