Skip to content
This repository was archived by the owner on Feb 9, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 18 additions & 3 deletions hover/src/main/java/io/mattcarroll/hover/FloatingTab.java
Original file line number Diff line number Diff line change
Expand Up @@ -75,14 +75,16 @@ public FloatingTab(@NonNull Context context, @NonNull String tabId) {
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
updateSize();
addOnLayoutChangeListener(mOnLayoutChangeListener);
}

private void updateSize() {
// Make this View the desired size.
ViewGroup.LayoutParams layoutParams = getLayoutParams();
final ViewGroup.LayoutParams layoutParams = getLayoutParams();
layoutParams.width = mTabSize;
layoutParams.height = mTabSize;
setLayoutParams(layoutParams);

addOnLayoutChangeListener(mOnLayoutChangeListener);
}

@Override
Expand Down Expand Up @@ -169,6 +171,19 @@ public void disappearImmediate() {
setVisibility(GONE);
}

public void shrink() {
mTabSize = getResources().getDimensionPixelSize(R.dimen.hover_tab_size_shrunk);
updateSize();
setPadding(0, 0, 0, 0);
}

public void expand() {
mTabSize = getResources().getDimensionPixelSize(R.dimen.hover_tab_size);
updateSize();
int padding = getResources().getDimensionPixelSize(R.dimen.hover_tab_margin);
setPadding(padding, padding, padding, padding);
}

@NonNull
public String getTabId() {
return mId;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,6 @@ public void takeControl(@NonNull HoverView hoverView, final Runnable onStateChan
Log.d(TAG, "Taking control.");
mHoverView.makeUntouchableInWindow();
mHoverView.clearFocus();
final int pointMargin = hoverView.getContext().getResources().getDimensionPixelSize(R.dimen.hover_tab_anchor_margin);
final Point anchorPoint = new Point(
mHoverView.mScreen.getWidth() - pointMargin,
mHoverView.mScreen.getHeight() - pointMargin
);

mSelectedSection = mHoverView.mMenu.getSection(mHoverView.mSelectedSectionId);
if (mSelectedSection == null) {
Expand All @@ -42,6 +37,14 @@ public void takeControl(@NonNull HoverView hoverView, final Runnable onStateChan
if (mSelectedTab == null) {
mSelectedTab = mHoverView.mScreen.createChainedTab(mSelectedSection);
}

mSelectedTab.shrink();
mSelectedTab.setSelected(true);
final int anchorMargin = hoverView.getContext().getResources().getDimensionPixelSize(R.dimen.hover_tab_anchor_margin) + (mSelectedTab.getTabSize() / 2);
final Point anchorPoint = new Point(
mHoverView.mScreen.getWidth() - anchorMargin,
mHoverView.mScreen.getHeight() - anchorMargin
);
mSelectedTab.setDock(new PositionDock(anchorPoint));
mSelectedTab.dock(new Runnable() {
@Override
Expand All @@ -59,6 +62,8 @@ public void run() {
public void giveUpControl(@NonNull HoverViewState nextState) {
Log.d(TAG, "Giving up control.");
deactivateTouchController();
mSelectedTab.expand();
mSelectedTab.setSelected(false);
super.giveUpControl(nextState);
}

Expand Down
3 changes: 2 additions & 1 deletion hover/src/main/res/values/dimens.xml
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
<resources>
<dimen name="hover_tab_size">72dp</dimen>
<dimen name="hover_tab_size_shrunk">48dp</dimen>
<dimen name="hover_tab_anchor_margin">12dp</dimen>
<dimen name="hover_tab_margin">8dp</dimen>
<dimen name="hover_navigator_corner_radius">7dp</dimen>
<dimen name="hover_exit_icon_size">40dp</dimen>
<dimen name="hover_exit_radius">75dp</dimen>
<dimen name="hover_message_animate_translation_x">32dp</dimen>
<dimen name="hover_message_animate_translation_y">24dp</dimen>
<dimen name="hover_tab_anchor_margin">32dp</dimen>
</resources>