Updated dashboard on map view
This commit is contained in:
parent
ba81c700bd
commit
a3838eab74
9 changed files with 77 additions and 15 deletions
|
@ -10,6 +10,7 @@
|
|||
|
||||
<LinearLayout android:orientation="vertical"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<net.osmand.plus.dashboard.NotifyingScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
|
|
|
@ -33,12 +33,21 @@
|
|||
android:contentDescription="@string/map_view"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<FrameLayout android:id="@+id/MapInfoControls"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/dialog_layout"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:orientation="horizontal"/>
|
||||
|
||||
|
||||
<FrameLayout android:id="@+id/MapButtons"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
</FrameLayout>
|
||||
|
||||
<ListView
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<dimen name="dashboard_map_top_padding">0dp</dimen>
|
||||
<dimen name="dashboard_map_top_padding">100dp</dimen>
|
||||
<dimen name="dashboard_map_bottom_padding">0dp</dimen>
|
||||
</resources>
|
|
@ -303,6 +303,9 @@ public class MapActivity extends AccessibleActivity {
|
|||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if (dashboardOnMap.isVisible()){
|
||||
dashboardOnMap.setDashboardVisibility(false);
|
||||
}
|
||||
if (!mapActions.onBackPressed()) {
|
||||
super.onBackPressed();
|
||||
}
|
||||
|
@ -843,4 +846,7 @@ public class MapActivity extends AccessibleActivity {
|
|||
}
|
||||
|
||||
|
||||
public DashboardOnMap getDashboard() {
|
||||
return dashboardOnMap;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -703,7 +703,7 @@ public class MapActivityActions implements DialogProvider {
|
|||
// Intent newIntent = new Intent(mapActivity, mapActivity.getMyApplication().getAppCustomization().getMainMenuActivity());
|
||||
// newIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
// mapActivity.startActivity(newIntent);
|
||||
mapActivity.setDashboardVisibility(true);
|
||||
mapActivity.getDashboard().setDashboardVisibility(true);
|
||||
return true;
|
||||
}
|
||||
}).reg();
|
||||
|
@ -949,6 +949,14 @@ public class MapActivityActions implements DialogProvider {
|
|||
listAdapter, null));
|
||||
}
|
||||
|
||||
public void disableDrawer(){
|
||||
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
|
||||
}
|
||||
|
||||
public void enableDrawer(){
|
||||
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
|
||||
}
|
||||
|
||||
public void openIntermediatePointsDialog(){
|
||||
waypointDialogHelper.showWaypointsDialog(mapActivity, false);
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ import android.util.TypedValue;
|
|||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.animation.TranslateAnimation;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ScrollView;
|
||||
|
||||
|
@ -20,7 +21,8 @@ import net.osmand.plus.monitoring.DashTrackFragment;
|
|||
import net.osmand.plus.views.controls.FloatingActionButton;
|
||||
|
||||
/**
|
||||
* Created by dummy on 03.03.15.
|
||||
* Created by Denis
|
||||
* on 03.03.15.
|
||||
*/
|
||||
public class DashboardOnMap {
|
||||
|
||||
|
@ -29,6 +31,7 @@ public class DashboardOnMap {
|
|||
FloatingActionButton fabButton;
|
||||
boolean floatingButtonVisible = false;
|
||||
private FrameLayout dashboardView;
|
||||
private boolean visible = false;
|
||||
|
||||
|
||||
public DashboardOnMap(MapActivity ma) {
|
||||
|
@ -74,23 +77,49 @@ public class DashboardOnMap {
|
|||
|
||||
|
||||
public void setDashboardVisibility(boolean visible) {
|
||||
this.visible = visible;
|
||||
if (visible) {
|
||||
addDashboardFragments();
|
||||
dashboardView.setVisibility(View.VISIBLE);
|
||||
if (floatingButtonVisible) {
|
||||
fabButton.showFloatingActionButton();
|
||||
}
|
||||
open(dashboardView.findViewById(R.id.content));
|
||||
ma.getMapActions().disableDrawer();
|
||||
//View close = dashboardView.findViewById(R.id.close_dashboard);
|
||||
if (ScreenOrientationHelper.isOrientationPortrait(ma)) {
|
||||
//close.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
//close.setVisibility(View.GONE);
|
||||
}
|
||||
ma.findViewById(R.id.MapInfoControls).setVisibility(View.GONE);
|
||||
ma.findViewById(R.id.MapButtons).setVisibility(View.GONE);
|
||||
} else {
|
||||
ma.findViewById(R.id.dashboard).setVisibility(View.GONE);
|
||||
ma.getMapActions().enableDrawer();
|
||||
dashboardView.setVisibility(View.GONE);
|
||||
hide(dashboardView.findViewById(R.id.content));
|
||||
ma.findViewById(R.id.MapInfoControls).setVisibility(View.VISIBLE);
|
||||
ma.findViewById(R.id.MapButtons).setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
// To animate view slide out from right to left
|
||||
public void open(View view){
|
||||
TranslateAnimation animate = new TranslateAnimation(0,0,ma.getMapView().getHeight(),0);
|
||||
animate.setDuration(500);
|
||||
animate.setFillAfter(true);
|
||||
view.startAnimation(animate);
|
||||
view.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
public void hide(View view){
|
||||
TranslateAnimation animate = new TranslateAnimation(0,0,0,ma.getMapView().getHeight());
|
||||
animate.setDuration(500);
|
||||
animate.setFillAfter(true);
|
||||
view.startAnimation(animate);
|
||||
view.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
private void addDashboardFragments(){
|
||||
FragmentManager manager =ma. getSupportFragmentManager();
|
||||
FragmentTransaction fragmentTransaction = manager.beginTransaction();
|
||||
|
@ -159,4 +188,7 @@ public class DashboardOnMap {
|
|||
}
|
||||
};
|
||||
|
||||
public boolean isVisible() {
|
||||
return visible;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -81,7 +81,7 @@ public class MapControlsLayer extends OsmandMapLayer {
|
|||
@Override
|
||||
public void initLayer(final OsmandMapTileView view) {
|
||||
scaleCoefficient = view.getScaleCoefficient();
|
||||
FrameLayout parent = (FrameLayout) view.getParent();
|
||||
FrameLayout parent = getParent();
|
||||
Handler showUIHandler = new Handler();
|
||||
int rightGravity = Gravity.RIGHT | Gravity.BOTTOM;
|
||||
int leftGravity = Gravity.LEFT | Gravity.BOTTOM;
|
||||
|
@ -208,19 +208,23 @@ public class MapControlsLayer extends OsmandMapLayer {
|
|||
RotatedTileBox tileBox, DrawSettings nightMode) {
|
||||
if(visibility != controls.isVisible() ){
|
||||
if(visibility) {
|
||||
controls.show((FrameLayout) mapActivity.getMapView().getParent());
|
||||
controls.show(getParent());
|
||||
} else {
|
||||
controls.hide((FrameLayout) mapActivity.getMapView().getParent());
|
||||
controls.hide(getParent());
|
||||
}
|
||||
}
|
||||
if(controls.isVisible()) {
|
||||
controls.onDraw(canvas, tileBox, nightMode);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private FrameLayout getParent() {
|
||||
return (FrameLayout) mapActivity.findViewById(R.id.MapButtons);
|
||||
}
|
||||
|
||||
private void forceHideView(MapControls controls) {
|
||||
if (controls.isVisible()) {
|
||||
controls.forceHide((FrameLayout) mapActivity.getMapView().getParent());
|
||||
controls.forceHide(getParent());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -239,10 +243,10 @@ public class MapControlsLayer extends OsmandMapLayer {
|
|||
public boolean onTouchEvent(MotionEvent event, RotatedTileBox tileBox) {
|
||||
if(!mapActivity.getRoutingHelper().isRoutePlanningMode() && mapActivity.getRoutingHelper().isFollowingMode()) {
|
||||
if(!settings.SHOW_ZOOM_BUTTONS_NAVIGATION.get()) {
|
||||
zoomControls.showWithDelay((FrameLayout) mapActivity.getMapView().getParent(), TIMEOUT_TO_SHOW_BUTTONS);
|
||||
mapMenuControls.showWithDelay((FrameLayout) mapActivity.getMapView().getParent(), TIMEOUT_TO_SHOW_BUTTONS);
|
||||
zoomControls.showWithDelay(getParent(), TIMEOUT_TO_SHOW_BUTTONS);
|
||||
mapMenuControls.showWithDelay(getParent(), TIMEOUT_TO_SHOW_BUTTONS);
|
||||
}
|
||||
mapRoutePlanControl.showWithDelay((FrameLayout) mapActivity.getMapView().getParent(), TIMEOUT_TO_SHOW_BUTTONS);
|
||||
mapRoutePlanControl.showWithDelay(getParent(), TIMEOUT_TO_SHOW_BUTTONS);
|
||||
}
|
||||
for(MapControls m : allControls) {
|
||||
if(m.isVisible() && m.onTouchEvent(event, tileBox)){
|
||||
|
@ -318,7 +322,7 @@ public class MapControlsLayer extends OsmandMapLayer {
|
|||
}
|
||||
|
||||
public void shiftLayout(int height) {
|
||||
FrameLayout parent = (FrameLayout) mapActivity.getMapView().getParent();
|
||||
FrameLayout parent = getParent();
|
||||
parent.requestLayout();
|
||||
for(MapControls mc : allControls) {
|
||||
if(mc.isBottom()){
|
||||
|
|
|
@ -220,6 +220,7 @@ public class MapInfoLayer extends OsmandMapLayer {
|
|||
}
|
||||
|
||||
public void createControls() {
|
||||
FrameLayout parent = (FrameLayout) ((FrameLayout) view.getParent()).findViewById(R.id.MapInfoControls);
|
||||
// 1. Create view groups and controls
|
||||
statusBar.setBackgroundDrawable(view.getResources().getDrawable(R.drawable.box_top));
|
||||
|
||||
|
@ -239,7 +240,7 @@ public class MapInfoLayer extends OsmandMapLayer {
|
|||
Rect statusBarPadding = new Rect();
|
||||
statusBar.getBackground().getPadding(statusBarPadding);
|
||||
// 3. put into frame parent layout controls
|
||||
FrameLayout parent = (FrameLayout) view.getParent();
|
||||
|
||||
// status bar hides own top part
|
||||
int topMargin = statusBar.getMeasuredHeight() - statusBarPadding.top - statusBarPadding.bottom ;
|
||||
// we want that status bar lays over map stack controls
|
||||
|
|
|
@ -65,7 +65,8 @@ public abstract class MapControls {
|
|||
protected Button addButton(FrameLayout parent, int stringId, int resourceId) {
|
||||
return addButton(parent, stringId, resourceId, 0);
|
||||
}
|
||||
protected Button addButton(FrameLayout parent, int stringId, int resourceId, int extraMargin) {
|
||||
|
||||
protected Button addButton(FrameLayout parent, int stringId, int resourceId, int extraMargin) {
|
||||
Context ctx = mapActivity;
|
||||
Button button = new Button(ctx);
|
||||
applyAttributes(ctx, parent, button, stringId, resourceId, extraMargin);
|
||||
|
|
Loading…
Reference in a new issue