summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2015-06-01 11:00:38 -0700
committerSunny Goyal <sunnygoyal@google.com>2015-06-01 16:15:54 -0700
commita07c2f5c80908e8a612f4681314a7068b92baa9f (patch)
treed2669826d99443c386da672980c94bf956eb461a
parent761e820ae2b5482d1bece87e25525fcd17e23a8a (diff)
downloadandroid_packages_apps_Trebuchet-a07c2f5c80908e8a612f4681314a7068b92baa9f.tar.gz
android_packages_apps_Trebuchet-a07c2f5c80908e8a612f4681314a7068b92baa9f.tar.bz2
android_packages_apps_Trebuchet-a07c2f5c80908e8a612f4681314a7068b92baa9f.zip
Folder UI fixes
> Fixing top padding (b/21304523) > Alinging the label and page indicators to the icons > Fixing folder label alingment in RTL (b/21445821) > Updating footer animation (b/21336853) Bug: 21304523, 21445821, 21336853 Change-Id: I2cf3a48c76653b19437b31252d6ee559ce798094
-rw-r--r--res/layout/user_folder.xml8
-rw-r--r--res/values/dimens.xml1
-rw-r--r--src/com/android/launcher3/Folder.java21
-rw-r--r--src/com/android/launcher3/FolderPagedView.java20
4 files changed, 37 insertions, 13 deletions
diff --git a/res/layout/user_folder.xml b/res/layout/user_folder.xml
index 67b69cabf..ecf7def48 100644
--- a/res/layout/user_folder.xml
+++ b/res/layout/user_folder.xml
@@ -40,7 +40,7 @@
android:layout_height="match_parent"
android:paddingLeft="4dp"
android:paddingRight="4dp"
- android:paddingTop="4dp"
+ android:paddingTop="8dp"
launcher:pageIndicator="@+id/folder_page_indicator" />
</FrameLayout>
@@ -48,6 +48,7 @@
android:id="@+id/folder_footer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:clipChildren="false"
android:orientation="horizontal"
android:paddingLeft="8dp"
android:paddingRight="8dp" >
@@ -63,8 +64,8 @@
android:gravity="center_horizontal"
android:hint="@string/folder_hint_text"
android:imeOptions="flagNoExtractUi"
- android:paddingBottom="@dimen/folder_name_padding"
- android:paddingTop="@dimen/folder_name_padding"
+ android:paddingBottom="8dp"
+ android:paddingTop="4dp"
android:singleLine="true"
android:textColor="#ff777777"
android:textColorHighlight="#ffCCCCCC"
@@ -78,6 +79,7 @@
android:layout_height="12dp"
android:layout_gravity="center_vertical"
layout="@layout/page_indicator" />
+
</LinearLayout>
</com.android.launcher3.Folder> \ No newline at end of file
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 246adcdad..7950862db 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -114,7 +114,6 @@
<!-- Folders -->
<!-- The amount that the preview contents are inset from the preview background -->
<dimen name="folder_preview_padding">4dp</dimen>
- <dimen name="folder_name_padding">10dp</dimen>
<!-- Sizes for managed profile badges -->
<dimen name="profile_badge_size">24dp</dimen>
diff --git a/src/com/android/launcher3/Folder.java b/src/com/android/launcher3/Folder.java
index ec4ea044c..a5b7a6003 100644
--- a/src/com/android/launcher3/Folder.java
+++ b/src/com/android/launcher3/Folder.java
@@ -29,10 +29,12 @@ import android.graphics.Point;
import android.graphics.PointF;
import android.graphics.Rect;
import android.os.Build;
+import android.support.v4.view.animation.FastOutSlowInInterpolator;
import android.text.InputType;
import android.text.Selection;
import android.text.Spannable;
import android.util.AttributeSet;
+import android.util.LayoutDirection;
import android.util.Log;
import android.view.ActionMode;
import android.view.KeyEvent;
@@ -89,7 +91,7 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList
*/
private static final float ICON_OVERSCROLL_WIDTH_FACTOR = 0.45f;
- public static final int FOOTER_ANIMATION_DURATION = 200;
+ private static final int FOLDER_NAME_ANIMATION_DURATION = 633;
private static final int REORDER_DELAY = 250;
private static final int ON_EXIT_CLOSE_DELAY = 400;
@@ -502,7 +504,6 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList
textAlpha.setStartDelay(mMaterialExpandStagger);
textAlpha.setInterpolator(new AccelerateInterpolator(1.5f));
-
anim.play(drift);
anim.play(iconsAlpha);
anim.play(textAlpha);
@@ -545,7 +546,8 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList
- mFooter.getPaddingLeft() - mFooter.getPaddingRight();
float textWidth = mFolderName.getPaint().measureText(mFolderName.getText().toString());
- mFolderName.setTranslationX((footerWidth - textWidth) / 2);
+ float translation = (footerWidth - textWidth) / 2;
+ mFolderName.setTranslationX(mContent.mIsRtl ? -translation : translation);
mContent.setMarkerScale(0);
// Do not update the flag if we are in drag mode. The flag will be updated, when we
@@ -555,7 +557,9 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList
@Override
public void onAnimationEnd(Animator animation) {
- mFolderName.animate().setDuration(FOOTER_ANIMATION_DURATION).translationX(0);
+ mFolderName.animate().setDuration(FOLDER_NAME_ANIMATION_DURATION)
+ .translationX(0)
+ .setInterpolator(new FastOutSlowInInterpolator());
mContent.animateMarkers();
if (updateAnimationFlag) {
@@ -1032,6 +1036,15 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList
mContent.setFixedSize(contentWidth, contentHeight);
mContentWrapper.measure(contentAreaWidthSpec, contentAreaHeightSpec);
+
+ if (mContent.getChildCount() > 0) {
+ int cellIconGap = (mContent.getPageAt(0).getCellWidth()
+ - mLauncher.getDeviceProfile().iconSizePx) / 2;
+ mFooter.setPadding(mContent.getPaddingLeft() + cellIconGap,
+ mFooter.getPaddingTop(),
+ mContent.getPaddingRight() + cellIconGap,
+ mFooter.getPaddingBottom());
+ }
mFooter.measure(contentAreaWidthSpec,
MeasureSpec.makeMeasureSpec(mFooterHeight, MeasureSpec.EXACTLY));
diff --git a/src/com/android/launcher3/FolderPagedView.java b/src/com/android/launcher3/FolderPagedView.java
index 0bd6501ed..7d90ba2f7 100644
--- a/src/com/android/launcher3/FolderPagedView.java
+++ b/src/com/android/launcher3/FolderPagedView.java
@@ -24,6 +24,7 @@ import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.animation.DecelerateInterpolator;
+import android.view.animation.Interpolator;
import android.view.animation.OvershootInterpolator;
import com.android.launcher3.FocusHelper.PagedFolderKeyEventListener;
@@ -46,7 +47,12 @@ public class FolderPagedView extends PagedView {
private static final int START_VIEW_REORDER_DELAY = 30;
private static final float VIEW_REORDER_DELAY_FACTOR = 0.9f;
- private static final int PAGE_INDICATOR_ANIMATION_DELAY = 150;
+ private static final int PAGE_INDICATOR_ANIMATION_START_DELAY = 300;
+ private static final int PAGE_INDICATOR_ANIMATION_STAGGERED_DELAY = 150;
+ private static final int PAGE_INDICATOR_ANIMATION_DURATION = 400;
+
+ // This value approximately overshoots to 1.5 times the original size.
+ private static final float PAGE_INDICATOR_OVERSHOOT_TENSION = 4.9f;
/**
* Fraction of the width to scroll when showing the next page hint.
@@ -274,6 +280,7 @@ public class FolderPagedView extends PagedView {
arrangeChildren(list, itemCount, true);
}
+ @SuppressLint("RtlHardcoded")
private void arrangeChildren(ArrayList<View> list, int itemCount, boolean saveChanges) {
ArrayList<CellLayout> pages = new ArrayList<CellLayout>();
for (int i = 0; i < getChildCount(); i++) {
@@ -340,7 +347,9 @@ public class FolderPagedView extends PagedView {
// Update footer
mPageIndicator.setVisibility(getPageCount() > 1 ? View.VISIBLE : View.GONE);
- mFolder.mFolderName.setGravity(getPageCount() > 1 ? Gravity.START : Gravity.CENTER_HORIZONTAL);
+ // Set the gravity as LEFT or RIGHT instead of START, as START depends on the actual text.
+ mFolder.mFolderName.setGravity(getPageCount() > 1 ?
+ (mIsRtl ? Gravity.RIGHT : Gravity.LEFT) : Gravity.CENTER_HORIZONTAL);
}
public int getDesiredWidth() {
@@ -645,12 +654,13 @@ public class FolderPagedView extends PagedView {
public void animateMarkers() {
int count = mPageIndicator.getChildCount();
- OvershootInterpolator interpolator = new OvershootInterpolator(4);
+ Interpolator interpolator = new OvershootInterpolator(PAGE_INDICATOR_OVERSHOOT_TENSION);
for (int i = 0; i < count; i++) {
mPageIndicator.getChildAt(i).animate().scaleX(1).scaleY(1)
.setInterpolator(interpolator)
- .setDuration(Folder.FOOTER_ANIMATION_DURATION)
- .setStartDelay(PAGE_INDICATOR_ANIMATION_DELAY * i);
+ .setDuration(PAGE_INDICATOR_ANIMATION_DURATION)
+ .setStartDelay(PAGE_INDICATOR_ANIMATION_STAGGERED_DELAY * i
+ + PAGE_INDICATOR_ANIMATION_START_DELAY);
}
}