Merge "Adding listener support for color extraction changes Changing the apps-search layout to use theme attribute instead of hard coded layout id" into ub-launcher3-dorval-polish

This commit is contained in:
TreeHugger Robot 2017-05-11 19:46:27 +00:00 committed by Android (Google) Code Review
commit 9968ed0932
10 changed files with 46 additions and 22 deletions

View File

@ -59,13 +59,15 @@
<!-- Fast scroller popup -->
<TextView
style="@style/FastScrollerPopup"
android:layout_below="@+id/search_container"
android:layout_alignTop="@+id/apps_list_view"
android:id="@+id/fast_scroller_popup"
android:layout_alignParentEnd="true"
android:layout_marginEnd="@dimen/container_fastscroll_popup_margin" />
<!-- Note: we are reusing/repurposing a system attribute for search layout, because of a
platform bug, which prevents using custom attributes in <include> tag -->
<include
layout="@layout/all_apps_search_container"
layout="?android:attr/keyboardLayout"
android:id="@+id/search_container" />
</com.android.launcher3.allapps.AllAppsRecyclerViewContainerView>

View File

@ -15,28 +15,28 @@
-->
<com.android.launcher3.allapps.search.AppsSearchContainerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/search_container"
android:layout_width="match_parent"
android:layout_height="@dimen/all_apps_search_bar_height"
android:layout_gravity="center|top"
android:gravity="center|bottom"
android:id="@+id/search_container"
android:saveEnabled="false">
<com.android.launcher3.ExtendedEditText
android:id="@+id/search_box_input"
android:layout_width="match_parent"
android:layout_height="@dimen/all_apps_search_bar_field_height"
android:background="@android:color/transparent"
android:layout_gravity="bottom"
android:background="@android:color/transparent"
android:focusableInTouchMode="true"
android:gravity="center"
android:hint="@string/all_apps_search_bar_hint"
android:imeOptions="actionSearch|flagNoExtractUi"
android:inputType="text|textNoSuggestions|textCapWords"
android:maxLines="1"
android:scrollHorizontally="true"
android:singleLine="true"
android:textColor="?android:attr/textColorSecondary"
android:hint="@string/all_apps_search_bar_hint"
android:textColorHint="@drawable/all_apps_search_hint"
android:textSize="16sp" />
</com.android.launcher3.allapps.search.AppsSearchContainerLayout>

View File

@ -26,6 +26,7 @@
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionModeOverlay">true</item>
<item name="android:colorEdgeEffect">?android:attr/textColorSecondary</item>
<item name="android:keyboardLayout">@layout/all_apps_search_container</item>
</style>
<!-- Workspace -->

View File

@ -25,6 +25,7 @@
<item name="android:windowShowWallpaper">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:colorEdgeEffect">#FF757575</item>
<item name="android:keyboardLayout">@layout/all_apps_search_container</item>
</style>
<style name="LauncherTheme" parent="@style/BaseLauncherTheme"></style>

View File

@ -212,6 +212,8 @@ public class Launcher extends BaseActivity
private static int NEW_APPS_ANIMATION_INACTIVE_TIMEOUT_SECONDS = 5;
@Thunk static int NEW_APPS_ANIMATION_DELAY = 500;
private final ExtractedColors mExtractedColors = new ExtractedColors();
@Thunk Workspace mWorkspace;
private View mLauncherView;
@Thunk DragLayer mDragLayer;
@ -260,7 +262,6 @@ public class Launcher extends BaseActivity
private LauncherModel mModel;
private ModelWriter mModelWriter;
private IconCache mIconCache;
private ExtractedColors mExtractedColors;
private LauncherAccessibilityDelegate mAccessibilityDelegate;
private Handler mHandler = new Handler();
private boolean mIsResumeFromActionScreenOff;
@ -392,11 +393,10 @@ public class Launcher extends BaseActivity
// LauncherModel load.
mPaused = false;
mLauncherView = getLayoutInflater().inflate(R.layout.launcher, null);
mLauncherView = LayoutInflater.from(this).inflate(R.layout.launcher, null);
setupViews();
mDeviceProfile.layout(this, false /* notifyListeners */);
mExtractedColors = new ExtractedColors();
loadExtractedColorsAndColorItems();
mPopupDataProvider = new PopupDataProvider(this);
@ -465,12 +465,7 @@ public class Launcher extends BaseActivity
@Override
public void onExtractedColorsChanged() {
loadExtractedColorsAndColorItems();
if (mAllAppsController != null) {
mAllAppsController.onExtractedColorsChanged();
}
if (mLauncherCallbacks != null) {
mLauncherCallbacks.onExtractedColorsChanged();
}
mExtractedColors.notifyChange();
}
public ExtractedColors getExtractedColors() {

View File

@ -97,6 +97,4 @@ public interface LauncherCallbacks {
int getSearchBarHeight();
boolean shouldShowDiscoveryBounce();
void onExtractedColorsChanged();
}

View File

@ -42,7 +42,7 @@ import com.android.launcher3.util.TouchController;
* closer to top or closer to the page indicator.
*/
public class AllAppsTransitionController implements TouchController, VerticalPullDetector.Listener,
View.OnLayoutChangeListener {
View.OnLayoutChangeListener, ExtractedColors.OnChangeListener {
private static final String TAG = "AllAppsTrans";
private static final boolean DBG = false;
@ -107,6 +107,7 @@ public class AllAppsTransitionController implements TouchController, VerticalPul
mEvaluator = new ArgbEvaluator();
mAllAppsBackgroundColor = Themes.getAttrColor(l, android.R.attr.colorPrimary);
mLauncher.getExtractedColors().addOnChangeListener(this);
}
@Override
@ -288,6 +289,7 @@ public class AllAppsTransitionController implements TouchController, VerticalPul
mScrimView.setProgress(progress);
}
@Override
public void onExtractedColorsChanged() {
if (FeatureFlags.LAUNCHER3_GRADIENT_ALL_APPS) {
if (mGradientView != null) {

View File

@ -195,6 +195,8 @@ public class AlphabeticalAppsList {
private int mNumPredictedAppsPerRow;
private int mNumAppRowsInAdapter;
private boolean mHasSearchDivider = true;
public AlphabeticalAppsList(Context context) {
mLauncher = Launcher.getLauncher(context);
mIndexer = new AlphabeticIndexCompat(context);
@ -343,6 +345,10 @@ public class AlphabeticalAppsList {
onAppsUpdated();
}
public void disableSearchDivider() {
mHasSearchDivider = false;
}
/**
* Updates internals when the set of apps are updated.
*/
@ -429,8 +435,10 @@ public class AlphabeticalAppsList {
}
}
// Add the search divider
mAdapterItems.add(AdapterItem.asSearchDivider(position++));
if (mHasSearchDivider) {
// Add the search divider
mAdapterItems.add(AdapterItem.asSearchDivider(position++));
}
// Process the predicted app components
mPredictedApps.clear();

View File

@ -28,6 +28,7 @@ import com.android.launcher3.Utilities;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.dynamicui.colorextraction.ColorExtractor;
import java.util.ArrayList;
import java.util.Arrays;
/**
@ -82,6 +83,7 @@ public class ExtractedColors {
private static final String COLOR_SEPARATOR = ",";
private final ArrayList<OnChangeListener> mListeners = new ArrayList<>();
private final int[] mColors;
public ExtractedColors() {
@ -176,4 +178,22 @@ public class ExtractedColors {
setColorAtIndex(ALLAPPS_GRADIENT_SECONDARY_INDEX, Color.WHITE);
}
}
public void addOnChangeListener(OnChangeListener listener) {
mListeners.add(listener);
}
public void notifyChange() {
for (OnChangeListener listener : mListeners) {
listener.onExtractedColorsChanged();
}
}
/**
* Interface for listening for extracted color changes
*/
public interface OnChangeListener {
void onExtractedColorsChanged();
}
}

View File

@ -219,8 +219,5 @@ public class LauncherExtension extends Launcher {
public boolean shouldShowDiscoveryBounce() {
return false;
}
@Override
public void onExtractedColorsChanged() { }
}
}