Merge pull request #4797 from osmandapp/improve_options_menu

Blur status bar with opened options menu
This commit is contained in:
Pavel Ratushnyi 2017-11-23 16:32:50 +02:00 committed by GitHub
commit 0d89116dd8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 252 additions and 200 deletions

View file

@ -61,7 +61,7 @@
<FrameLayout <FrameLayout
android:id="@+id/menu_container" android:id="@+id/menu_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:layout_gravity="bottom|center_horizontal"/> android:layout_gravity="bottom|center_horizontal"/>
</FrameLayout> </FrameLayout>

View file

@ -1,218 +1,227 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:osmand="http://schemas.android.com/apk/res-auto" xmlns:osmand="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:background="?attr/bg_color" android:background="@color/status_bar_transparent_light">
android:orientation="vertical">
<ScrollView <LinearLayout
android:id="@+id/marker_options_scroll_view" android:id="@+id/main_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:background="?attr/bg_color"
android:orientation="vertical">
<LinearLayout <ScrollView
android:id="@+id/marker_options_scroll_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content">
android:orientation="vertical"
android:paddingBottom="@dimen/bottom_sheet_content_padding_small">
<net.osmand.plus.widgets.TextViewEx
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_sheet_title_height"
android:gravity="center_vertical"
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding"
android:text="@string/shared_string_options"
android:textAppearance="@style/TextAppearance.ListItemTitle"
osmand:typeface="@string/font_roboto_medium"/>
<LinearLayout <LinearLayout
android:id="@+id/sort_by_row"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/bottom_sheet_list_item_height" android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground" android:orientation="vertical"
android:minHeight="@dimen/bottom_sheet_list_item_height" android:paddingBottom="@dimen/bottom_sheet_content_padding_small">
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding">
<ImageView <net.osmand.plus.widgets.TextViewEx
android:id="@+id/sort_by_icon" android:layout_width="match_parent"
android:layout_width="@dimen/standard_icon_size" android:layout_height="@dimen/bottom_sheet_title_height"
android:layout_height="@dimen/standard_icon_size" android:gravity="center_vertical"
android:layout_gravity="center_vertical" android:paddingLeft="@dimen/content_padding"
android:layout_marginEnd="@dimen/bottom_sheet_icon_margin" android:paddingRight="@dimen/content_padding"
android:layout_marginRight="@dimen/bottom_sheet_icon_margin" android:text="@string/shared_string_options"
tools:src="@drawable/ic_sort_waypoint_dark"/> android:textAppearance="@style/TextAppearance.ListItemTitle"
osmand:typeface="@string/font_roboto_medium"/>
<TextView <LinearLayout
android:id="@+id/sort_by_row"
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_sheet_list_item_height"
android:background="?attr/selectableItemBackground"
android:minHeight="@dimen/bottom_sheet_list_item_height"
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding">
<ImageView
android:id="@+id/sort_by_icon"
android:layout_width="@dimen/standard_icon_size"
android:layout_height="@dimen/standard_icon_size"
android:layout_gravity="center_vertical"
android:layout_marginEnd="@dimen/bottom_sheet_icon_margin"
android:layout_marginRight="@dimen/bottom_sheet_icon_margin"
tools:src="@drawable/ic_sort_waypoint_dark"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:maxLines="1"
android:text="@string/sort_by"
android:textAppearance="@style/TextAppearance.ListItemTitle"/>
</LinearLayout>
<View
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="1dp"
android:layout_gravity="center_vertical" android:layout_marginBottom="@dimen/bottom_sheet_divider_margin_bottom"
android:maxLines="1" android:layout_marginLeft="@dimen/bottom_sheet_divider_margin_start"
android:text="@string/sort_by" android:layout_marginStart="@dimen/bottom_sheet_divider_margin_start"
android:textAppearance="@style/TextAppearance.ListItemTitle"/> android:layout_marginTop="@dimen/bottom_sheet_divider_margin_top"
</LinearLayout> android:background="?attr/dashboard_divider"/>
<View <LinearLayout
android:layout_width="wrap_content" android:id="@+id/show_direction_row"
android:layout_height="1dp" android:layout_width="match_parent"
android:layout_marginBottom="@dimen/bottom_sheet_divider_margin_bottom" android:layout_height="@dimen/bottom_sheet_list_item_height"
android:layout_marginLeft="@dimen/bottom_sheet_divider_margin_start" android:background="?attr/selectableItemBackground"
android:layout_marginStart="@dimen/bottom_sheet_divider_margin_start" android:minHeight="@dimen/bottom_sheet_list_item_height"
android:layout_marginTop="@dimen/bottom_sheet_divider_margin_top" android:paddingLeft="@dimen/content_padding"
android:background="?attr/dashboard_divider"/> android:paddingRight="@dimen/content_padding">
<LinearLayout <ImageView
android:id="@+id/show_direction_row" android:id="@+id/show_direction_icon"
android:layout_width="match_parent" android:layout_width="@dimen/standard_icon_size"
android:layout_height="@dimen/bottom_sheet_list_item_height" android:layout_height="@dimen/standard_icon_size"
android:background="?attr/selectableItemBackground" android:layout_gravity="center_vertical"
android:minHeight="@dimen/bottom_sheet_list_item_height" android:layout_marginEnd="@dimen/bottom_sheet_icon_margin"
android:paddingLeft="@dimen/content_padding" android:layout_marginRight="@dimen/bottom_sheet_icon_margin"
android:paddingRight="@dimen/content_padding"> tools:background="@drawable/ic_action_device_top"/>
<ImageView <TextView
android:id="@+id/show_direction_icon" android:layout_width="0dp"
android:layout_width="@dimen/standard_icon_size" android:layout_height="wrap_content"
android:layout_height="@dimen/standard_icon_size" android:layout_gravity="center_vertical"
android:layout_gravity="center_vertical" android:layout_weight="1"
android:layout_marginEnd="@dimen/bottom_sheet_icon_margin" android:ellipsize="end"
android:layout_marginRight="@dimen/bottom_sheet_icon_margin" android:maxLines="1"
tools:background="@drawable/ic_action_device_top"/> android:text="@string/appearance_on_the_map"
android:textAppearance="@style/TextAppearance.ListItemTitle"/>
</LinearLayout>
<TextView <LinearLayout
android:layout_width="0dp" android:id="@+id/coordinate_input_row"
android:layout_height="wrap_content" android:layout_width="match_parent"
android:layout_gravity="center_vertical" android:layout_height="@dimen/bottom_sheet_list_item_height"
android:layout_weight="1" android:background="?attr/selectableItemBackground"
android:ellipsize="end" android:minHeight="@dimen/bottom_sheet_list_item_height"
android:maxLines="1" android:paddingLeft="@dimen/content_padding"
android:text="@string/appearance_on_the_map" android:paddingRight="@dimen/content_padding">
android:textAppearance="@style/TextAppearance.ListItemTitle"/>
</LinearLayout>
<LinearLayout <ImageView
android:id="@+id/coordinate_input_row" android:id="@+id/coordinate_input_icon"
android:layout_width="match_parent" android:layout_width="@dimen/standard_icon_size"
android:layout_height="@dimen/bottom_sheet_list_item_height" android:layout_height="@dimen/standard_icon_size"
android:background="?attr/selectableItemBackground" android:layout_gravity="center_vertical"
android:minHeight="@dimen/bottom_sheet_list_item_height" android:layout_marginEnd="@dimen/bottom_sheet_icon_margin"
android:paddingLeft="@dimen/content_padding" android:layout_marginRight="@dimen/bottom_sheet_icon_margin"
android:paddingRight="@dimen/content_padding"> tools:src="@drawable/ic_action_coordinates_longitude"/>
<ImageView <TextView
android:id="@+id/coordinate_input_icon" android:layout_width="wrap_content"
android:layout_width="@dimen/standard_icon_size" android:layout_height="wrap_content"
android:layout_height="@dimen/standard_icon_size" android:layout_gravity="center_vertical"
android:layout_gravity="center_vertical" android:maxLines="1"
android:layout_marginEnd="@dimen/bottom_sheet_icon_margin" android:text="@string/coordinate_input"
android:layout_marginRight="@dimen/bottom_sheet_icon_margin" android:textAppearance="@style/TextAppearance.ListItemTitle"/>
tools:src="@drawable/ic_action_coordinates_longitude"/> </LinearLayout>
<TextView <LinearLayout
android:id="@+id/build_route_row"
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_sheet_list_item_height"
android:background="?attr/selectableItemBackground"
android:minHeight="@dimen/bottom_sheet_list_item_height"
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding">
<ImageView
android:id="@+id/build_route_icon"
android:layout_width="@dimen/standard_icon_size"
android:layout_height="@dimen/standard_icon_size"
android:layout_gravity="center_vertical"
android:layout_marginEnd="@dimen/bottom_sheet_icon_margin"
android:layout_marginRight="@dimen/bottom_sheet_icon_margin"
tools:src="@drawable/map_directions"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:maxLines="1"
android:text="@string/plan_route"
android:textAppearance="@style/TextAppearance.ListItemTitle"/>
</LinearLayout>
<View
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="1dp"
android:layout_gravity="center_vertical" android:layout_marginBottom="@dimen/bottom_sheet_divider_margin_bottom"
android:maxLines="1" android:layout_marginLeft="@dimen/bottom_sheet_divider_margin_start"
android:text="@string/coordinate_input" android:layout_marginStart="@dimen/bottom_sheet_divider_margin_start"
android:textAppearance="@style/TextAppearance.ListItemTitle"/> android:layout_marginTop="@dimen/bottom_sheet_divider_margin_top"
android:background="?attr/dashboard_divider"/>
<LinearLayout
android:id="@+id/save_as_new_track_row"
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_sheet_list_item_height"
android:background="?attr/selectableItemBackground"
android:minHeight="@dimen/bottom_sheet_list_item_height"
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding">
<ImageView
android:id="@+id/save_as_new_track_icon"
android:layout_width="@dimen/standard_icon_size"
android:layout_height="@dimen/standard_icon_size"
android:layout_gravity="center_vertical"
android:layout_marginEnd="@dimen/bottom_sheet_icon_margin"
android:layout_marginRight="@dimen/bottom_sheet_icon_margin"
tools:src="@drawable/ic_action_polygom_dark"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:maxLines="1"
android:text="@string/marker_save_as_track"
android:textAppearance="@style/TextAppearance.ListItemTitle"/>
</LinearLayout>
<LinearLayout
android:id="@+id/move_all_to_history_row"
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_sheet_list_item_height"
android:background="?attr/selectableItemBackground"
android:minHeight="@dimen/bottom_sheet_list_item_height"
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding">
<ImageView
android:id="@+id/move_all_to_history_icon"
android:layout_width="@dimen/standard_icon_size"
android:layout_height="@dimen/standard_icon_size"
android:layout_gravity="center_vertical"
android:layout_marginEnd="@dimen/bottom_sheet_icon_margin"
android:layout_marginRight="@dimen/bottom_sheet_icon_margin"
tools:src="@drawable/ic_action_history2"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:maxLines="1"
android:text="@string/move_all_to_history"
android:textAppearance="@style/TextAppearance.ListItemTitle"/>
</LinearLayout>
</LinearLayout> </LinearLayout>
<LinearLayout </ScrollView>
android:id="@+id/build_route_row"
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_sheet_list_item_height"
android:background="?attr/selectableItemBackground"
android:minHeight="@dimen/bottom_sheet_list_item_height"
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding">
<ImageView </LinearLayout>
android:id="@+id/build_route_icon"
android:layout_width="@dimen/standard_icon_size"
android:layout_height="@dimen/standard_icon_size"
android:layout_gravity="center_vertical"
android:layout_marginEnd="@dimen/bottom_sheet_icon_margin"
android:layout_marginRight="@dimen/bottom_sheet_icon_margin"
tools:src="@drawable/map_directions"/>
<TextView </FrameLayout>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:maxLines="1"
android:text="@string/plan_route"
android:textAppearance="@style/TextAppearance.ListItemTitle"/>
</LinearLayout>
<View
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_marginBottom="@dimen/bottom_sheet_divider_margin_bottom"
android:layout_marginLeft="@dimen/bottom_sheet_divider_margin_start"
android:layout_marginStart="@dimen/bottom_sheet_divider_margin_start"
android:layout_marginTop="@dimen/bottom_sheet_divider_margin_top"
android:background="?attr/dashboard_divider"/>
<LinearLayout
android:id="@+id/save_as_new_track_row"
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_sheet_list_item_height"
android:background="?attr/selectableItemBackground"
android:minHeight="@dimen/bottom_sheet_list_item_height"
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding">
<ImageView
android:id="@+id/save_as_new_track_icon"
android:layout_width="@dimen/standard_icon_size"
android:layout_height="@dimen/standard_icon_size"
android:layout_gravity="center_vertical"
android:layout_marginEnd="@dimen/bottom_sheet_icon_margin"
android:layout_marginRight="@dimen/bottom_sheet_icon_margin"
tools:src="@drawable/ic_action_polygom_dark"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:maxLines="1"
android:text="@string/marker_save_as_track"
android:textAppearance="@style/TextAppearance.ListItemTitle"/>
</LinearLayout>
<LinearLayout
android:id="@+id/move_all_to_history_row"
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_sheet_list_item_height"
android:background="?attr/selectableItemBackground"
android:minHeight="@dimen/bottom_sheet_list_item_height"
android:paddingLeft="@dimen/content_padding"
android:paddingRight="@dimen/content_padding">
<ImageView
android:id="@+id/move_all_to_history_icon"
android:layout_width="@dimen/standard_icon_size"
android:layout_height="@dimen/standard_icon_size"
android:layout_gravity="center_vertical"
android:layout_marginEnd="@dimen/bottom_sheet_icon_margin"
android:layout_marginRight="@dimen/bottom_sheet_icon_margin"
tools:src="@drawable/ic_action_history2"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:maxLines="1"
android:text="@string/move_all_to_history"
android:textAppearance="@style/TextAppearance.ListItemTitle"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>

View file

@ -138,6 +138,8 @@
<color name="status_bar_mapillary">#11ab51</color> <color name="status_bar_mapillary">#11ab51</color>
<color name="status_bar_route_light">#d9d9d9</color> <color name="status_bar_route_light">#d9d9d9</color>
<color name="status_bar_route_dark">#000000</color> <color name="status_bar_route_dark">#000000</color>
<color name="status_bar_dim_light">#8a4e00</color>
<color name="status_bar_dim_dark">#13171a</color>
<color name="color_transparent">#0000</color> <color name="color_transparent">#0000</color>

View file

@ -2,6 +2,7 @@ package net.osmand.plus.mapmarkers;
import android.app.Dialog; import android.app.Dialog;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
@ -17,6 +18,7 @@ import android.view.LayoutInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.Window;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
@ -28,7 +30,6 @@ import net.osmand.plus.OsmandSettings.MapMarkersOrderByMode;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.TrackActivity; import net.osmand.plus.activities.TrackActivity;
import net.osmand.plus.helpers.AndroidUiHelper;
import net.osmand.plus.mapmarkers.CoordinateInputDialogFragment.OnMapMarkersSavedListener; import net.osmand.plus.mapmarkers.CoordinateInputDialogFragment.OnMapMarkersSavedListener;
import net.osmand.plus.mapmarkers.DirectionIndicationDialogFragment.DirectionIndicationFragmentListener; import net.osmand.plus.mapmarkers.DirectionIndicationDialogFragment.DirectionIndicationFragmentListener;
import net.osmand.plus.mapmarkers.OptionsBottomSheetDialogFragment.MarkerOptionsFragmentListener; import net.osmand.plus.mapmarkers.OptionsBottomSheetDialogFragment.MarkerOptionsFragmentListener;
@ -64,6 +65,8 @@ public class MapMarkersDialogFragment extends android.support.v4.app.DialogFragm
private boolean lightTheme; private boolean lightTheme;
private String groupIdToOpen; private String groupIdToOpen;
private int statusBarColor = -1;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -152,11 +155,6 @@ public class MapMarkersDialogFragment extends android.support.v4.app.DialogFragm
final MapMarkersViewPagerAdapter adapter = new MapMarkersViewPagerAdapter(getChildFragmentManager()); final MapMarkersViewPagerAdapter adapter = new MapMarkersViewPagerAdapter(getChildFragmentManager());
viewPager.setAdapter(adapter); viewPager.setAdapter(adapter);
if (!AndroidUiHelper.isOrientationPortrait(getActivity())) {
mainView.findViewById(R.id.menu_container).getLayoutParams().width =
getResources().getDimensionPixelSize(R.dimen.landscape_bottom_sheet_dialog_fragment_width);
}
bottomNav = mainView.findViewById(R.id.map_markers_bottom_navigation); bottomNav = mainView.findViewById(R.id.map_markers_bottom_navigation);
BottomNavigationViewHelper.disableShiftMode(bottomNav); BottomNavigationViewHelper.disableShiftMode(bottomNav);
if (!lightTheme) { if (!lightTheme) {
@ -265,6 +263,26 @@ public class MapMarkersDialogFragment extends android.support.v4.app.DialogFragm
}; };
} }
public void blurStatusBar() {
if (Build.VERSION.SDK_INT >= 21) {
Window window = getDialog().getWindow();
if (window != null) {
statusBarColor = window.getStatusBarColor();
window.setStatusBarColor(ContextCompat.getColor(getActivity(),
lightTheme ? R.color.status_bar_dim_light : R.color.status_bar_dim_dark));
}
}
}
public void clearStatusBar() {
if (Build.VERSION.SDK_INT >= 21 && statusBarColor != -1) {
Window window = getDialog().getWindow();
if (window != null) {
window.setStatusBarColor(statusBarColor);
}
}
}
private void showOptionsMenuFragment() { private void showOptionsMenuFragment() {
OptionsBottomSheetDialogFragment fragment = new OptionsBottomSheetDialogFragment(); OptionsBottomSheetDialogFragment fragment = new OptionsBottomSheetDialogFragment();
fragment.setListener(createOptionsFragmentListener()); fragment.setListener(createOptionsFragmentListener());

View file

@ -47,7 +47,18 @@ public class OptionsBottomSheetDialogFragment extends BottomSheetDialogFragment
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final int themeRes = getMyApplication().getSettings().isLightContent() ? R.style.OsmandLightTheme : R.style.OsmandDarkTheme; final int themeRes = getMyApplication().getSettings().isLightContent() ? R.style.OsmandLightTheme : R.style.OsmandDarkTheme;
final View mainView = View.inflate(new ContextThemeWrapper(getContext(), themeRes), R.layout.fragment_marker_options_bottom_sheet_dialog, null); View view = View.inflate(new ContextThemeWrapper(getContext(), themeRes), R.layout.fragment_marker_options_bottom_sheet_dialog, null);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
final View mainView = view.findViewById(R.id.main_view);
if (!AndroidUiHelper.isOrientationPortrait(getActivity())) {
mainView.getLayoutParams().width = getResources().getDimensionPixelSize(R.dimen.landscape_bottom_sheet_dialog_fragment_width);
}
((ImageView) mainView.findViewById(R.id.sort_by_icon)).setImageDrawable(getContentIcon(R.drawable.ic_sort_waypoint_dark)); ((ImageView) mainView.findViewById(R.id.sort_by_icon)).setImageDrawable(getContentIcon(R.drawable.ic_sort_waypoint_dark));
OsmandSettings.MapMarkersMode mode = getMyApplication().getSettings().MAP_MARKERS_MODE.get(); OsmandSettings.MapMarkersMode mode = getMyApplication().getSettings().MAP_MARKERS_MODE.get();
@ -171,7 +182,19 @@ public class OptionsBottomSheetDialogFragment extends BottomSheetDialogFragment
} }
}); });
return mainView; return view;
}
@Override
public void onResume() {
super.onResume();
((MapMarkersDialogFragment) getParentFragment()).blurStatusBar();
}
@Override
public void onPause() {
super.onPause();
((MapMarkersDialogFragment) getParentFragment()).clearStatusBar();
} }
@Override @Override