Loading res/values-sw720dp/dimens.xml +1 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ <dimen name="drop_target_button_drawable_horizontal_padding">24dp</dimen> <dimen name="drop_target_button_drawable_vertical_padding">20dp</dimen> <dimen name="drop_target_button_gap">32dp</dimen> <dimen name="drop_target_button_workspace_edge_gap">32dp</dimen> <dimen name="drop_target_top_margin">110dp</dimen> <dimen name="drop_target_bottom_margin">48dp</dimen> Loading res/values/dimens.xml +6 −6 Original line number Diff line number Diff line Loading @@ -24,6 +24,8 @@ <dimen name="dynamic_grid_icon_drawable_padding">7dp</dimen> <!-- Minimum space between workspace and hotseat in spring loaded mode --> <dimen name="dynamic_grid_min_spring_loaded_space">8dp</dimen> <!-- Minimum amount of next page visible in spring loaded mode --> <dimen name="dynamic_grid_spring_loaded_min_next_space_visible">24dp</dimen> <dimen name="dynamic_grid_cell_border_spacing">16dp</dimen> <dimen name="cell_layout_padding">10.77dp</dimen> Loading Loading @@ -58,13 +60,9 @@ <!-- Drop target bar --> <dimen name="dynamic_grid_drop_target_size">56dp</dimen> <dimen name="drop_target_vertical_gap">20dp</dimen> <dimen name="drop_target_top_margin">36dp</dimen> <dimen name="drop_target_top_margin">32dp</dimen> <dimen name="drop_target_bottom_margin">16dp</dimen> <!-- Button drop target bar --> <dimen name="button_drop_target_min_text_size">10sp</dimen> <dimen name="button_drop_target_resize_text_increment">1sp</dimen> <!-- App Widget resize frame --> <dimen name="widget_handle_margin">13dp</dimen> <dimen name="resize_frame_background_padding">24dp</dimen> Loading Loading @@ -229,7 +227,9 @@ <dimen name="drop_target_button_drawable_padding">8dp</dimen> <dimen name="drop_target_button_drawable_horizontal_padding">16dp</dimen> <dimen name="drop_target_button_drawable_vertical_padding">8dp</dimen> <dimen name="drop_target_button_gap">22dp</dimen> <dimen name="drop_target_button_gap">28dp</dimen> <dimen name="drop_target_button_workspace_edge_gap">0dp</dimen> <dimen name="drop_target_button_screen_edge_gap">28dp</dimen> <!-- the distance an icon must be dragged before button drop targets accept it --> <dimen name="drag_distanceThreshold">30dp</dimen> Loading src/com/android/launcher3/ButtonDropTarget.java +45 −39 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.content.Context; import android.content.res.Resources; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.text.InputType; import android.text.TextUtils; import android.util.AttributeSet; import android.view.LayoutInflater; Loading @@ -49,6 +50,8 @@ public abstract class ButtonDropTarget extends TextView private static final int[] sTempCords = new int[2]; private static final int DRAG_VIEW_DROP_DURATION = 285; private static final float DRAG_VIEW_HOVER_OVER_OPACITY = 0.65f; private static final int MAX_LINES_TEXT_MULTI_LINE = 2; private static final int MAX_LINES_TEXT_SINGLE_LINE = 1; public static final int TOOLTIP_DEFAULT = 0; public static final int TOOLTIP_LEFT = 1; Loading @@ -72,6 +75,8 @@ public abstract class ButtonDropTarget extends TextView protected CharSequence mText; protected Drawable mDrawable; private boolean mTextVisible = true; private boolean mIconVisible = true; private boolean mTextMultiLine = true; private PopupWindow mToolTip; private int mToolTipLocation; Loading Loading @@ -109,8 +114,7 @@ public abstract class ButtonDropTarget extends TextView // drawableLeft and drawableStart. mDrawable = getContext().getDrawable(resId).mutate(); mDrawable.setTintList(getTextColors()); centerIcon(); setCompoundDrawablesRelative(mDrawable, null, null, null); updateIconVisibility(); } public void setDropTargetBar(DropTargetBar dropTargetBar) { Loading Loading @@ -306,11 +310,47 @@ public abstract class ButtonDropTarget extends TextView if (mTextVisible != isVisible || !TextUtils.equals(newText, getText())) { mTextVisible = isVisible; setText(newText); updateIconVisibility(); } } /** * Display button text over multiple lines when isMultiLine is true, single line otherwise. */ public void setTextMultiLine(boolean isMultiLine) { if (mTextMultiLine != isMultiLine) { mTextMultiLine = isMultiLine; setSingleLine(!isMultiLine); setMaxLines(isMultiLine ? MAX_LINES_TEXT_MULTI_LINE : MAX_LINES_TEXT_SINGLE_LINE); int inputType = InputType.TYPE_CLASS_TEXT; if (isMultiLine) { inputType |= InputType.TYPE_TEXT_FLAG_MULTI_LINE; } setInputType(inputType); } } protected boolean isTextMultiLine() { return mTextMultiLine; } /** * Sets the button icon visible when isVisible is true, hides it otherwise. */ public void setIconVisible(boolean isVisible) { if (mIconVisible != isVisible) { mIconVisible = isVisible; updateIconVisibility(); } } private void updateIconVisibility() { if (mIconVisible) { centerIcon(); setCompoundDrawablesRelative(mDrawable, null, null, null); int drawablePadding = mTextVisible ? mDrawablePadding : 0; setCompoundDrawablePadding(drawablePadding); } setCompoundDrawablesRelative(mIconVisible ? mDrawable : null, null, null, null); setCompoundDrawablePadding(mIconVisible && mTextVisible ? mDrawablePadding : 0); } @Override Loading @@ -324,40 +364,6 @@ public abstract class ButtonDropTarget extends TextView hideTooltip(); } /** * Reduce the size of the text until it fits or reaches a minimum. * * The minimum size is defined by {@code R.dimen.button_drop_target_min_text_size} and * it diminishes by intervals defined by * {@code R.dimen.button_drop_target_resize_text_increment} * This functionality is very similar to the option * {@link TextView#setAutoSizeTextTypeWithDefaults(int)} but can't be used in this view because * the layout width is {@code WRAP_CONTENT}. * * @param availableWidth Available width in the button to fit the text, used in * {@code ButtonDropTarget#isTextTruncated(int)} * @return The biggest text size in SP that makes the text fit or if the text can't fit returns * the min available value */ public float resizeTextToFit(int availableWidth) { float minSize = Utilities.pxToSp(getResources() .getDimensionPixelSize(R.dimen.button_drop_target_min_text_size)); float step = Utilities.pxToSp(getResources() .getDimensionPixelSize(R.dimen.button_drop_target_resize_text_increment)); float textSize = Utilities.pxToSp(getTextSize()); while (textSize > minSize) { if (isTextTruncated(availableWidth)) { textSize -= step; setTextSize(textSize); } else { return textSize; } } return minSize; } public boolean isTextTruncated(int availableWidth) { availableWidth -= (getPaddingLeft() + getPaddingRight() + mDrawable.getIntrinsicWidth() + getCompoundDrawablePadding()); Loading src/com/android/launcher3/DeviceProfile.java +19 −10 Original line number Diff line number Diff line Loading @@ -108,6 +108,7 @@ public class DeviceProfile { public float workspaceSpringLoadShrunkTop; public float workspaceSpringLoadShrunkBottom; public final int workspaceSpringLoadedBottomSpace; public final int workspaceSpringLoadedMinNextPageVisiblePx; private final int extraSpace; public int workspaceTopPadding; Loading Loading @@ -214,6 +215,8 @@ public class DeviceProfile { public int dropTargetHorizontalPaddingPx; public int dropTargetVerticalPaddingPx; public int dropTargetGapPx; public int dropTargetButtonWorkspaceEdgeGapPx; public int dropTargetButtonScreenEdgeGapPx; // Insets private final Rect mInsets = new Rect(); Loading Loading @@ -343,9 +346,15 @@ public class DeviceProfile { dropTargetVerticalPaddingPx = res.getDimensionPixelSize( R.dimen.drop_target_button_drawable_vertical_padding); dropTargetGapPx = res.getDimensionPixelSize(R.dimen.drop_target_button_gap); dropTargetButtonWorkspaceEdgeGapPx = res.getDimensionPixelSize( R.dimen.drop_target_button_workspace_edge_gap); dropTargetButtonScreenEdgeGapPx = res.getDimensionPixelSize( R.dimen.drop_target_button_screen_edge_gap); workspaceSpringLoadedBottomSpace = res.getDimensionPixelSize(R.dimen.dynamic_grid_min_spring_loaded_space); workspaceSpringLoadedMinNextPageVisiblePx = res.getDimensionPixelSize( R.dimen.dynamic_grid_spring_loaded_min_next_space_visible); workspaceCellPaddingXPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_cell_padding_x); Loading Loading @@ -501,7 +510,7 @@ public class DeviceProfile { */ private int calculateQsbWidth() { if (isQsbInline) { int columns = isTwoPanels ? inv.numColumns * 2 : inv.numColumns; int columns = getPanelCount() * inv.numColumns; return getIconToIconWidthForColumns(columns) - iconSizePx * numShownHotseatIcons - hotseatBorderSpace * numShownHotseatIcons; Loading Loading @@ -954,13 +963,6 @@ public class DeviceProfile { return workspaceSpringLoadShrunkBottom; } /** * Gets the minimum visible amount of the next workspace page when in the spring-loaded state. */ private float getWorkspaceSpringLoadedMinimumNextPageVisible() { return getCellSize().x / 2f; } /** * Gets the scale of the workspace for the spring-loaded edit state. */ Loading @@ -972,8 +974,7 @@ public class DeviceProfile { // Reduce scale if next pages would not be visible after scaling the workspace int workspaceWidth = availableWidthPx; float scaledWorkspaceWidth = workspaceWidth * scale; float maxAvailableWidth = workspaceWidth - (2 * getWorkspaceSpringLoadedMinimumNextPageVisible()); float maxAvailableWidth = workspaceWidth - (2 * workspaceSpringLoadedMinNextPageVisiblePx); if (scaledWorkspaceWidth > maxAvailableWidth) { scale *= maxAvailableWidth / scaledWorkspaceWidth; } Loading Loading @@ -1412,11 +1413,19 @@ public class DeviceProfile { writer.println(prefix + pxToDpStr("dropTargetBarSizePx", dropTargetBarSizePx)); writer.println( prefix + pxToDpStr("dropTargetBarBottomMarginPx", dropTargetBarBottomMarginPx)); writer.println(prefix + pxToDpStr("dropTargetButtonWorkspaceEdgeGapPx", dropTargetButtonWorkspaceEdgeGapPx)); writer.println(prefix + pxToDpStr("dropTargetButtonScreenEdgeGapPx", dropTargetButtonScreenEdgeGapPx)); writer.println( prefix + pxToDpStr("workspaceSpringLoadShrunkTop", workspaceSpringLoadShrunkTop)); writer.println(prefix + pxToDpStr("workspaceSpringLoadShrunkBottom", workspaceSpringLoadShrunkBottom)); writer.println(prefix + pxToDpStr("workspaceSpringLoadedBottomSpace", workspaceSpringLoadedBottomSpace)); writer.println(prefix + pxToDpStr("workspaceSpringLoadedMinNextPageVisiblePx", workspaceSpringLoadedMinNextPageVisiblePx)); writer.println( prefix + pxToDpStr("getWorkspaceSpringLoadScale()", getWorkspaceSpringLoadScale())); } Loading src/com/android/launcher3/DropTargetBar.java +129 −92 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
res/values-sw720dp/dimens.xml +1 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ <dimen name="drop_target_button_drawable_horizontal_padding">24dp</dimen> <dimen name="drop_target_button_drawable_vertical_padding">20dp</dimen> <dimen name="drop_target_button_gap">32dp</dimen> <dimen name="drop_target_button_workspace_edge_gap">32dp</dimen> <dimen name="drop_target_top_margin">110dp</dimen> <dimen name="drop_target_bottom_margin">48dp</dimen> Loading
res/values/dimens.xml +6 −6 Original line number Diff line number Diff line Loading @@ -24,6 +24,8 @@ <dimen name="dynamic_grid_icon_drawable_padding">7dp</dimen> <!-- Minimum space between workspace and hotseat in spring loaded mode --> <dimen name="dynamic_grid_min_spring_loaded_space">8dp</dimen> <!-- Minimum amount of next page visible in spring loaded mode --> <dimen name="dynamic_grid_spring_loaded_min_next_space_visible">24dp</dimen> <dimen name="dynamic_grid_cell_border_spacing">16dp</dimen> <dimen name="cell_layout_padding">10.77dp</dimen> Loading Loading @@ -58,13 +60,9 @@ <!-- Drop target bar --> <dimen name="dynamic_grid_drop_target_size">56dp</dimen> <dimen name="drop_target_vertical_gap">20dp</dimen> <dimen name="drop_target_top_margin">36dp</dimen> <dimen name="drop_target_top_margin">32dp</dimen> <dimen name="drop_target_bottom_margin">16dp</dimen> <!-- Button drop target bar --> <dimen name="button_drop_target_min_text_size">10sp</dimen> <dimen name="button_drop_target_resize_text_increment">1sp</dimen> <!-- App Widget resize frame --> <dimen name="widget_handle_margin">13dp</dimen> <dimen name="resize_frame_background_padding">24dp</dimen> Loading Loading @@ -229,7 +227,9 @@ <dimen name="drop_target_button_drawable_padding">8dp</dimen> <dimen name="drop_target_button_drawable_horizontal_padding">16dp</dimen> <dimen name="drop_target_button_drawable_vertical_padding">8dp</dimen> <dimen name="drop_target_button_gap">22dp</dimen> <dimen name="drop_target_button_gap">28dp</dimen> <dimen name="drop_target_button_workspace_edge_gap">0dp</dimen> <dimen name="drop_target_button_screen_edge_gap">28dp</dimen> <!-- the distance an icon must be dragged before button drop targets accept it --> <dimen name="drag_distanceThreshold">30dp</dimen> Loading
src/com/android/launcher3/ButtonDropTarget.java +45 −39 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.content.Context; import android.content.res.Resources; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.text.InputType; import android.text.TextUtils; import android.util.AttributeSet; import android.view.LayoutInflater; Loading @@ -49,6 +50,8 @@ public abstract class ButtonDropTarget extends TextView private static final int[] sTempCords = new int[2]; private static final int DRAG_VIEW_DROP_DURATION = 285; private static final float DRAG_VIEW_HOVER_OVER_OPACITY = 0.65f; private static final int MAX_LINES_TEXT_MULTI_LINE = 2; private static final int MAX_LINES_TEXT_SINGLE_LINE = 1; public static final int TOOLTIP_DEFAULT = 0; public static final int TOOLTIP_LEFT = 1; Loading @@ -72,6 +75,8 @@ public abstract class ButtonDropTarget extends TextView protected CharSequence mText; protected Drawable mDrawable; private boolean mTextVisible = true; private boolean mIconVisible = true; private boolean mTextMultiLine = true; private PopupWindow mToolTip; private int mToolTipLocation; Loading Loading @@ -109,8 +114,7 @@ public abstract class ButtonDropTarget extends TextView // drawableLeft and drawableStart. mDrawable = getContext().getDrawable(resId).mutate(); mDrawable.setTintList(getTextColors()); centerIcon(); setCompoundDrawablesRelative(mDrawable, null, null, null); updateIconVisibility(); } public void setDropTargetBar(DropTargetBar dropTargetBar) { Loading Loading @@ -306,11 +310,47 @@ public abstract class ButtonDropTarget extends TextView if (mTextVisible != isVisible || !TextUtils.equals(newText, getText())) { mTextVisible = isVisible; setText(newText); updateIconVisibility(); } } /** * Display button text over multiple lines when isMultiLine is true, single line otherwise. */ public void setTextMultiLine(boolean isMultiLine) { if (mTextMultiLine != isMultiLine) { mTextMultiLine = isMultiLine; setSingleLine(!isMultiLine); setMaxLines(isMultiLine ? MAX_LINES_TEXT_MULTI_LINE : MAX_LINES_TEXT_SINGLE_LINE); int inputType = InputType.TYPE_CLASS_TEXT; if (isMultiLine) { inputType |= InputType.TYPE_TEXT_FLAG_MULTI_LINE; } setInputType(inputType); } } protected boolean isTextMultiLine() { return mTextMultiLine; } /** * Sets the button icon visible when isVisible is true, hides it otherwise. */ public void setIconVisible(boolean isVisible) { if (mIconVisible != isVisible) { mIconVisible = isVisible; updateIconVisibility(); } } private void updateIconVisibility() { if (mIconVisible) { centerIcon(); setCompoundDrawablesRelative(mDrawable, null, null, null); int drawablePadding = mTextVisible ? mDrawablePadding : 0; setCompoundDrawablePadding(drawablePadding); } setCompoundDrawablesRelative(mIconVisible ? mDrawable : null, null, null, null); setCompoundDrawablePadding(mIconVisible && mTextVisible ? mDrawablePadding : 0); } @Override Loading @@ -324,40 +364,6 @@ public abstract class ButtonDropTarget extends TextView hideTooltip(); } /** * Reduce the size of the text until it fits or reaches a minimum. * * The minimum size is defined by {@code R.dimen.button_drop_target_min_text_size} and * it diminishes by intervals defined by * {@code R.dimen.button_drop_target_resize_text_increment} * This functionality is very similar to the option * {@link TextView#setAutoSizeTextTypeWithDefaults(int)} but can't be used in this view because * the layout width is {@code WRAP_CONTENT}. * * @param availableWidth Available width in the button to fit the text, used in * {@code ButtonDropTarget#isTextTruncated(int)} * @return The biggest text size in SP that makes the text fit or if the text can't fit returns * the min available value */ public float resizeTextToFit(int availableWidth) { float minSize = Utilities.pxToSp(getResources() .getDimensionPixelSize(R.dimen.button_drop_target_min_text_size)); float step = Utilities.pxToSp(getResources() .getDimensionPixelSize(R.dimen.button_drop_target_resize_text_increment)); float textSize = Utilities.pxToSp(getTextSize()); while (textSize > minSize) { if (isTextTruncated(availableWidth)) { textSize -= step; setTextSize(textSize); } else { return textSize; } } return minSize; } public boolean isTextTruncated(int availableWidth) { availableWidth -= (getPaddingLeft() + getPaddingRight() + mDrawable.getIntrinsicWidth() + getCompoundDrawablePadding()); Loading
src/com/android/launcher3/DeviceProfile.java +19 −10 Original line number Diff line number Diff line Loading @@ -108,6 +108,7 @@ public class DeviceProfile { public float workspaceSpringLoadShrunkTop; public float workspaceSpringLoadShrunkBottom; public final int workspaceSpringLoadedBottomSpace; public final int workspaceSpringLoadedMinNextPageVisiblePx; private final int extraSpace; public int workspaceTopPadding; Loading Loading @@ -214,6 +215,8 @@ public class DeviceProfile { public int dropTargetHorizontalPaddingPx; public int dropTargetVerticalPaddingPx; public int dropTargetGapPx; public int dropTargetButtonWorkspaceEdgeGapPx; public int dropTargetButtonScreenEdgeGapPx; // Insets private final Rect mInsets = new Rect(); Loading Loading @@ -343,9 +346,15 @@ public class DeviceProfile { dropTargetVerticalPaddingPx = res.getDimensionPixelSize( R.dimen.drop_target_button_drawable_vertical_padding); dropTargetGapPx = res.getDimensionPixelSize(R.dimen.drop_target_button_gap); dropTargetButtonWorkspaceEdgeGapPx = res.getDimensionPixelSize( R.dimen.drop_target_button_workspace_edge_gap); dropTargetButtonScreenEdgeGapPx = res.getDimensionPixelSize( R.dimen.drop_target_button_screen_edge_gap); workspaceSpringLoadedBottomSpace = res.getDimensionPixelSize(R.dimen.dynamic_grid_min_spring_loaded_space); workspaceSpringLoadedMinNextPageVisiblePx = res.getDimensionPixelSize( R.dimen.dynamic_grid_spring_loaded_min_next_space_visible); workspaceCellPaddingXPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_cell_padding_x); Loading Loading @@ -501,7 +510,7 @@ public class DeviceProfile { */ private int calculateQsbWidth() { if (isQsbInline) { int columns = isTwoPanels ? inv.numColumns * 2 : inv.numColumns; int columns = getPanelCount() * inv.numColumns; return getIconToIconWidthForColumns(columns) - iconSizePx * numShownHotseatIcons - hotseatBorderSpace * numShownHotseatIcons; Loading Loading @@ -954,13 +963,6 @@ public class DeviceProfile { return workspaceSpringLoadShrunkBottom; } /** * Gets the minimum visible amount of the next workspace page when in the spring-loaded state. */ private float getWorkspaceSpringLoadedMinimumNextPageVisible() { return getCellSize().x / 2f; } /** * Gets the scale of the workspace for the spring-loaded edit state. */ Loading @@ -972,8 +974,7 @@ public class DeviceProfile { // Reduce scale if next pages would not be visible after scaling the workspace int workspaceWidth = availableWidthPx; float scaledWorkspaceWidth = workspaceWidth * scale; float maxAvailableWidth = workspaceWidth - (2 * getWorkspaceSpringLoadedMinimumNextPageVisible()); float maxAvailableWidth = workspaceWidth - (2 * workspaceSpringLoadedMinNextPageVisiblePx); if (scaledWorkspaceWidth > maxAvailableWidth) { scale *= maxAvailableWidth / scaledWorkspaceWidth; } Loading Loading @@ -1412,11 +1413,19 @@ public class DeviceProfile { writer.println(prefix + pxToDpStr("dropTargetBarSizePx", dropTargetBarSizePx)); writer.println( prefix + pxToDpStr("dropTargetBarBottomMarginPx", dropTargetBarBottomMarginPx)); writer.println(prefix + pxToDpStr("dropTargetButtonWorkspaceEdgeGapPx", dropTargetButtonWorkspaceEdgeGapPx)); writer.println(prefix + pxToDpStr("dropTargetButtonScreenEdgeGapPx", dropTargetButtonScreenEdgeGapPx)); writer.println( prefix + pxToDpStr("workspaceSpringLoadShrunkTop", workspaceSpringLoadShrunkTop)); writer.println(prefix + pxToDpStr("workspaceSpringLoadShrunkBottom", workspaceSpringLoadShrunkBottom)); writer.println(prefix + pxToDpStr("workspaceSpringLoadedBottomSpace", workspaceSpringLoadedBottomSpace)); writer.println(prefix + pxToDpStr("workspaceSpringLoadedMinNextPageVisiblePx", workspaceSpringLoadedMinNextPageVisiblePx)); writer.println( prefix + pxToDpStr("getWorkspaceSpringLoadScale()", getWorkspaceSpringLoadScale())); } Loading
src/com/android/launcher3/DropTargetBar.java +129 −92 File changed.Preview size limit exceeded, changes collapsed. Show changes