Merge "Tune floating rotation button size" into tm-qpr-dev
diff --git a/quickstep/res/values-land/dimens.xml b/quickstep/res/values-land/dimens.xml
index f233bde..732f511 100644
--- a/quickstep/res/values-land/dimens.xml
+++ b/quickstep/res/values-land/dimens.xml
@@ -15,7 +15,8 @@
limitations under the License.
-->
<resources>
- <dimen name="overview_task_margin">8dp</dimen>
+ <!-- Overview actions -->
+ <dimen name="overview_actions_top_margin">12dp</dimen>
<!-- Tips Gesture Tutorial -->
<dimen name="gesture_tutorial_feedback_margin_start_end">126dp</dimen>
diff --git a/quickstep/res/values-nb/strings.xml b/quickstep/res/values-nb/strings.xml
index 1650a5c..250724e 100644
--- a/quickstep/res/values-nb/strings.xml
+++ b/quickstep/res/values-nb/strings.xml
@@ -87,7 +87,7 @@
<string name="toast_split_select_app" msgid="5453865907322018352">"Trykk på en annen app for å bruke delt skjerm"</string>
<string name="toast_split_app_unsupported" msgid="3271526028981899666">"Appen støtter ikke delt skjerm."</string>
<string name="blocked_by_policy" msgid="2071401072261365546">"Appen eller organisasjonen din tillater ikke denne handlingen"</string>
- <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Vil du hoppe over navigeringsveiledning?"</string>
+ <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Vil du hoppe over navigeringsveiledningen?"</string>
<string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Du kan finne dette i <xliff:g id="NAME">%1$s</xliff:g>-appen senere"</string>
<string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Avbryt"</string>
<string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Hopp over"</string>
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java
index f2162b0..2d7fe69 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java
@@ -191,6 +191,9 @@
1 - ALL_APPS_SCRIM_OPAQUE_THRESHOLD,
1 - ALL_APPS_SCRIM_VISIBLE_THRESHOLD));
config.setInterpolator(ANIM_VERTICAL_PROGRESS, EMPHASIZED_ACCELERATE);
+ if (!isTablet) {
+ config.setInterpolator(ANIM_WORKSPACE_FADE, INSTANT);
+ }
} else if (fromState == NORMAL && toState == ALL_APPS) {
if (mActivity.getDeviceProfile().isTablet) {
config.setInterpolator(ANIM_VERTICAL_PROGRESS, EMPHASIZED_DECELERATE);
diff --git a/quickstep/src/com/android/quickstep/TopTaskTracker.java b/quickstep/src/com/android/quickstep/TopTaskTracker.java
index 39c5f2a..723dc72 100644
--- a/quickstep/src/com/android/quickstep/TopTaskTracker.java
+++ b/quickstep/src/com/android/quickstep/TopTaskTracker.java
@@ -15,12 +15,13 @@
*/
package com.android.quickstep;
+import static android.app.ActivityTaskManager.INVALID_TASK_ID;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.content.Intent.ACTION_CHOOSER;
import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS;
import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT;
-import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.ACTIVITY_TYPE_ASSISTANT;
import android.app.ActivityManager.RunningTaskInfo;
import android.content.Context;
@@ -64,6 +65,7 @@
private final StagedSplitTaskPosition mMainStagePosition = new StagedSplitTaskPosition();
private final StagedSplitTaskPosition mSideStagePosition = new StagedSplitTaskPosition();
+ private int mPinnedTaskId = INVALID_TASK_ID;
private TopTaskTracker(Context context) {
mMainStagePosition.stageType = SplitConfigurationOptions.STAGE_TYPE_MAIN;
@@ -132,8 +134,18 @@
}
}
+ @Override
+ public void onActivityPinned(String packageName, int userId, int taskId, int stackId) {
+ mPinnedTaskId = taskId;
+ }
+
+ @Override
+ public void onActivityUnpinned() {
+ mPinnedTaskId = INVALID_TASK_ID;
+ }
+
private void resetTaskId(StagedSplitTaskPosition taskPosition) {
- taskPosition.taskId = -1;
+ taskPosition.taskId = INVALID_TASK_ID;
}
/**
@@ -141,7 +153,8 @@
* Will return empty array if device is not in staged split
*/
public int[] getRunningSplitTaskIds() {
- if (mMainStagePosition.taskId == -1 || mSideStagePosition.taskId == -1) {
+ if (mMainStagePosition.taskId == INVALID_TASK_ID
+ || mSideStagePosition.taskId == INVALID_TASK_ID) {
return new int[]{};
}
int[] out = new int[2];
@@ -175,7 +188,11 @@
false /* filterOnlyVisibleRecents */));
Collections.addAll(mOrderedTaskList, tasks);
}
- return new CachedTaskInfo(new ArrayList<>(mOrderedTaskList));
+
+ // Strip the pinned task
+ ArrayList<RunningTaskInfo> tasks = new ArrayList<>(mOrderedTaskList);
+ tasks.removeIf(t -> t.taskId == mPinnedTaskId);
+ return new CachedTaskInfo(tasks);
}
/**
@@ -194,7 +211,7 @@
}
public int getTaskId() {
- return mTopTask == null ? -1 : mTopTask.taskId;
+ return mTopTask == null ? INVALID_TASK_ID : mTopTask.taskId;
}
/**
diff --git a/quickstep/src/com/android/quickstep/views/OverviewActionsView.java b/quickstep/src/com/android/quickstep/views/OverviewActionsView.java
index 1c4e497..3133453 100644
--- a/quickstep/src/com/android/quickstep/views/OverviewActionsView.java
+++ b/quickstep/src/com/android/quickstep/views/OverviewActionsView.java
@@ -22,10 +22,8 @@
import android.util.AttributeSet;
import android.view.View;
import android.view.View.OnClickListener;
-import android.view.ViewGroup;
import android.widget.Button;
import android.widget.FrameLayout;
-import android.widget.LinearLayout;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
@@ -233,10 +231,6 @@
return 0;
}
- if (mDp.isVerticalBarLayout()) {
- return mDp.getInsets().bottom;
- }
-
if (!mDp.isGestureMode && mDp.isTaskbarPresent) {
return mDp.getOverviewActionsClaimedSpaceBelow();
}
@@ -254,12 +248,6 @@
mTaskSize.set(taskSize);
updateVerticalMargin(DisplayController.getNavigationMode(getContext()));
- LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
- dp.isVerticalBarLayout() ? 0 : dp.overviewActionsButtonSpacing,
- ViewGroup.LayoutParams.MATCH_PARENT);
- params.weight = dp.isVerticalBarLayout() ? 1 : 0;
- findViewById(R.id.action_split_space).setLayoutParams(params);
-
requestLayout();
mSplitButton.setCompoundDrawablesWithIntrinsicBounds(
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 15899ec..173518f 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -171,7 +171,7 @@
<string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Pauziraj poslovne aplikacije"</string>
<string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Uključi poslovne aplikacije"</string>
<string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtrirajte"</string>
- <string name="search_pref_screen_title" msgid="3258959643336315962">"Pretraživanje telefona"</string>
- <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Pretraživanje tableta"</string>
+ <string name="search_pref_screen_title" msgid="3258959643336315962">"Pretražite telefon"</string>
+ <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Pretražite tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Nije uspjelo: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 960651c..9b30b1e 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -171,9 +171,7 @@
<string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Mettre en pause les applis professionnelles"</string>
<string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Activer les applications professionnelles"</string>
<string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtre"</string>
- <!-- no translation found for search_pref_screen_title (3258959643336315962) -->
- <skip />
- <!-- no translation found for search_pref_screen_title_tablet (5220319680451343959) -->
- <skip />
+ <string name="search_pref_screen_title" msgid="3258959643336315962">"Rechercher sur votre téléphone"</string>
+ <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Rechercher sur votre tablette"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Échec : <xliff:g id="WHAT">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index be94a6a..eba195c 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -171,9 +171,7 @@
<string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Sett jobbapper på pause"</string>
<string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Slå på jobbapper"</string>
<string name="developer_options_filter_hint" msgid="5896817443635989056">"Filter"</string>
- <!-- no translation found for search_pref_screen_title (3258959643336315962) -->
- <skip />
- <!-- no translation found for search_pref_screen_title_tablet (5220319680451343959) -->
- <skip />
+ <string name="search_pref_screen_title" msgid="3258959643336315962">"Søk på telefonen"</string>
+ <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Søk på nettbrettet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Mislyktes: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 5c99b3d..869e91b 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -171,9 +171,7 @@
<string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Wstrzymaj aplikacje służbowe"</string>
<string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Włącz aplikacje służbowe"</string>
<string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtruj"</string>
- <!-- no translation found for search_pref_screen_title (3258959643336315962) -->
- <skip />
- <!-- no translation found for search_pref_screen_title_tablet (5220319680451343959) -->
- <skip />
+ <string name="search_pref_screen_title" msgid="3258959643336315962">"Przeszukuj telefon"</string>
+ <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Przeszukuj tablet"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Niepowodzenie: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 0f1e448..2b43a4d 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -171,9 +171,7 @@
<string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Призупинити робочі додатки"</string>
<string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Увімкнути робочі додатки"</string>
<string name="developer_options_filter_hint" msgid="5896817443635989056">"Фільтр"</string>
- <!-- no translation found for search_pref_screen_title (3258959643336315962) -->
- <skip />
- <!-- no translation found for search_pref_screen_title_tablet (5220319680451343959) -->
- <skip />
+ <string name="search_pref_screen_title" msgid="3258959643336315962">"Пошук на телефоні"</string>
+ <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Пошук на планшеті"</string>
<string name="remote_action_failed" msgid="1383965239183576790">"Не вдалося <xliff:g id="WHAT">%1$s</xliff:g>"</string>
</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index a10aa19..2109510 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -44,9 +44,9 @@
<item name="isMainColorDark">false</item>
<item name="isWorkspaceDarkText">false</item>
<item name="workspaceTextColor">@color/workspace_text_color_light</item>
- <item name="workspaceShadowColor">#ff000000</item>
- <item name="workspaceAmbientShadowColor">#33000000</item>
- <item name="workspaceKeyShadowColor">#ff000000</item>
+ <item name="workspaceShadowColor">#B0000000</item>
+ <item name="workspaceAmbientShadowColor">#40000000</item>
+ <item name="workspaceKeyShadowColor">#89000000</item>
<item name="workspaceStatusBarScrim">@drawable/workspace_bg</item>
<item name="widgetsTheme">@style/WidgetContainerTheme</item>
<item name="folderDotColor">@color/folder_dot_color</item>
@@ -82,9 +82,9 @@
<style name="LauncherTheme.DarkText" parent="@style/LauncherTheme">
<item name="workspaceTextColor">@color/workspace_text_color_dark</item>
- <item name="workspaceShadowColor">#ffffffff</item>
- <item name="workspaceAmbientShadowColor">#33ffffff</item>
- <item name="workspaceKeyShadowColor">#ffffffff</item>
+ <item name="workspaceShadowColor">@android:color/transparent</item>
+ <item name="workspaceAmbientShadowColor">@android:color/transparent</item>
+ <item name="workspaceKeyShadowColor">@android:color/transparent</item>
<item name="isWorkspaceDarkText">true</item>
<item name="workspaceStatusBarScrim">@null</item>
<item name="workspaceAccentColor">@color/workspace_accent_color_dark</item>
@@ -132,9 +132,9 @@
<style name="LauncherTheme.Dark.DarkText" parent="@style/LauncherTheme.Dark">
<item name="android:colorControlHighlight">#19212121</item>
<item name="workspaceTextColor">@color/workspace_text_color_dark</item>
- <item name="workspaceShadowColor">#ffffffff</item>
- <item name="workspaceAmbientShadowColor">#33ffffff</item>
- <item name="workspaceKeyShadowColor">#ffffffff</item>
+ <item name="workspaceShadowColor">@android:color/transparent</item>
+ <item name="workspaceAmbientShadowColor">@android:color/transparent</item>
+ <item name="workspaceKeyShadowColor">@android:color/transparent</item>
<item name="isWorkspaceDarkText">true</item>
<item name="workspaceStatusBarScrim">@null</item>
<item name="workspaceAccentColor">@color/workspace_accent_color_dark</item>
@@ -250,14 +250,14 @@
<!-- Icon displayed on the workspace -->
<style name="BaseIcon.Workspace.Shadows" parent="BaseIcon">
- <item name="android:shadowRadius">1.0</item>
+ <item name="android:shadowRadius">2.0</item>
<item name="android:shadowColor">?attr/workspaceShadowColor</item>
<item name="ambientShadowColor">?attr/workspaceAmbientShadowColor</item>
- <item name="ambientShadowBlur">1.0dp</item>
+ <item name="ambientShadowBlur">1.5dp</item>
<item name="keyShadowColor">?attr/workspaceKeyShadowColor</item>
- <item name="keyShadowBlur">1.0dp</item>
- <item name="keyShadowOffsetX">0dp</item>
- <item name="keyShadowOffsetY">0dp</item>
+ <item name="keyShadowBlur">.5dp</item>
+ <item name="keyShadowOffsetX">.5dp</item>
+ <item name="keyShadowOffsetY">.5dp</item>
</style>
<!-- Intentionally empty so we can override -->
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index b276397..a428b7e 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -414,10 +414,7 @@
overviewTaskIconDrawableSizeGridPx =
res.getDimensionPixelSize(R.dimen.task_thumbnail_icon_drawable_size_grid);
overviewTaskThumbnailTopMarginPx = overviewTaskIconSizePx + overviewTaskMarginPx * 2;
- // In vertical bar, use the smaller task margin for the top regardless of mode.
- overviewActionsTopMarginPx = isVerticalBarLayout()
- ? overviewTaskMarginPx
- : res.getDimensionPixelSize(R.dimen.overview_actions_top_margin);
+ overviewActionsTopMarginPx = res.getDimensionPixelSize(R.dimen.overview_actions_top_margin);
overviewPageSpacing = res.getDimensionPixelSize(R.dimen.overview_page_spacing);
overviewActionsButtonSpacing = res.getDimensionPixelSize(
R.dimen.overview_actions_button_spacing);
diff --git a/src/com/android/launcher3/touch/AllAppsSwipeController.java b/src/com/android/launcher3/touch/AllAppsSwipeController.java
index 787d9ea..db43baa 100644
--- a/src/com/android/launcher3/touch/AllAppsSwipeController.java
+++ b/src/com/android/launcher3/touch/AllAppsSwipeController.java
@@ -65,13 +65,13 @@
public static final Interpolator BLUR =
Interpolators.clampToProgress(
Interpolators.mapToProgress(
- EMPHASIZED_DECELERATE, 0f, ALL_APPS_FULL_DEPTH_PROGRESS),
+ LINEAR, 0f, ALL_APPS_FULL_DEPTH_PROGRESS),
WORKSPACE_MOTION_START, ALL_APPS_STATE_TRANSITION);
public static final Interpolator WORKSPACE_FADE =
Interpolators.clampToProgress(FINAL_FRAME, 0f, ALL_APPS_STATE_TRANSITION);
public static final Interpolator WORKSPACE_SCALE =
Interpolators.clampToProgress(
- EMPHASIZED_DECELERATE, WORKSPACE_MOTION_START, ALL_APPS_STATE_TRANSITION);
+ EMPHASIZED_ACCELERATE, WORKSPACE_MOTION_START, ALL_APPS_STATE_TRANSITION);
public static final Interpolator HOTSEAT_FADE = WORKSPACE_FADE;
public static final Interpolator HOTSEAT_SCALE = HOTSEAT_FADE;
public static final Interpolator HOTSEAT_TRANSLATE =
@@ -157,6 +157,9 @@
config.setInterpolator(ANIM_SCRIM_FADE, ALLAPPS_STAGGERED_FADE_LATE_RESPONDER);
config.setInterpolator(ANIM_ALL_APPS_FADE, isTablet
? FINAL_FRAME : ALLAPPS_STAGGERED_FADE_EARLY_RESPONDER);
+ if (!isTablet) {
+ config.setInterpolator(ANIM_WORKSPACE_FADE, INSTANT);
+ }
}
/**
diff --git a/src/com/android/launcher3/util/DisplayController.java b/src/com/android/launcher3/util/DisplayController.java
index 7c73be5..9ed6bee 100644
--- a/src/com/android/launcher3/util/DisplayController.java
+++ b/src/com/android/launcher3/util/DisplayController.java
@@ -55,6 +55,7 @@
import java.io.PrintWriter;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Objects;
import java.util.Set;
@@ -238,7 +239,8 @@
if (newInfo.navigationMode != oldInfo.navigationMode) {
change |= CHANGE_NAVIGATION_MODE;
}
- if (!newInfo.supportedBounds.equals(oldInfo.supportedBounds)) {
+ if (!newInfo.supportedBounds.equals(oldInfo.supportedBounds)
+ || !newInfo.mPerDisplayBounds.equals(oldInfo.mPerDisplayBounds)) {
change |= CHANGE_SUPPORTED_BOUNDS;
Point currentS = newInfo.currentSize;
@@ -261,6 +263,9 @@
return;
}
}
+ Log.d("b/198965093", "handleInfoChange"
+ + "\n\tchange: " + change
+ + "\n\tConfiguration diff: " + newInfo.mConfiguration.diff(oldInfo.mConfiguration));
if (change != 0) {
mInfo = newInfo;
@@ -300,6 +305,9 @@
private final ArrayMap<String, Pair<CachedDisplayInfo, WindowBounds[]>> mPerDisplayBounds =
new ArrayMap<>();
+ // TODO(b/198965093): Remove after investigation
+ private Configuration mConfiguration;
+
public Info(Context context, Display display) {
/* don't need system overrides for external displays */
this(context, display, new WindowManagerProxy(), new ArrayMap<>());
@@ -321,6 +329,9 @@
mScreenSizeDp = new PortraitSize(config.screenHeightDp, config.screenWidthDp);
navigationMode = parseNavigationMode(context);
+ // TODO(b/198965093): Remove after investigation
+ mConfiguration = config;
+
mPerDisplayBounds.putAll(perDisplayBoundsCache);
Pair<CachedDisplayInfo, WindowBounds[]> cachedValue = mPerDisplayBounds.get(displayId);
@@ -340,8 +351,11 @@
}
mPerDisplayBounds.values().forEach(
pair -> Collections.addAll(supportedBounds, pair.second));
- Log.d("b/211775278", "displayId: " + displayId + ", currentSize: " + currentSize);
- Log.d("b/211775278", "perDisplayBounds: " + mPerDisplayBounds);
+ Log.e("b/198965093", "mConfiguration: " + mConfiguration);
+ Log.d("b/198965093", "displayInfo: " + displayInfo);
+ Log.d("b/198965093", "realBounds: " + realBounds);
+ mPerDisplayBounds.values().forEach(pair -> Log.d("b/198965093",
+ "perDisplayBounds - " + pair.first + ": " + Arrays.deepToString(pair.second)));
}
/**
@@ -375,7 +389,8 @@
pw.println(" densityDpi=" + info.densityDpi);
pw.println(" navigationMode=" + info.navigationMode.name());
pw.println(" currentSize=" + info.currentSize);
- pw.println(" supportedBounds=" + info.supportedBounds);
+ info.mPerDisplayBounds.values().forEach(pair -> pw.println(
+ " perDisplayBounds - " + pair.first + ": " + Arrays.deepToString(pair.second)));
}
/**
diff --git a/src/com/android/launcher3/util/WindowBounds.java b/src/com/android/launcher3/util/WindowBounds.java
index a15679a..91480e1 100644
--- a/src/com/android/launcher3/util/WindowBounds.java
+++ b/src/com/android/launcher3/util/WindowBounds.java
@@ -76,6 +76,7 @@
+ "bounds=" + bounds
+ ", insets=" + insets
+ ", availableSize=" + availableSize
+ + ", rotationHint=" + rotationHint
+ '}';
}
diff --git a/src/com/android/launcher3/views/DoubleShadowBubbleTextView.java b/src/com/android/launcher3/views/DoubleShadowBubbleTextView.java
index 374555c..a309e6e 100644
--- a/src/com/android/launcher3/views/DoubleShadowBubbleTextView.java
+++ b/src/com/android/launcher3/views/DoubleShadowBubbleTextView.java
@@ -16,6 +16,8 @@
package com.android.launcher3.views;
+import static com.android.launcher3.icons.GraphicsUtils.setColorAlphaBound;
+
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
@@ -54,10 +56,11 @@
super.onDraw(canvas);
return;
}
+ int alpha = Color.alpha(getCurrentTextColor());
// We enhance the shadow by drawing the shadow twice
getPaint().setShadowLayer(mShadowInfo.ambientShadowBlur, 0, 0,
- mShadowInfo.ambientShadowColor);
+ getTextShadowColor(mShadowInfo.ambientShadowColor, alpha));
drawWithoutDot(canvas);
canvas.save();
@@ -69,7 +72,7 @@
mShadowInfo.keyShadowBlur,
mShadowInfo.keyShadowOffsetX,
mShadowInfo.keyShadowOffsetY,
- mShadowInfo.keyShadowColor);
+ getTextShadowColor(mShadowInfo.keyShadowColor, alpha));
drawWithoutDot(canvas);
canvas.restore();
@@ -110,18 +113,24 @@
return true;
} else if (ambientShadowAlpha > 0 && keyShadowAlpha == 0) {
textView.getPaint().setShadowLayer(ambientShadowBlur, 0, 0,
- ambientShadowColor);
+ getTextShadowColor(ambientShadowColor, textAlpha));
return true;
} else if (keyShadowAlpha > 0 && ambientShadowAlpha == 0) {
textView.getPaint().setShadowLayer(
keyShadowBlur,
keyShadowOffsetX,
keyShadowOffsetY,
- keyShadowColor);
+ getTextShadowColor(keyShadowColor, textAlpha));
return true;
} else {
return false;
}
}
}
+
+ // Multiplies the alpha of shadowColor by textAlpha.
+ private static int getTextShadowColor(int shadowColor, int textAlpha) {
+ return setColorAlphaBound(shadowColor,
+ Math.round(Color.alpha(shadowColor) * textAlpha / 255f));
+ }
}