Floating button will now dissapaer when scroll down and appear when scroll up

This commit is contained in:
Denis 2014-12-18 14:26:09 +02:00
parent 14eb1955a8
commit 73e42558e3
2 changed files with 35 additions and 1 deletions

View file

@ -2,6 +2,7 @@
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:id="@+id/main_scroll"
android:background="@color/dashboard_background" > android:background="@color/dashboard_background" >
<LinearLayout <LinearLayout

View file

@ -9,6 +9,8 @@ import java.util.Random;
import android.graphics.Color; import android.graphics.Color;
import android.os.Build; import android.os.Build;
import android.view.Gravity; import android.view.Gravity;
import android.view.ViewTreeObserver;
import android.widget.LinearLayout;
import net.osmand.Location; import net.osmand.Location;
import net.osmand.access.AccessibleAlertBuilder; import net.osmand.access.AccessibleAlertBuilder;
import net.osmand.plus.OsmAndAppCustomization; import net.osmand.plus.OsmAndAppCustomization;
@ -113,7 +115,7 @@ public class MainMenuActivity extends BaseDownloadActivity implements OsmAndLoca
setupContributionVersion(); setupContributionVersion();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
FloatingActionButton fabButton = new FloatingActionButton.Builder(this) final FloatingActionButton fabButton = new FloatingActionButton.Builder(this)
.withDrawable(getResources().getDrawable(R.drawable.ic_action_map)) .withDrawable(getResources().getDrawable(R.drawable.ic_action_map))
.withButtonColor(Color.parseColor("#ff8f00")) .withButtonColor(Color.parseColor("#ff8f00"))
.withGravity(Gravity.BOTTOM | Gravity.RIGHT) .withGravity(Gravity.BOTTOM | Gravity.RIGHT)
@ -125,6 +127,37 @@ public class MainMenuActivity extends BaseDownloadActivity implements OsmAndLoca
startMapActivity(); startMapActivity();
} }
}); });
final ScrollView mainScroll = (ScrollView) findViewById(R.id.main_scroll);
if (mainScroll == null){
return;
}
mainScroll.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
private int previousScroll = 0;
@Override
public void onScrollChanged() {
int scrollY = mainScroll.getScrollY();
if (previousScroll == scrollY){
return;
}
if (scrollY > previousScroll && previousScroll >= 0){
if (!fabButton.isHidden() ){
fabButton.hideFloatingActionButton();
}
} else {
int layoutHeight = mainScroll.getChildAt(0).getMeasuredHeight();
int scrollHeight = scrollY + mainScroll.getHeight();
//scroll can actually be more than entire layout height
if (fabButton.isHidden() && scrollHeight < layoutHeight){
fabButton.showFloatingActionButton();
}
}
previousScroll = scrollY;
}
});
} }
} }