summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/BaseContainerView.java
diff options
context:
space:
mode:
authorWinson Chung <winsonc@google.com>2015-05-08 13:06:44 -0700
committerWinson Chung <winsonc@google.com>2015-05-08 21:41:40 +0000
commit9480415d9baf00ecfaac8ab3f608b16a1faa6518 (patch)
treed5c35dea3f60d64eaa926d48eb8094cd66deb115 /src/com/android/launcher3/BaseContainerView.java
parent4e267f4cdca3ec52aa55982560551ea766adf9be (diff)
downloadandroid_packages_apps_Trebuchet-9480415d9baf00ecfaac8ab3f608b16a1faa6518.tar.gz
android_packages_apps_Trebuchet-9480415d9baf00ecfaac8ab3f608b16a1faa6518.tar.bz2
android_packages_apps_Trebuchet-9480415d9baf00ecfaac8ab3f608b16a1faa6518.zip
Make common base class to update container bounds and to handle scroll logic.
Bug: 20763871 Change-Id: I8c2f45cfb10964e4be7e9c07c89dd336585c9989
Diffstat (limited to 'src/com/android/launcher3/BaseContainerView.java')
-rw-r--r--src/com/android/launcher3/BaseContainerView.java100
1 files changed, 100 insertions, 0 deletions
diff --git a/src/com/android/launcher3/BaseContainerView.java b/src/com/android/launcher3/BaseContainerView.java
new file mode 100644
index 000000000..2a8443221
--- /dev/null
+++ b/src/com/android/launcher3/BaseContainerView.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.launcher3;
+
+import android.content.Context;
+import android.graphics.Rect;
+import android.util.AttributeSet;
+import android.widget.FrameLayout;
+
+/**
+ * A base container view, which supports resizing.
+ */
+public class BaseContainerView extends FrameLayout implements Insettable {
+
+ protected Rect mInsets = new Rect();
+ protected Rect mFixedBounds = new Rect();
+ protected int mFixedBoundsContainerInset;
+
+ public BaseContainerView(Context context) {
+ this(context, null);
+ }
+
+ public BaseContainerView(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public BaseContainerView(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ mFixedBoundsContainerInset = context.getResources().getDimensionPixelSize(
+ R.dimen.container_fixed_bounds_inset);
+ }
+
+ @Override
+ final public void setInsets(Rect insets) {
+ mInsets.set(insets);
+ onUpdateBackgrounds();
+ onUpdatePaddings();
+ }
+
+ /**
+ * Sets the fixed bounds for this container view.
+ */
+ final public void setFixedBounds(Rect fixedBounds) {
+ if (!fixedBounds.isEmpty() && !fixedBounds.equals(mFixedBounds)) {
+ mFixedBounds.set(fixedBounds);
+ if (Launcher.DISABLE_ALL_APPS_SEARCH_INTEGRATION) {
+ mFixedBounds.top = mInsets.top;
+ mFixedBounds.bottom = getMeasuredHeight();
+ }
+ // To ensure that the child RecyclerView has the full width to handle touches right to
+ // the edge of the screen, we only apply the top and bottom padding to the bounds
+ mFixedBounds.inset(0, mFixedBoundsContainerInset);
+ onFixedBoundsUpdated();
+ }
+ // Post the updates since they can trigger a relayout, and this call can be triggered from
+ // a layout pass itself.
+ post(new Runnable() {
+ @Override
+ public void run() {
+ onUpdateBackgrounds();
+ onUpdatePaddings();
+ }
+ });
+ }
+
+ /**
+ * Update the UI in response to a change in the fixed bounds.
+ */
+ protected void onFixedBoundsUpdated() {
+ // Do nothing
+ }
+
+ /**
+ * Update the paddings in response to a change in the bounds or insets.
+ */
+ protected void onUpdatePaddings() {
+ // Do nothing
+ }
+
+ /**
+ * Update the backgrounds in response to a change in the bounds or insets.
+ */
+ protected void onUpdateBackgrounds() {
+ // Do nothing
+ }
+} \ No newline at end of file