Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(204)

Side by Side Diff: chrome/android/java_staging/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/StackAnimationLandscape.java

Issue 1141283003: Upstream oodles of Chrome for Android code into Chromium. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: final patch? Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.chrome.browser.compositor.layouts.phone.stack;
6
7 import static org.chromium.chrome.browser.compositor.layouts.ChromeAnimation.Ani matableAnimation.addAnimation;
8 import static org.chromium.chrome.browser.compositor.layouts.components.LayoutTa b.Property.MAX_CONTENT_HEIGHT;
9 import static org.chromium.chrome.browser.compositor.layouts.components.LayoutTa b.Property.SATURATION;
10 import static org.chromium.chrome.browser.compositor.layouts.components.LayoutTa b.Property.SIDE_BORDER_SCALE;
11 import static org.chromium.chrome.browser.compositor.layouts.components.LayoutTa b.Property.TILTY;
12 import static org.chromium.chrome.browser.compositor.layouts.components.LayoutTa b.Property.TOOLBAR_ALPHA;
13 import static org.chromium.chrome.browser.compositor.layouts.components.LayoutTa b.Property.TOOLBAR_Y_OFFSET;
14 import static org.chromium.chrome.browser.compositor.layouts.phone.stack.StackTa b.Property.DISCARD_AMOUNT;
15 import static org.chromium.chrome.browser.compositor.layouts.phone.stack.StackTa b.Property.SCALE;
16 import static org.chromium.chrome.browser.compositor.layouts.phone.stack.StackTa b.Property.SCROLL_OFFSET;
17 import static org.chromium.chrome.browser.compositor.layouts.phone.stack.StackTa b.Property.X_IN_STACK_INFLUENCE;
18 import static org.chromium.chrome.browser.compositor.layouts.phone.stack.StackTa b.Property.X_IN_STACK_OFFSET;
19 import static org.chromium.chrome.browser.compositor.layouts.phone.stack.StackTa b.Property.Y_IN_STACK_INFLUENCE;
20
21 import org.chromium.chrome.browser.compositor.layouts.ChromeAnimation;
22 import org.chromium.chrome.browser.compositor.layouts.ChromeAnimation.Animatable ;
23 import org.chromium.chrome.browser.compositor.layouts.components.LayoutTab;
24 import org.chromium.chrome.browser.util.MathUtils;
25 import org.chromium.ui.base.LocalizationUtils;
26
27 class StackAnimationLandscape extends StackAnimation {
28 /**
29 * Only Constructor.
30 */
31 public StackAnimationLandscape(float width, float height, float heightMinusT opControls,
32 float borderFramePaddingTop, float borderFramePaddingTopOpaque,
33 float borderFramePaddingLeft) {
34 super(width, height, heightMinusTopControls, borderFramePaddingTop,
35 borderFramePaddingTopOpaque, borderFramePaddingLeft);
36 }
37
38 @Override
39 protected ChromeAnimation<?> createEnterStackAnimatorSet(
40 StackTab[] tabs, int focusIndex, int spacing, float warpSize) {
41 ChromeAnimation<Animatable<?>> set = new ChromeAnimation<Animatable<?>>( );
42 final float initialScrollOffset = StackTab.screenToScroll(0, warpSize);
43
44 for (int i = 0; i < tabs.length; ++i) {
45 StackTab tab = tabs[i];
46
47 tab.resetOffset();
48 tab.setScale(SCALE_AMOUNT);
49 tab.setAlpha(1.f);
50 tab.getLayoutTab().setToolbarAlpha(0.f);
51 tab.getLayoutTab().setBorderScale(1.f);
52
53 final float scrollOffset = StackTab.screenToScroll(i * spacing, warp Size);
54
55 addAnimation(set, tab.getLayoutTab(), MAX_CONTENT_HEIGHT,
56 tab.getLayoutTab().getUnclampedOriginalContentHeight(), mHei ghtMinusTopControls,
57 ENTER_STACK_ANIMATION_DURATION, 0);
58 if (i < focusIndex) {
59 addAnimation(set, tab, SCROLL_OFFSET, initialScrollOffset, scrol lOffset,
60 ENTER_STACK_ANIMATION_DURATION, 0);
61 } else if (i > focusIndex) {
62 tab.setScrollOffset(scrollOffset);
63 addAnimation(set, tab, X_IN_STACK_OFFSET,
64 (mWidth > mHeight && LocalizationUtils.isLayoutRtl()) ? -mWidth : mWidth,
65 0.0f, ENTER_STACK_ANIMATION_DURATION, 0);
66 } else {
67 tab.setScrollOffset(scrollOffset);
68 addAnimation(set, tab, X_IN_STACK_INFLUENCE, 0.0f, 1.0f,
69 ENTER_STACK_BORDER_ALPHA_DURATION, 0);
70 addAnimation(
71 set, tab, SCALE, 1.0f, SCALE_AMOUNT, ENTER_STACK_BORDER_ ALPHA_DURATION, 0);
72 addAnimation(set, tab.getLayoutTab(), TOOLBAR_ALPHA, 1.f, 0.f,
73 ENTER_STACK_TOOLBAR_ALPHA_DURATION, ENTER_STACK_TOOLBAR_ ALPHA_DELAY);
74 addAnimation(set, tab.getLayoutTab(), TOOLBAR_Y_OFFSET, 0.f,
75 getToolbarOffsetToLineUpWithBorder(), ENTER_STACK_BORDER _ALPHA_DURATION,
76 TAB_FOCUSED_TOOLBAR_ALPHA_DELAY);
77 addAnimation(set, tab.getLayoutTab(), SIDE_BORDER_SCALE, 0.f, 1. f,
78 ENTER_STACK_BORDER_ALPHA_DURATION, TAB_FOCUSED_TOOLBAR_A LPHA_DELAY);
79 }
80 }
81
82 return set;
83 }
84
85 @Override
86 protected ChromeAnimation<?> createTabFocusedAnimatorSet(
87 StackTab[] tabs, int focusIndex, int spacing, float warpSize) {
88 ChromeAnimation<Animatable<?>> set = new ChromeAnimation<Animatable<?>>( );
89 for (int i = 0; i < tabs.length; ++i) {
90 StackTab tab = tabs[i];
91 LayoutTab layoutTab = tab.getLayoutTab();
92
93 addTiltScrollAnimation(set, layoutTab, 0.0f, TAB_FOCUSED_ANIMATION_D URATION, 0);
94 addAnimation(set, tab, DISCARD_AMOUNT, tab.getDiscardAmount(), 0.0f,
95 TAB_FOCUSED_ANIMATION_DURATION, 0);
96
97 if (i < focusIndex) {
98 // For tabs left of the focused tab move them left to 0.
99 addAnimation(set, tab, SCROLL_OFFSET, tab.getScrollOffset(),
100 Math.max(0.0f, tab.getScrollOffset() - mWidth - spacing) ,
101 TAB_FOCUSED_ANIMATION_DURATION, 0);
102 } else if (i > focusIndex) {
103 // We also need to animate the X Translation to move them right
104 // off the screen.
105 float coveringTabPosition = layoutTab.getX();
106 float distanceToBorder = LocalizationUtils.isLayoutRtl()
107 ? coveringTabPosition + layoutTab.getScaledContentWidth( )
108 : mWidth - coveringTabPosition;
109 float clampedDistanceToBorder = MathUtils.clamp(distanceToBorder , 0, mWidth);
110 float delay = TAB_FOCUSED_MAX_DELAY * clampedDistanceToBorder / mWidth;
111 addAnimation(set, tab, X_IN_STACK_OFFSET, tab.getXInStackOffset( ),
112 tab.getXInStackOffset()
113 + (LocalizationUtils.isLayoutRtl() ? -mWidth : m Width),
114 (TAB_FOCUSED_ANIMATION_DURATION - (long) delay), (long) delay);
115 } else {
116 // This is the focused tab. We need to scale it back to
117 // 1.0f, move it to the top of the screen, and animate the
118 // X Translation so that it looks like it is zooming into the
119 // full screen view. We move the card to the top left and exten d it out so
120 // it becomes a full card.
121 tab.setXOutOfStack(0);
122 tab.setYOutOfStack(0.0f);
123 layoutTab.setBorderScale(1.f);
124
125 addAnimation(set, tab, SCROLL_OFFSET, tab.getScrollOffset(),
126 StackTab.screenToScroll(0, warpSize), TAB_FOCUSED_ANIMAT ION_DURATION, 0);
127 addAnimation(
128 set, tab, SCALE, tab.getScale(), 1.0f, TAB_FOCUSED_ANIMA TION_DURATION, 0);
129 addAnimation(set, tab, X_IN_STACK_INFLUENCE, tab.getXInStackInfl uence(), 0.0f,
130 TAB_FOCUSED_ANIMATION_DURATION, 0);
131 addAnimation(set, tab, Y_IN_STACK_INFLUENCE, tab.getYInStackInfl uence(), 0.0f,
132 TAB_FOCUSED_Y_STACK_DURATION, 0);
133
134 addAnimation(set, tab.getLayoutTab(), MAX_CONTENT_HEIGHT,
135 tab.getLayoutTab().getMaxContentHeight(),
136 tab.getLayoutTab().getUnclampedOriginalContentHeight(),
137 TAB_FOCUSED_ANIMATION_DURATION, 0);
138 tab.setYOutOfStack(mHeight - mHeightMinusTopControls - mBorderTo pHeight);
139
140 if (layoutTab.shouldStall()) {
141 addAnimation(set, layoutTab, SATURATION, 1.0f, 0.0f,
142 TAB_FOCUSED_BORDER_ALPHA_DURATION, TAB_FOCUSED_BORDE R_ALPHA_DELAY);
143 }
144 addAnimation(set, tab.getLayoutTab(), TOOLBAR_ALPHA, layoutTab.g etToolbarAlpha(),
145 1.f, TAB_FOCUSED_TOOLBAR_ALPHA_DURATION, TAB_FOCUSED_TOO LBAR_ALPHA_DELAY);
146 addAnimation(set, tab.getLayoutTab(), TOOLBAR_Y_OFFSET,
147 getToolbarOffsetToLineUpWithBorder(), 0.f,
148 TAB_FOCUSED_TOOLBAR_ALPHA_DURATION, TAB_FOCUSED_TOOLBAR_ ALPHA_DELAY);
149 addAnimation(set, tab.getLayoutTab(), SIDE_BORDER_SCALE, 1.f, 0. f,
150 TAB_FOCUSED_TOOLBAR_ALPHA_DURATION, TAB_FOCUSED_TOOLBAR_ ALPHA_DELAY);
151 }
152 }
153
154 return set;
155 }
156
157 @Override
158 protected ChromeAnimation<?> createViewMoreAnimatorSet(StackTab[] tabs, int selectedIndex) {
159 ChromeAnimation<Animatable<?>> set = new ChromeAnimation<Animatable<?>>( );
160
161 if (selectedIndex + 1 >= tabs.length) return set;
162
163 float offset = tabs[selectedIndex].getScrollOffset()
164 - tabs[selectedIndex + 1].getScrollOffset()
165 + (tabs[selectedIndex].getLayoutTab().getScaledContentWidth()
166 * VIEW_MORE_SIZE_RATIO);
167 offset = Math.max(VIEW_MORE_MIN_SIZE, offset);
168 for (int i = selectedIndex + 1; i < tabs.length; ++i) {
169 addAnimation(set, tabs[i], SCROLL_OFFSET, tabs[i].getScrollOffset(),
170 tabs[i].getScrollOffset() + offset, VIEW_MORE_ANIMATION_DURA TION, 0);
171 }
172
173 return set;
174 }
175
176 @Override
177 protected ChromeAnimation<?> createReachTopAnimatorSet(StackTab[] tabs, floa t warpSize) {
178 ChromeAnimation<Animatable<?>> set = new ChromeAnimation<Animatable<?>>( );
179
180 float screenTarget = 0.0f;
181 for (int i = 0; i < tabs.length; ++i) {
182 if (screenTarget >= tabs[i].getLayoutTab().getX()) {
183 break;
184 }
185 addAnimation(set, tabs[i], SCROLL_OFFSET, tabs[i].getScrollOffset(),
186 StackTab.screenToScroll(screenTarget, warpSize), REACH_TOP_A NIMATION_DURATION,
187 0);
188 screenTarget += tabs[i].getLayoutTab().getScaledContentWidth();
189 }
190
191 return set;
192 }
193
194 @Override
195 protected boolean isDefaultDiscardDirectionPositive() {
196 return true;
197 }
198
199 @Override
200 protected float getScreenPositionInScrollDirection(StackTab tab) {
201 return tab.getLayoutTab().getX();
202 }
203
204 @Override
205 protected void addTiltScrollAnimation(ChromeAnimation<Animatable<?>> set, La youtTab tab,
206 float end, int duration, int startTime) {
207 addAnimation(set, tab, TILTY, tab.getTiltY(), end, duration, startTime);
208 }
209
210 @Override
211 protected float getScreenSizeInScrollDirection() {
212 return mWidth;
213 }
214
215 @Override
216 protected int getTabCreationDirection() {
217 return 1;
218 }
219 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698