diff --git a/packages/apps/Launcher3/res/layout/launcher.xml b/packages/apps/Launcher3/res/layout/launcher.xml
index 1f6309ea745..7fb2afd155c 100755
--- a/packages/apps/Launcher3/res/layout/launcher.xml
+++ b/packages/apps/Launcher3/res/layout/launcher.xml
@@ -51,16 +51,16 @@
<!-- Keep these behind the workspace so that they are not visible when
we go into AllApps -->
- <com.sprd.ext.pageindicators.WorkspacePageIndicatorLine
+ <com.android.launcher3.pageindicators.PageIndicatorDots
android:id="@+id/page_indicator"
android:layout_width="match_parent"
android:layout_height="@dimen/workspace_page_indicator_height"
android:layout_gravity="bottom|center_horizontal"
android:theme="@style/HomeScreenElementTheme" />
- <include
+ <!-- <include
android:id="@+id/page_indicator_customize"
- layout="@layout/page_indicator_customize" />
+ layout="@layout/page_indicator_customize" /> -->
<include
android:id="@+id/drop_target_bar"
diff --git a/packages/apps/Launcher3/res_unisoc/layout/page_indicator_customize.xml b/packages/apps/Launcher3/res_unisoc/layout/page_indicator_customize.xml
index 6779f8361e8..510267418bd 100755
--- a/packages/apps/Launcher3/res_unisoc/layout/page_indicator_customize.xml
+++ b/packages/apps/Launcher3/res_unisoc/layout/page_indicator_customize.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<com.sprd.ext.pageindicators.WorkspacePageIndicatorDots
+<com.android.launcher3.pageindicators.PageIndicatorDots
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/page_indicator_customize"
android:layout_width="match_parent"
diff --git a/packages/apps/Launcher3/src/com/android/launcher3/Workspace.java b/packages/apps/Launcher3/src/com/android/launcher3/Workspace.java
index cc0882c1222..701b963b30d 100755
--- a/packages/apps/Launcher3/src/com/android/launcher3/Workspace.java
+++ b/packages/apps/Launcher3/src/com/android/launcher3/Workspace.java
@@ -92,6 +92,7 @@ import com.android.launcher3.model.data.LauncherAppWidgetInfo;
import com.android.launcher3.model.data.WorkspaceItemFactory;
import com.android.launcher3.model.data.WorkspaceItemInfo;
import com.android.launcher3.pageindicators.PageIndicator;
+import com.android.launcher3.pageindicators.PageIndicatorDots;
import com.android.launcher3.statemanager.StateManager;
import com.android.launcher3.statemanager.StateManager.StateHandler;
import com.android.launcher3.states.StateAnimationConfig;
@@ -137,7 +138,7 @@ import android.util.Log;
* interact with. A workspace is meant to be used with a fixed width only.
* @param <T> Class that extends View and PageIndicator
*/
-public class Workspace<T extends View & PageIndicator> extends PagedView<T>
+public class Workspace<T extends View & PageIndicator> extends PagedView<PageIndicatorDots>
implements DropTarget, DragSource, View.OnTouchListener,
DragController.DragListener, Insettable, StateHandler<LauncherState>,
WorkspaceLayoutManager, LauncherBindableItemsContainer {
@@ -371,7 +372,7 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T>
@Override
public void initParentViews(View parent) {
if (MultiModeController.isSingleLayerMode(mLauncher)) {
- mPageIndicator = parent.findViewById(R.id.page_indicator_customize);
+ mPageIndicator = parent.findViewById(R.id.page_indicator);
mPageIndicator.setMarkersCount(getChildCount());
return;
}
diff --git a/packages/apps/Launcher3/src/com/android/launcher3/pageindicators/PageIndicatorDots.java b/packages/apps/Launcher3/src/com/android/launcher3/pageindicators/PageIndicatorDots.java
index 29eefe2a03a..752f54bd85a 100644
--- a/packages/apps/Launcher3/src/com/android/launcher3/pageindicators/PageIndicatorDots.java
+++ b/packages/apps/Launcher3/src/com/android/launcher3/pageindicators/PageIndicatorDots.java
@@ -38,12 +38,18 @@ import android.view.animation.OvershootInterpolator;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.util.Themes;
+import com.android.launcher3.DeviceProfile;
+import android.widget.FrameLayout;
+import android.graphics.Rect;
+import android.view.Gravity;
+import com.android.launcher3.Launcher;
+import com.android.launcher3.Insettable;
/**
* {@link PageIndicator} which shows dots per page. The active page is shown with the current
* accent color.
*/
-public class PageIndicatorDots extends View implements PageIndicator {
+public class PageIndicatorDots extends View implements Insettable, PageIndicator {
private static final float SHIFT_PER_ANIMATION = 0.5f;
private static final float SHIFT_THRESHOLD = 0.1f;
@@ -61,6 +67,8 @@ public class PageIndicatorDots extends View implements PageIndicator {
private static final RectF sTempRect = new RectF();
+ private final Launcher mLauncher;
+
private static final Property<PageIndicatorDots, Float> CURRENT_POSITION
= new Property<PageIndicatorDots, Float>(float.class, "current_position") {
@Override
@@ -116,6 +124,7 @@ public class PageIndicatorDots extends View implements PageIndicator {
setOutlineProvider(new MyOutlineProver());
mIsRtl = Utilities.isRtl(getResources());
+ mLauncher = Launcher.getLauncher(context);
}
@Override
@@ -125,6 +134,8 @@ public class PageIndicatorDots extends View implements PageIndicator {
currentScroll = totalScroll - currentScroll;
}
int scrollPerPage = totalScroll / (mNumPages - 1);
+ if(scrollPerPage == 0)
+ return;
int pageToLeft = currentScroll / scrollPerPage;
int pageToLeftScroll = pageToLeft * scrollPerPage;
int pageToRightScroll = pageToLeftScroll + scrollPerPage;
@@ -140,6 +151,8 @@ public class PageIndicatorDots extends View implements PageIndicator {
// scroll is between left and right page
animateToPosition(pageToLeft + SHIFT_PER_ANIMATION);
}
+ }else if(mNumPages == 1){
+ animateToPosition(0);
}
}
@@ -336,4 +349,36 @@ public class PageIndicatorDots extends View implements PageIndicator {
}
}
}
+
+ @Override
+ public void setInsets(Rect insets) {
+ DeviceProfile grid = mLauncher.getDeviceProfile();
+ FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) getLayoutParams();
+
+ if (grid.isVerticalBarLayout()) {
+ Rect padding = grid.workspacePadding;
+ lp.leftMargin = padding.left + grid.workspaceCellPaddingXPx;
+ lp.rightMargin = padding.right + grid.workspaceCellPaddingXPx;
+ lp.bottomMargin = padding.bottom;
+ } else {
+ lp.leftMargin = lp.rightMargin = 0;
+ lp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM;
+ lp.bottomMargin = grid.hotseatBarSizePx + insets.bottom;
+ }
+ setLayoutParams(lp);
+ }
+
+ /**
+ * Pauses all currently running animations.
+ */
+ public void pauseAnimations() {
+ stopAllAnimations();
+ }
+
+ /**
+ * Force-ends all currently running or paused animations.
+ */
+ public void skipAnimationsToEnd() {
+ stopAllAnimations();
+ }
}
修改圆点颜色样式大小:
diff --git a/packages/apps/Launcher3/res/values/dimens.xml b/packages/apps/Launcher3/res/values/dimens.xml
index 71b117d0793..6984fa8a5d3 100755
--- a/packages/apps/Launcher3/res/values/dimens.xml
+++ b/packages/apps/Launcher3/res/values/dimens.xml
@@ -32,8 +32,8 @@
<dimen name="dynamic_grid_cell_padding_x">0dp</dimen>
<!-- Hotseat -->
- <dimen name="dynamic_grid_hotseat_top_padding">8dp</dimen>
- <dimen name="dynamic_grid_hotseat_bottom_padding">2dp</dimen>
+ <dimen name="dynamic_grid_hotseat_top_padding">0dp</dimen>
+ <dimen name="dynamic_grid_hotseat_bottom_padding">20dp</dimen>
<dimen name="dynamic_grid_hotseat_bottom_tall_padding">0dp</dimen>
<dimen name="inline_qsb_bottom_margin">0dp</dimen>
<dimen name="spring_loaded_hotseat_top_margin">76dp</dimen>
@@ -256,7 +256,7 @@
<dimen name="keyboard_drag_stroke_width">4dp</dimen>
<!-- Folders -->
- <dimen name="page_indicator_dot_size">8dp</dimen>
+ <dimen name="page_indicator_dot_size">6dp</dimen>
<dimen name="folder_cell_x_padding">9dp</dimen>
<dimen name="folder_cell_y_padding">14dp</dimen>
diff --git a/packages/apps/Launcher3/src/com/android/launcher3/DeviceProfile.java b/packages/apps/Launcher3/src/com/android/launcher3/DeviceProfile.java
index 49b0cf6f7a7..2fe00213558 100755
--- a/packages/apps/Launcher3/src/com/android/launcher3/DeviceProfile.java
+++ b/packages/apps/Launcher3/src/com/android/launcher3/DeviceProfile.java
@@ -539,7 +539,7 @@ public class DeviceProfile {
private void updateHotseatIconSize(int hotseatIconSizePx) {
// Ensure there is enough space for folder icons, which have a slightly larger radius.
- hotseatCellHeightPx = (int) Math.ceil(hotseatIconSizePx * ICON_OVERLAP_FACTOR);
+ hotseatCellHeightPx = (int) Math.ceil(hotseatIconSizePx * ICON_OVERLAP_FACTOR)+ 30;
if (isVerticalBarLayout()) {
hotseatBarSizePx = hotseatIconSizePx + hotseatBarSidePaddingStartPx
+ hotseatBarSidePaddingEndPx;
diff --git a/packages/apps/Launcher3/src/com/android/launcher3/pageindicators/PageIndicatorDots.java b/packages/apps/Launcher3/src/com/android/launcher3/pageindicators/PageIndicatorDots.java
index 752f54bd85a..85af56a5f63 100644
--- a/packages/apps/Launcher3/src/com/android/launcher3/pageindicators/PageIndicatorDots.java
+++ b/packages/apps/Launcher3/src/com/android/launcher3/pageindicators/PageIndicatorDots.java
@@ -45,6 +45,12 @@ import android.view.Gravity;
import com.android.launcher3.Launcher;
import com.android.launcher3.Insettable;
+import android.app.WallpaperColors;
+import android.app.WallpaperManager;
+import static android.app.WallpaperColors.HINT_SUPPORTS_DARK_TEXT;
+import android.graphics.Color;
+
+
/**
* {@link PageIndicator} which shows dots per page. The active page is shown with the current
* accent color.
@@ -69,6 +75,13 @@ public class PageIndicatorDots extends View implements Insettable, PageIndicator
private final Launcher mLauncher;
+ private int mActiveAlpha = (int) (1f * 255);
+ private int mInActiveAlpha = (int) (0.50f * 255);
+ public static final int IN_WHITE_ALPHA = (int) (0.40f * 255);
+ public static final int IN_BLACK_ALPHA = (int) (0.35f * 255);
+ private final int mActiveColor;
+ final int colorHints;
+
private static final Property<PageIndicatorDots, Float> CURRENT_POSITION
= new Property<PageIndicatorDots, Float>(float.class, "current_position") {
@Override
@@ -119,7 +132,16 @@ public class PageIndicatorDots extends View implements Insettable, PageIndicator
mCirclePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mCirclePaint.setStyle(Style.FILL);
- mCirclePaint.setColor(Themes.getAttrColor(context, R.attr.folderPaginationColor));
+ WallpaperColors colors = context.getSystemService(WallpaperManager.class)
+ .getWallpaperColors(WallpaperManager.FLAG_SYSTEM);
+ colorHints = colors == null ? 0 : colors.getColorHints();
+
+ boolean darkText = Utilities.ATLEAST_S
+ && (colorHints & HINT_SUPPORTS_DARK_TEXT) != 0;
+ android.util.Log.d("jiaz","darkText=="+darkText);
+ mActiveColor = darkText ? Color.BLACK : Color.WHITE;
+ mInActiveAlpha = darkText ? IN_BLACK_ALPHA : IN_WHITE_ALPHA;
+ mCirclePaint.setColor(mActiveColor);
mDotRadius = getResources().getDimension(R.dimen.page_indicator_dot_size) / 2;
setOutlineProvider(new MyOutlineProver());