Merge "Exposing some private methods to easily customize widgets popup" into ub-launcher3-master
This commit is contained in:
commit
9331521b7d
|
@ -157,7 +157,7 @@ public class NotificationFooterLayout extends FrameLayout {
|
||||||
Rect fromBounds = sTempRect;
|
Rect fromBounds = sTempRect;
|
||||||
firstNotification.getGlobalVisibleRect(fromBounds);
|
firstNotification.getGlobalVisibleRect(fromBounds);
|
||||||
float scale = (float) toBounds.height() / fromBounds.height();
|
float scale = (float) toBounds.height() / fromBounds.height();
|
||||||
Animator moveAndScaleIcon = LauncherAnimUtils.ofPropertyValuesHolder(firstNotification,
|
Animator moveAndScaleIcon = ObjectAnimator.ofPropertyValuesHolder(firstNotification,
|
||||||
new PropertyListBuilder().scale(scale).translationY(toBounds.top - fromBounds.top
|
new PropertyListBuilder().scale(scale).translationY(toBounds.top - fromBounds.top
|
||||||
+ (fromBounds.height() * scale - fromBounds.height()) / 2).build());
|
+ (fromBounds.height() * scale - fromBounds.height()) / 2).build());
|
||||||
moveAndScaleIcon.addListener(new AnimatorListenerAdapter() {
|
moveAndScaleIcon.addListener(new AnimatorListenerAdapter() {
|
||||||
|
|
|
@ -84,7 +84,7 @@ public class PopupContainerWithArrow extends ArrowPopup implements DragSource,
|
||||||
|
|
||||||
private final List<DeepShortcutView> mShortcuts = new ArrayList<>();
|
private final List<DeepShortcutView> mShortcuts = new ArrayList<>();
|
||||||
private final PointF mInterceptTouchDown = new PointF();
|
private final PointF mInterceptTouchDown = new PointF();
|
||||||
private final Point mIconLastTouchPos = new Point();
|
protected final Point mIconLastTouchPos = new Point();
|
||||||
|
|
||||||
private final int mStartDragThreshold;
|
private final int mStartDragThreshold;
|
||||||
private final LauncherAccessibilityDelegate mAccessibilityDelegate;
|
private final LauncherAccessibilityDelegate mAccessibilityDelegate;
|
||||||
|
|
|
@ -141,4 +141,8 @@ public class DeepShortcutView extends FrameLayout {
|
||||||
public View getIconView() {
|
public View getIconView() {
|
||||||
return mIconView;
|
return mIconView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ShortcutInfoCompat getDetail() {
|
||||||
|
return mDetail;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,6 @@ import android.view.animation.Interpolator;
|
||||||
|
|
||||||
import com.android.launcher3.AbstractFloatingView;
|
import com.android.launcher3.AbstractFloatingView;
|
||||||
import com.android.launcher3.Launcher;
|
import com.android.launcher3.Launcher;
|
||||||
import com.android.launcher3.LauncherAnimUtils;
|
|
||||||
import com.android.launcher3.Utilities;
|
import com.android.launcher3.Utilities;
|
||||||
import com.android.launcher3.anim.Interpolators;
|
import com.android.launcher3.anim.Interpolators;
|
||||||
import com.android.launcher3.touch.SwipeDetector;
|
import com.android.launcher3.touch.SwipeDetector;
|
||||||
|
@ -76,7 +75,7 @@ public abstract class AbstractSlideInView extends AbstractFloatingView
|
||||||
mScrollInterpolator = Interpolators.SCROLL_CUBIC;
|
mScrollInterpolator = Interpolators.SCROLL_CUBIC;
|
||||||
mSwipeDetector = new SwipeDetector(context, this, SwipeDetector.VERTICAL);
|
mSwipeDetector = new SwipeDetector(context, this, SwipeDetector.VERTICAL);
|
||||||
|
|
||||||
mOpenCloseAnimator = LauncherAnimUtils.ofPropertyValuesHolder(this);
|
mOpenCloseAnimator = ObjectAnimator.ofPropertyValuesHolder(this);
|
||||||
mOpenCloseAnimator.addListener(new AnimatorListenerAdapter() {
|
mOpenCloseAnimator.addListener(new AnimatorListenerAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void onAnimationEnd(Animator animation) {
|
public void onAnimationEnd(Animator animation) {
|
||||||
|
@ -103,7 +102,7 @@ public abstract class AbstractSlideInView extends AbstractFloatingView
|
||||||
directionsToDetectScroll, false);
|
directionsToDetectScroll, false);
|
||||||
mSwipeDetector.onTouchEvent(ev);
|
mSwipeDetector.onTouchEvent(ev);
|
||||||
return mSwipeDetector.isDraggingOrSettling()
|
return mSwipeDetector.isDraggingOrSettling()
|
||||||
|| !mLauncher.getDragLayer().isEventOverView(mContent, ev);
|
|| !getPopupContainer().isEventOverView(mContent, ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -111,7 +110,7 @@ public abstract class AbstractSlideInView extends AbstractFloatingView
|
||||||
mSwipeDetector.onTouchEvent(ev);
|
mSwipeDetector.onTouchEvent(ev);
|
||||||
if (ev.getAction() == MotionEvent.ACTION_UP && mSwipeDetector.isIdleState()) {
|
if (ev.getAction() == MotionEvent.ACTION_UP && mSwipeDetector.isIdleState()) {
|
||||||
// If we got ACTION_UP without ever starting swipe, close the panel.
|
// If we got ACTION_UP without ever starting swipe, close the panel.
|
||||||
if (!mLauncher.getDragLayer().isEventOverView(mContent, ev)) {
|
if (!getPopupContainer().isEventOverView(mContent, ev)) {
|
||||||
close(true);
|
close(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -178,6 +177,10 @@ public abstract class AbstractSlideInView extends AbstractFloatingView
|
||||||
|
|
||||||
protected void onCloseComplete() {
|
protected void onCloseComplete() {
|
||||||
mIsOpen = false;
|
mIsOpen = false;
|
||||||
mLauncher.getDragLayer().removeView(this);
|
getPopupContainer().removeView(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected BaseDragLayer getPopupContainer() {
|
||||||
|
return mLauncher.getDragLayer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,7 +71,7 @@ abstract class BaseWidgetSheet extends AbstractSlideInView
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean onLongClick(View v) {
|
public boolean onLongClick(View v) {
|
||||||
if (!ItemLongClickListener.canStartDrag(mLauncher)) return false;
|
if (!ItemLongClickListener.canStartDrag(mLauncher)) return false;
|
||||||
|
|
||||||
if (v instanceof WidgetCell) {
|
if (v instanceof WidgetCell) {
|
||||||
|
@ -96,7 +96,7 @@ abstract class BaseWidgetSheet extends AbstractSlideInView
|
||||||
}
|
}
|
||||||
|
|
||||||
int[] loc = new int[2];
|
int[] loc = new int[2];
|
||||||
mLauncher.getDragLayer().getLocationInDragLayer(image, loc);
|
getPopupContainer().getLocationInDragLayer(image, loc);
|
||||||
|
|
||||||
new PendingItemDragHelper(v).startDrag(
|
new PendingItemDragHelper(v).startDrag(
|
||||||
image.getBitmapBounds(), image.getBitmap().getWidth(), image.getWidth(),
|
image.getBitmapBounds(), image.getBitmap().getWidth(), image.getWidth(),
|
||||||
|
@ -119,13 +119,13 @@ abstract class BaseWidgetSheet extends AbstractSlideInView
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void clearNavBarColor() {
|
protected void clearNavBarColor() {
|
||||||
mLauncher.getSystemUiController().updateUiState(
|
getSystemUiController().updateUiState(
|
||||||
SystemUiController.UI_STATE_WIDGET_BOTTOM_SHEET, 0);
|
SystemUiController.UI_STATE_WIDGET_BOTTOM_SHEET, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setupNavBarColor() {
|
protected void setupNavBarColor() {
|
||||||
boolean isSheetDark = Themes.getAttrBoolean(mLauncher, R.attr.isMainColorDark);
|
boolean isSheetDark = Themes.getAttrBoolean(getContext(), R.attr.isMainColorDark);
|
||||||
mLauncher.getSystemUiController().updateUiState(
|
getSystemUiController().updateUiState(
|
||||||
SystemUiController.UI_STATE_WIDGET_BOTTOM_SHEET,
|
SystemUiController.UI_STATE_WIDGET_BOTTOM_SHEET,
|
||||||
isSheetDark ? SystemUiController.FLAG_DARK_NAV : SystemUiController.FLAG_LIGHT_NAV);
|
isSheetDark ? SystemUiController.FLAG_DARK_NAV : SystemUiController.FLAG_LIGHT_NAV);
|
||||||
}
|
}
|
||||||
|
@ -145,4 +145,7 @@ abstract class BaseWidgetSheet extends AbstractSlideInView
|
||||||
|
|
||||||
protected abstract int getElementsRowCount();
|
protected abstract int getElementsRowCount();
|
||||||
|
|
||||||
|
protected SystemUiController getSystemUiController() {
|
||||||
|
return mLauncher.getSystemUiController();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,7 +71,7 @@ public class WidgetsBottomSheet extends BaseWidgetSheet implements Insettable {
|
||||||
|
|
||||||
onWidgetsBound();
|
onWidgetsBound();
|
||||||
|
|
||||||
mLauncher.getDragLayer().addView(this);
|
getPopupContainer().addView(this);
|
||||||
mIsOpen = false;
|
mIsOpen = false;
|
||||||
animateOpen();
|
animateOpen();
|
||||||
}
|
}
|
||||||
|
@ -118,7 +118,7 @@ public class WidgetsBottomSheet extends BaseWidgetSheet implements Insettable {
|
||||||
LayoutInflater.from(getContext()).inflate(R.layout.widget_list_divider, parent, true);
|
LayoutInflater.from(getContext()).inflate(R.layout.widget_list_divider, parent, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private WidgetCell addItemCell(ViewGroup parent) {
|
protected WidgetCell addItemCell(ViewGroup parent) {
|
||||||
WidgetCell widget = (WidgetCell) LayoutInflater.from(getContext()).inflate(
|
WidgetCell widget = (WidgetCell) LayoutInflater.from(getContext()).inflate(
|
||||||
R.layout.widget_cell, parent, false);
|
R.layout.widget_cell, parent, false);
|
||||||
|
|
||||||
|
|
|
@ -160,7 +160,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet
|
||||||
|
|
||||||
private void open(boolean animate) {
|
private void open(boolean animate) {
|
||||||
if (animate) {
|
if (animate) {
|
||||||
if (mLauncher.getDragLayer().getInsets().bottom > 0) {
|
if (getPopupContainer().getInsets().bottom > 0) {
|
||||||
mContent.setAlpha(0);
|
mContent.setAlpha(0);
|
||||||
setTranslationShift(VERTICAL_START_POSITION);
|
setTranslationShift(VERTICAL_START_POSITION);
|
||||||
}
|
}
|
||||||
|
@ -207,10 +207,10 @@ public class WidgetsFullSheet extends BaseWidgetSheet
|
||||||
mNoIntercept = false;
|
mNoIntercept = false;
|
||||||
RecyclerViewFastScroller scroller = mRecyclerView.getScrollbar();
|
RecyclerViewFastScroller scroller = mRecyclerView.getScrollbar();
|
||||||
if (scroller.getThumbOffsetY() >= 0 &&
|
if (scroller.getThumbOffsetY() >= 0 &&
|
||||||
mLauncher.getDragLayer().isEventOverView(scroller, ev)) {
|
getPopupContainer().isEventOverView(scroller, ev)) {
|
||||||
mNoIntercept = true;
|
mNoIntercept = true;
|
||||||
} else if (mLauncher.getDragLayer().isEventOverView(mContent, ev)) {
|
} else if (getPopupContainer().isEventOverView(mContent, ev)) {
|
||||||
mNoIntercept = !mRecyclerView.shouldContainerScroll(ev, mLauncher.getDragLayer());
|
mNoIntercept = !mRecyclerView.shouldContainerScroll(ev, getPopupContainer());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return super.onControllerInterceptTouchEvent(ev);
|
return super.onControllerInterceptTouchEvent(ev);
|
||||||
|
@ -220,7 +220,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet
|
||||||
WidgetsFullSheet sheet = (WidgetsFullSheet) launcher.getLayoutInflater()
|
WidgetsFullSheet sheet = (WidgetsFullSheet) launcher.getLayoutInflater()
|
||||||
.inflate(R.layout.widgets_full_sheet, launcher.getDragLayer(), false);
|
.inflate(R.layout.widgets_full_sheet, launcher.getDragLayer(), false);
|
||||||
sheet.mIsOpen = true;
|
sheet.mIsOpen = true;
|
||||||
launcher.getDragLayer().addView(sheet);
|
sheet.getPopupContainer().addView(sheet);
|
||||||
sheet.open(animate);
|
sheet.open(animate);
|
||||||
return sheet;
|
return sheet;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue