Merge "Removing unused background padding from base recycler view" into ub-launcher3-master
This commit is contained in:
@@ -18,7 +18,6 @@ package com.android.launcher3;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Rect;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.MotionEvent;
|
||||
@@ -48,7 +47,6 @@ public abstract class BaseRecyclerView extends RecyclerView
|
||||
private int mDownX;
|
||||
private int mDownY;
|
||||
private int mLastY;
|
||||
protected Rect mBackgroundPadding = new Rect();
|
||||
|
||||
public BaseRecyclerView(Context context) {
|
||||
this(context, null);
|
||||
@@ -164,21 +162,11 @@ public abstract class BaseRecyclerView extends RecyclerView
|
||||
return false;
|
||||
}
|
||||
|
||||
public void updateBackgroundPadding(Rect padding) {
|
||||
mBackgroundPadding.set(padding);
|
||||
}
|
||||
|
||||
public Rect getBackgroundPadding() {
|
||||
return mBackgroundPadding;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the visible height of the recycler view:
|
||||
* VisibleHeight = View height - top padding - bottom padding
|
||||
* Returns the height of the fast scroll bar
|
||||
*/
|
||||
protected int getVisibleHeight() {
|
||||
int visibleHeight = getHeight() - mBackgroundPadding.top - mBackgroundPadding.bottom;
|
||||
return visibleHeight;
|
||||
protected int getScrollbarTrackHeight() {
|
||||
return getHeight();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -192,7 +180,7 @@ public abstract class BaseRecyclerView extends RecyclerView
|
||||
* AvailableScrollBarHeight = Total height of the visible view - thumb height
|
||||
*/
|
||||
protected int getAvailableScrollBarHeight() {
|
||||
int availableScrollBarHeight = getVisibleHeight() - mScrollbar.getThumbHeight();
|
||||
int availableScrollBarHeight = getScrollbarTrackHeight() - mScrollbar.getThumbHeight();
|
||||
return availableScrollBarHeight;
|
||||
}
|
||||
|
||||
@@ -203,13 +191,6 @@ public abstract class BaseRecyclerView extends RecyclerView
|
||||
return defaultTrackColor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the inactive thumb color, can be overridden by each subclass.
|
||||
*/
|
||||
public int getFastScrollerThumbInactiveColor(int defaultInactiveThumbColor) {
|
||||
return defaultInactiveThumbColor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the scrollbar for this recycler view.
|
||||
*/
|
||||
@@ -234,7 +215,6 @@ public abstract class BaseRecyclerView extends RecyclerView
|
||||
protected void synchronizeScrollBarThumbOffsetToViewScroll(int scrollY,
|
||||
int availableScrollHeight) {
|
||||
// Only show the scrollbar if there is height to be scrolled
|
||||
int availableScrollBarHeight = getAvailableScrollBarHeight();
|
||||
if (availableScrollHeight <= 0) {
|
||||
mScrollbar.setThumbOffsetY(-1);
|
||||
return;
|
||||
@@ -243,8 +223,8 @@ public abstract class BaseRecyclerView extends RecyclerView
|
||||
// Calculate the current scroll position, the scrollY of the recycler view accounts for the
|
||||
// view padding, while the scrollBarY is drawn right up to the background padding (ignoring
|
||||
// padding)
|
||||
int scrollBarY = mBackgroundPadding.top +
|
||||
(int) (((float) scrollY / availableScrollHeight) * availableScrollBarHeight);
|
||||
int scrollBarY =
|
||||
(int) (((float) scrollY / availableScrollHeight) * getAvailableScrollBarHeight());
|
||||
|
||||
// Calculate the position and size of the scroll bar
|
||||
mScrollbar.setThumbOffsetY(scrollBarY);
|
||||
|
||||
@@ -150,7 +150,7 @@ public class BaseRecyclerViewFastScrollBar {
|
||||
}
|
||||
int left = getDrawLeft();
|
||||
// Invalidate the whole scroll bar area.
|
||||
mRv.invalidate(left, 0, left + mMaxWidth, mRv.getVisibleHeight());
|
||||
mRv.invalidate(left, 0, left + mMaxWidth, mRv.getScrollbarTrackHeight());
|
||||
|
||||
mWidth = width;
|
||||
updateThumbPath();
|
||||
@@ -218,11 +218,9 @@ public class BaseRecyclerViewFastScrollBar {
|
||||
}
|
||||
if (mIsDragging) {
|
||||
// Update the fastscroller section name at this touch position
|
||||
int top = mRv.getBackgroundPadding().top;
|
||||
int bottom = top + mRv.getVisibleHeight() - mThumbHeight;
|
||||
float boundedY = (float) Math.max(top, Math.min(bottom, y - mTouchOffsetY));
|
||||
String sectionName = mRv.scrollToPositionAtProgress((boundedY - top) /
|
||||
(bottom - top));
|
||||
int bottom = mRv.getScrollbarTrackHeight() - mThumbHeight;
|
||||
float boundedY = (float) Math.max(0, Math.min(bottom, y - mTouchOffsetY));
|
||||
String sectionName = mRv.scrollToPositionAtProgress(boundedY / bottom);
|
||||
if (!sectionName.equals(mPopupSectionName)) {
|
||||
mPopupSectionName = sectionName;
|
||||
mPopupView.setText(sectionName);
|
||||
@@ -257,7 +255,7 @@ public class BaseRecyclerViewFastScrollBar {
|
||||
}
|
||||
// Draw the track
|
||||
int thumbWidth = mIsRtl ? mWidth : -mWidth;
|
||||
canvas.drawRect(0, 0, thumbWidth, mRv.getVisibleHeight(), mTrackPaint);
|
||||
canvas.drawRect(0, 0, thumbWidth, mRv.getScrollbarTrackHeight(), mTrackPaint);
|
||||
|
||||
canvas.translate(0, mThumbOffsetY);
|
||||
canvas.drawPath(mThumbPath, mThumbPaint);
|
||||
@@ -299,7 +297,7 @@ public class BaseRecyclerViewFastScrollBar {
|
||||
private void updatePopupY(int lastTouchY) {
|
||||
int height = mPopupView.getHeight();
|
||||
float top = lastTouchY - (FAST_SCROLL_OVERLAY_Y_OFFSET_FACTOR * height);
|
||||
top = Math.max(mMaxWidth, Math.min(top, mRv.getVisibleHeight() - mMaxWidth - height));
|
||||
top = Math.max(mMaxWidth, Math.min(top, mRv.getScrollbarTrackHeight() - mMaxWidth - height));
|
||||
mPopupView.setTranslationY(top);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -463,7 +463,6 @@ public class DeviceProfile {
|
||||
public void layout(Launcher launcher, boolean notifyListeners) {
|
||||
FrameLayout.LayoutParams lp;
|
||||
boolean hasVerticalBarLayout = isVerticalBarLayout();
|
||||
final boolean isLayoutRtl = Utilities.isRtl(launcher.getResources());
|
||||
|
||||
// Layout the search bar space
|
||||
Point searchBarBounds = getSearchBarDimensForWidgetOpts();
|
||||
|
||||
@@ -162,27 +162,10 @@ public class AllAppsRecyclerView extends BaseRecyclerView {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* We need to override the draw to ensure that we don't draw the overscroll effect beyond the
|
||||
* background bounds.
|
||||
*/
|
||||
@Override
|
||||
protected void dispatchDraw(Canvas canvas) {
|
||||
// Clip to ensure that we don't draw the overscroll effect beyond the background bounds
|
||||
canvas.clipRect(mBackgroundPadding.left, mBackgroundPadding.top,
|
||||
getWidth() - mBackgroundPadding.right,
|
||||
getHeight() - mBackgroundPadding.bottom);
|
||||
super.dispatchDraw(canvas);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDraw(Canvas c) {
|
||||
// Draw the background
|
||||
if (mEmptySearchBackground != null && mEmptySearchBackground.getAlpha() > 0) {
|
||||
c.clipRect(mBackgroundPadding.left, mBackgroundPadding.top,
|
||||
getWidth() - mBackgroundPadding.right,
|
||||
getHeight() - mBackgroundPadding.bottom);
|
||||
|
||||
mEmptySearchBackground.draw(c);
|
||||
}
|
||||
|
||||
@@ -319,8 +302,8 @@ public class AllAppsRecyclerView extends BaseRecyclerView {
|
||||
// Calculate the current scroll position, the scrollY of the recycler view accounts
|
||||
// for the view padding, while the scrollBarY is drawn right up to the background
|
||||
// padding (ignoring padding)
|
||||
int scrollBarY = mBackgroundPadding.top +
|
||||
(int) (((float) scrollY / availableScrollHeight) * availableScrollBarHeight);
|
||||
int scrollBarY = (int)
|
||||
(((float) scrollY / availableScrollHeight) * availableScrollBarHeight);
|
||||
|
||||
int thumbScrollY = mScrollbar.getThumbOffsetY();
|
||||
int diffScrollY = scrollBarY - thumbScrollY;
|
||||
@@ -411,8 +394,8 @@ public class AllAppsRecyclerView extends BaseRecyclerView {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getVisibleHeight() {
|
||||
return super.getVisibleHeight()
|
||||
protected int getScrollbarTrackHeight() {
|
||||
return super.getScrollbarTrackHeight()
|
||||
- Launcher.getLauncher(getContext()).getDragLayer().getInsets().bottom;
|
||||
}
|
||||
|
||||
@@ -424,7 +407,7 @@ public class AllAppsRecyclerView extends BaseRecyclerView {
|
||||
protected int getAvailableScrollHeight() {
|
||||
int paddedHeight = getCurrentScrollY(mApps.getAdapterItems().size(), 0);
|
||||
int totalHeight = paddedHeight + getPaddingBottom();
|
||||
return totalHeight - getVisibleHeight();
|
||||
return totalHeight - getScrollbarTrackHeight();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package com.android.launcher3.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.util.AttributeSet;
|
||||
@@ -71,18 +70,6 @@ public class WidgetsRecyclerView extends BaseRecyclerView {
|
||||
public void setWidgets(WidgetsModel widgets) {
|
||||
mWidgets = widgets;
|
||||
}
|
||||
|
||||
/**
|
||||
* We need to override the draw to ensure that we don't draw the overscroll effect beyond the
|
||||
* background bounds.
|
||||
*/
|
||||
@Override
|
||||
protected void dispatchDraw(Canvas canvas) {
|
||||
canvas.clipRect(mBackgroundPadding.left, mBackgroundPadding.top,
|
||||
getWidth() - mBackgroundPadding.right,
|
||||
getHeight() - mBackgroundPadding.bottom);
|
||||
super.dispatchDraw(canvas);
|
||||
}
|
||||
|
||||
/**
|
||||
* Maps the touch (from 0..1) to the adapter position that should be visible.
|
||||
@@ -152,7 +139,7 @@ public class WidgetsRecyclerView extends BaseRecyclerView {
|
||||
View child = getChildAt(0);
|
||||
int height = child.getMeasuredHeight() * mWidgets.getPackageSize();
|
||||
int totalHeight = getPaddingTop() + height + getPaddingBottom();
|
||||
int availableScrollHeight = totalHeight - getVisibleHeight();
|
||||
int availableScrollHeight = totalHeight - getScrollbarTrackHeight();
|
||||
return availableScrollHeight;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user