Set preloading for the WidgetTray recycler view.

b/20339302

Introduced a constant that we can use to tweak how much extra screen
space worth of widgets are preloaded.

Change-Id: I47f0fec134b4e268140482694a1903cf902731c6
This commit is contained in:
Hyunyoung Song
2015-05-01 14:21:57 -07:00
parent 111c83579a
commit e809332032

View File

@@ -24,6 +24,7 @@ import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.State;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
@@ -62,6 +63,9 @@ public class WidgetsContainerView extends FrameLayout implements Insettable,
private static final int SPRING_MODE_DELAY_MS = 150;
/* Coefficient multiplied to the screen height for preloading widgets. */
private static final int PRELOAD_SCREEN_HEIGHT_MULTIPLE = 1;
/* Global instances that are used inside this container. */
private Launcher mLauncher;
private DragController mDragController;
@@ -114,8 +118,15 @@ public class WidgetsContainerView extends FrameLayout implements Insettable,
}
mView = (RecyclerView) findViewById(R.id.widgets_list_view);
mView.setAdapter(mAdapter);
mView.setLayoutManager(new LinearLayoutManager(getContext()));
// This extends the layout space so that preloading happen for the {@link RecyclerView}
mView.setLayoutManager(new LinearLayoutManager(getContext()) {
@Override
protected int getExtraLayoutSpace(State state) {
return super.getExtraLayoutSpace(state)
+ WidgetsContainerView.this.getHeight() * PRELOAD_SCREEN_HEIGHT_MULTIPLE;
}
});
mPadding.set(getPaddingLeft(), getPaddingTop(), getPaddingRight(),
getPaddingBottom());
}