Merge pull request #4690 from osmandapp/change_statusbar

Change status bar color in some places
This commit is contained in:
Alexey 2017-11-07 13:54:42 +03:00 committed by GitHub
commit 74d9a7169c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 361 additions and 93 deletions

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/mapBackground">
@ -43,7 +43,8 @@
<FrameLayout
android:id="@+id/MapHudButtonsOverlay"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<include layout="@layout/map_hud_top"/>
@ -105,6 +106,7 @@
android:layout_height="match_parent"
android:layout_gravity="left"
android:background="?attr/bg_color"
android:drawSelectorOnTop="true" />
android:clipToPadding="false"
android:drawSelectorOnTop="true"/>
</android.support.v4.widget.DrawerLayout>

View file

@ -3,6 +3,7 @@
<color name="mapillary_color">#3db878</color>
<color name="mapillary_color_pressed">#3a9f73</color>
<color name="mapillary_action_bar">#14c45d</color>
<color name="buy_button_color">#50ae55</color>
<color name="buy_button_pressed_color">#b5e5b9</color>
@ -61,14 +62,14 @@
<color name="dashboard_parking_light_color">#009688</color>
<color name="dashboard_parking_dark_color">#54778c</color>
<color name="dashboard_parking_dark_selected">#446072</color>
<color name="plugin_details_install_header_bg_light">#dbdbdb</color>
<color name="plugin_details_install_header_bg_dark">#2d3438</color>
<color name="list_divider_dark">#1f2326</color>
<color name="list_divider_light">@color/color_white</color>
<color name="list_sub_menu_background_dark">#475259</color>
<!-- <color name="list_item_light">@color/color_white</color>
<!-- <color name="list_item_light">@color/color_white</color>
<color name="list_item_background_dark">#333b40</color> -->
<color name="list_item_light">#fff</color>
<color name="list_item_dark">#333b40</color>
@ -129,6 +130,15 @@
<color name="dashboard_general_button_text_dark">#ff8f00</color>
<color name="dashboard_general_button_text_light">#536DFE</color>
<color name="status_bar_light">#e58200</color>
<color name="status_bar_dark">#2f3a40</color>
<color name="status_bar_transparent_light">#33000000</color>
<color name="status_bar_transparent_dark">#99000000</color>
<color name="status_bar_transparent_gradient">#CC000000</color>
<color name="status_bar_mapillary">#11ab51</color>
<color name="status_bar_route_light">#d9d9d9</color>
<color name="status_bar_route_dark">#000000</color>
<color name="color_transparent">#0000</color>
<color name="widgettext_night">#ffC8C8C8</color>
@ -142,15 +152,15 @@
<!-- Distance to object suitable for all themes -->
<color name="color_distance">#FD9822</color>
<color name="color_myloc_distance">#0080FF</color>
<color name="wpt_distance_color">#dd6CB336</color>
<!-- Old dialogs colors -->
<color name="color_white">#FFF</color>
<color name="color_black">#000</color>
<color name="row_selection_color">#CC33BBE0</color>
<!-- GPX analysis colors -->
<color name="gpx_color_point">#cd2c33</color>
<color name="gpx_speed">#c79c00</color>
@ -174,7 +184,7 @@
<color name="color_intermediate">#FFDD00</color>
<!-- update good state, osm_modify, index_update -->
<color name="color_update">#0080FF</color>
<!-- Map colors, layers, special purpose consistency colors -->
<color name="pos_heading">#320000FF</color>
<!-- color name="pos_heading_night">#880000FF</color -->
@ -190,13 +200,13 @@
<color name="nav_track">#CCaa0088</color>
<color name="nav_track_fluorescent">#CC00ddff</color>
<color name="transport_route_line">#CC2f7af5</color>
<color name="nav_arrow_distant">#C0C0C0</color>
<color name="nav_arrow">#FADE23</color>
<color name="nav_arrow_imminent">#2EFF00</color>
<color name="nav_point">#FA5050</color>
<color name="nav_point">#FA5050</color>
<color name="poi_background">#A0FF8000</color>
<color name="transport_stop">#960000FF</color>
@ -207,9 +217,9 @@
<color name="osmbug_closed">#C800FF00</color> <!-- standard GREEN -->
<color name="osmbug_not_submitted">#C8FFFF00</color> <!-- standard YELLOW -->
<color name="shadow_color">#33888888</color>
<color name="sherpafy_selection">#ff33b5e5</color>
<color name="sherpafy_add_text">#b9b9b9</color>

View file

@ -86,8 +86,13 @@
<item name="android:windowBackground">@drawable/first_splash_screen_free_dev</item>
</style>
<style name="OsmandLightThemeWithLightStatusBar" parent="OsmandLightTheme">
<item name="android:statusBarColor">@color/status_bar_route_light</item>
</style>
<!-- Osmand themes styles -->
<style name="OsmandLightTheme" parent="Theme.AppCompat.Light">
<item name="android:statusBarColor">@color/status_bar_light</item>
<item name="mapBackground">@color/map_background_color_light</item>
<item name="chart_marker_background">@drawable/chart_marker_background_light</item>
<item name="routeParameterTitleColor">@color/color_myloc_distance</item>
@ -271,6 +276,7 @@
</style>
<style name="OsmandDarkTheme" parent="Theme.AppCompat">
<item name="android:statusBarColor">@color/status_bar_dark</item>
<item name="mapBackground">@color/map_background_color_dark</item>
<item name="chart_marker_background">@drawable/chart_marker_background_dark</item>
<item name="routeParameterTitleColor">@color/osmand_orange</item>

View file

@ -182,6 +182,12 @@ public class AndroidUtils {
return result;
}
public static void addStatusBarPadding21v(Context ctx, View view) {
if (Build.VERSION.SDK_INT >= 21) {
view.setPadding(0, getStatusBarHeight(ctx), 0, 0);
}
}
public static int getNavBarHeight(Context ctx) {
if (!hasNavBar(ctx)) {
return 0;

View file

@ -25,6 +25,7 @@ import android.support.v4.app.ActivityCompat.OnRequestPermissionsResultCallback;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.content.ContextCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AlertDialog;
import android.util.DisplayMetrics;
@ -71,6 +72,7 @@ import net.osmand.plus.TargetPointsHelper;
import net.osmand.plus.TargetPointsHelper.TargetPoint;
import net.osmand.plus.Version;
import net.osmand.plus.activities.search.SearchActivity;
import net.osmand.plus.base.BaseOsmAndFragment;
import net.osmand.plus.base.FailSafeFuntions;
import net.osmand.plus.base.MapViewTrackingUtilities;
import net.osmand.plus.dashboard.DashboardOnMap;
@ -225,6 +227,12 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
// getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
if (Build.VERSION.SDK_INT >= 21) {
enterToFullScreen();
// Navigation Drawer:
AndroidUtils.addStatusBarPadding21v(this, findViewById(R.id.menuItems));
}
int statusBarHeight = 0;
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
@ -275,6 +283,7 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
app.getResourceManager().getMapTileDownloader().addDownloaderCallback(downloaderCallback);
createProgressBarForRouting();
mapLayers.createLayers(mapView);
updateStatusBarColor();
// This situtation could be when navigation suddenly crashed and after restarting
// it tries to continue the last route
if (settings.FOLLOW_THE_ROUTE.get() && !app.getRoutingHelper().isRouteCalculated()
@ -318,6 +327,18 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
mIsDestroyed = false;
}
public void exitFromFullScreen() {
if (Build.VERSION.SDK_INT >= 21) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
}
}
public void enterToFullScreen() {
if (Build.VERSION.SDK_INT >= 21) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
if (removeFragment(PlanRouteFragment.TAG)) {
@ -792,6 +813,52 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
}
}
public void updateStatusBarColor() {
if (Build.VERSION.SDK_INT >= 21) {
int colorId = -1;
BaseOsmAndFragment fragmentAboveDashboard = getVisibleBaseOsmAndFragment(R.id.fragmentContainer);
BaseOsmAndFragment fragmentBelowDashboard = getVisibleBaseOsmAndFragment(R.id.routeMenuContainer,
R.id.topFragmentContainer, R.id.bottomFragmentContainer);
if (fragmentAboveDashboard != null) {
colorId = fragmentAboveDashboard.getStatusBarColorId();
} else if (dashboardOnMap.isVisible()) {
colorId = dashboardOnMap.getStatusBarColor();
} else if (fragmentBelowDashboard != null) {
colorId = fragmentBelowDashboard.getStatusBarColorId();
} else if (mapLayers.getMapQuickActionLayer() != null
&& mapLayers.getMapQuickActionLayer().isWidgetVisible()) {
colorId = R.color.status_bar_transparent_gradient;
}
if (colorId != -1) {
getWindow().setStatusBarColor(ContextCompat.getColor(this, colorId));
return;
}
boolean night = app.getDaynightHelper().isNightModeForMapControls();
boolean mapTopBar = findViewById(R.id.map_top_bar).getVisibility() == View.VISIBLE;
boolean markerTopBar = mapLayers.getMapMarkersLayer() != null
&& mapLayers.getMapMarkersLayer().getWidgetsFactory().isTopBarVisible();
if (mapTopBar) {
colorId = night ? R.color.status_bar_route_dark : R.color.status_bar_route_light;
} else if (markerTopBar) {
colorId = R.color.status_bar_dark;
} else {
colorId = night ? R.color.status_bar_transparent_dark : R.color.status_bar_transparent_light;
}
getWindow().setStatusBarColor(ContextCompat.getColor(this, colorId));
}
}
private BaseOsmAndFragment getVisibleBaseOsmAndFragment(int... ids) {
for (int id : ids) {
Fragment fragment = getSupportFragmentManager().findFragmentById(id);
if (fragment != null && !fragment.isRemoving() && fragment instanceof BaseOsmAndFragment
&& ((BaseOsmAndFragment) fragment).getStatusBarColorId() != -1) {
return (BaseOsmAndFragment) fragment;
}
}
return null;
}
private void dismissSecondSplashScreen() {
if (SecondSplashScreenFragment.VISIBLE) {
SecondSplashScreenFragment.VISIBLE = false;

View file

@ -95,7 +95,7 @@ public class ShowRouteInfoDialogFragment extends DialogFragment {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
boolean isLightTheme = getMyApplication().getSettings().OSMAND_THEME.get() == OsmandSettings.OSMAND_LIGHT_THEME;
int themeId = isLightTheme ? R.style.OsmandLightTheme : R.style.OsmandDarkTheme;
int themeId = isLightTheme ? R.style.OsmandLightThemeWithLightStatusBar : R.style.OsmandDarkTheme;
setStyle(STYLE_NO_FRAME, themeId);
}
@ -144,10 +144,10 @@ public class ShowRouteInfoDialogFragment extends DialogFragment {
}
RouteDirectionInfo item = adapter.getItem(position - 2);
Location loc = helper.getLocationFromRouteDirection(item);
if(loc != null){
if (loc != null) {
MapRouteInfoMenu.directionInfo = position - 2;
OsmandSettings settings = getMyApplication().getSettings();
settings.setMapLocationToShow(loc.getLatitude(),loc.getLongitude(),
settings.setMapLocationToShow(loc.getLatitude(), loc.getLongitude(),
Math.max(13, settings.getLastKnownMapZoom()),
new PointDescription(PointDescription.POINT_TYPE_MARKER, item.getDescriptionRoutePart() + " " + getTimeDescription(item)),
false, null);
@ -161,7 +161,7 @@ public class ShowRouteInfoDialogFragment extends DialogFragment {
int time = helper.getLeftTime();
int hours = time / (60 * 60);
int minutes = (time / 60) % 60;
((TextView)view.findViewById(R.id.distance)).setText(OsmAndFormatter.getFormattedDistance(dist, app));
((TextView) view.findViewById(R.id.distance)).setText(OsmAndFormatter.getFormattedDistance(dist, app));
StringBuilder timeStr = new StringBuilder();
if (hours > 0) {
timeStr.append(hours).append(" ").append(getString(R.string.osmand_parking_hour)).append(" ");
@ -169,12 +169,12 @@ public class ShowRouteInfoDialogFragment extends DialogFragment {
if (minutes > 0) {
timeStr.append(minutes).append(" ").append(getString(R.string.osmand_parking_minute));
}
((TextView)view.findViewById(R.id.time)).setText(timeStr);
((TextView) view.findViewById(R.id.time)).setText(timeStr);
view.findViewById(R.id.go_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MapActivity activity = (MapActivity)getActivity();
MapActivity activity = (MapActivity) getActivity();
if (activity != null) {
activity.getMapLayers().getMapControlsLayer().startNavigation();
dismiss();
@ -357,7 +357,7 @@ public class ShowRouteInfoDialogFragment extends DialogFragment {
if (gpxItem != null) {
LatLon location = null;
WptPt wpt = null;
gpxItem.chartTypes = new GPXDataSetType[] { GPXDataSetType.ALTITUDE, GPXDataSetType.SLOPE };
gpxItem.chartTypes = new GPXDataSetType[]{GPXDataSetType.ALTITUDE, GPXDataSetType.SLOPE};
if (gpxItem.chartHighlightPos != -1) {
TrkSegment segment = gpx.tracks.get(0).segments.get(0);
if (segment != null) {
@ -383,7 +383,7 @@ public class ShowRouteInfoDialogFragment extends DialogFragment {
gpxItem.locationOnMap = gpxItem.locationStart;
}
final MapActivity activity = (MapActivity)getActivity();
final MapActivity activity = (MapActivity) getActivity();
if (activity != null) {
dismiss();
@ -603,7 +603,7 @@ public class ShowRouteInfoDialogFragment extends DialogFragment {
return file;
}
private StringBuilder generateHtml(RouteInfoAdapter routeInfo, String title) {
StringBuilder html = new StringBuilder();
if (!TextUtils.isEmpty(title)) {

View file

@ -1,22 +1,82 @@
package net.osmand.plus.base;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.support.annotation.ColorInt;
import android.support.annotation.ColorRes;
import android.support.annotation.DrawableRes;
import android.support.annotation.IdRes;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import android.view.View;
import android.widget.ImageView;
import net.osmand.plus.IconsCache;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.OsmandActionBarActivity;
public class BaseOsmAndFragment extends Fragment {
private IconsCache iconsCache;
private int statusBarColor = -1;
@Override
public void onResume() {
super.onResume();
if (Build.VERSION.SDK_INT >= 21) {
Activity activity = getActivity();
int colorId = getStatusBarColorId();
if (colorId != -1) {
if (activity instanceof MapActivity) {
((MapActivity) activity).updateStatusBarColor();
} else {
statusBarColor = activity.getWindow().getStatusBarColor();
activity.getWindow().setStatusBarColor(ContextCompat.getColor(activity, colorId));
}
}
if (!isFullScreenAllowed() && activity instanceof MapActivity) {
((MapActivity) activity).exitFromFullScreen();
}
}
}
@Override
public void onPause() {
super.onPause();
if (Build.VERSION.SDK_INT >= 21) {
Activity activity = getActivity();
if (!(activity instanceof MapActivity) && statusBarColor != -1) {
activity.getWindow().setStatusBarColor(statusBarColor);
}
if (!isFullScreenAllowed() && activity instanceof MapActivity) {
((MapActivity) activity).enterToFullScreen();
}
}
}
@Override
public void onDetach() {
super.onDetach();
if (Build.VERSION.SDK_INT >= 21 && getStatusBarColorId() != -1) {
Activity activity = getActivity();
if (activity instanceof MapActivity) {
((MapActivity) activity).updateStatusBarColor();
}
}
}
@ColorRes
public int getStatusBarColorId() {
return -1;
}
protected boolean isFullScreenAllowed() {
return true;
}
protected OsmandApplication getMyApplication() {
return (OsmandApplication) getActivity().getApplication();
}

View file

@ -7,6 +7,7 @@ import android.content.res.Resources;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.support.annotation.ColorRes;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
@ -225,6 +226,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis
mapMarkerDialogHelper.setHelperCallbacks(this);
landscape = !AndroidUiHelper.isOrientationPortrait(mapActivity);
dashboardView = (FrameLayout) mapActivity.findViewById(R.id.dashboard);
AndroidUtils.addStatusBarPadding21v(mapActivity, dashboardView);
final View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
@ -769,6 +771,11 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis
addOrUpdateDashboardFragments();
}
@ColorRes
public int getStatusBarColor() {
return R.color.status_bar_transparent_gradient;
}
public void setDashboardVisibility(boolean visible, DashboardType type, DashboardType prevItem, boolean animation) {
if (visible == this.visible && type == visibleType) {
return;
@ -796,6 +803,8 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis
}
removeMapillaryFiltersFragment();
mapActivity.updateStatusBarColor();
if (visible) {
mapActivity.dismissCardDialog();
mapActivity.getContextMenu().hideMenues();

View file

@ -7,7 +7,6 @@ import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.util.TypedValue;
@ -34,11 +33,11 @@ import net.osmand.Location;
import net.osmand.data.LatLon;
import net.osmand.data.QuadPoint;
import net.osmand.data.RotatedTileBox;
import net.osmand.plus.IconsCache;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.base.BaseOsmAndFragment;
import net.osmand.plus.dashboard.DashLocationFragment;
import net.osmand.plus.download.DownloadIndexesThread.DownloadEvents;
import net.osmand.plus.mapcontextmenu.MenuController.MenuState;
@ -55,7 +54,7 @@ import static android.util.TypedValue.COMPLEX_UNIT_DIP;
import static net.osmand.plus.mapcontextmenu.MenuBuilder.SHADOW_HEIGHT_TOP_DP;
public class MapContextMenuFragment extends Fragment implements DownloadEvents {
public class MapContextMenuFragment extends BaseOsmAndFragment implements DownloadEvents {
public static final String TAG = "MapContextMenuFragment";
public static final float FAB_PADDING_TOP_DP = 4f;
@ -149,8 +148,6 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
mapZoom = map.getZoom();
}
IconsCache iconsCache = getMyApplication().getIconsCache();
// Left title button
final Button leftTitleButton = (Button) view.findViewById(R.id.title_button);
leftTitleButton.setOnClickListener(new View.OnClickListener() {
@ -225,7 +222,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
// Progress bar
final ImageView progressButton = (ImageView) view.findViewById(R.id.progressButton);
progressButton.setImageDrawable(iconsCache.getIcon(R.drawable.ic_action_remove_dark,
progressButton.setImageDrawable(getIcon(R.drawable.ic_action_remove_dark,
!nightMode ? R.color.icon_color : R.color.dashboard_subheader_text_dark));
progressButton.setOnClickListener(new View.OnClickListener() {
@Override
@ -386,7 +383,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
// FAB
fabView = (ImageView) view.findViewById(R.id.context_menu_fab_view);
if (menu.fabVisible()) {
fabView.setImageDrawable(iconsCache.getIcon(menu.getFabIconId(), 0));
fabView.setImageDrawable(getIcon(menu.getFabIconId(), 0));
if (menu.isLandscapeLayout()) {
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) fabView.getLayoutParams();
params.setMargins(0, 0, dpToPx(28f), 0);
@ -446,7 +443,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
// Action buttons
final ImageButton buttonFavorite = (ImageButton) view.findViewById(R.id.context_menu_fav_button);
buttonFavorite.setImageDrawable(iconsCache.getIcon(menu.getFavActionIconId(),
buttonFavorite.setImageDrawable(getIcon(menu.getFavActionIconId(),
!nightMode ? R.color.icon_color : R.color.dashboard_subheader_text_dark));
AndroidUtils.setDashButtonBackground(getMapActivity(), buttonFavorite, nightMode);
buttonFavorite.setContentDescription(getString(menu.getFavActionStringId()));
@ -459,11 +456,11 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
final ImageButton buttonWaypoint = (ImageButton) view.findViewById(R.id.context_menu_route_button);
if (getMyApplication().getSettings().USE_MAP_MARKERS.get()) {
buttonWaypoint.setImageDrawable(iconsCache.getIcon(R.drawable.map_action_flag_dark,
buttonWaypoint.setImageDrawable(getIcon(R.drawable.map_action_flag_dark,
!nightMode ? R.color.icon_color : R.color.dashboard_subheader_text_dark));
buttonWaypoint.setContentDescription(getString(R.string.shared_string_add_to_map_markers));
} else {
buttonWaypoint.setImageDrawable(iconsCache.getIcon(R.drawable.map_action_waypoint,
buttonWaypoint.setImageDrawable(getIcon(R.drawable.map_action_waypoint,
!nightMode ? R.color.icon_color : R.color.dashboard_subheader_text_dark));
buttonWaypoint.setContentDescription(getString(R.string.context_menu_item_destination_point));
}
@ -476,7 +473,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
});
final ImageButton buttonShare = (ImageButton) view.findViewById(R.id.context_menu_share_button);
buttonShare.setImageDrawable(iconsCache.getIcon(R.drawable.map_action_gshare_dark,
buttonShare.setImageDrawable(getIcon(R.drawable.map_action_gshare_dark,
!nightMode ? R.color.icon_color : R.color.dashboard_subheader_text_dark));
AndroidUtils.setDashButtonBackground(getMapActivity(), buttonShare, nightMode);
buttonShare.setOnClickListener(new View.OnClickListener() {
@ -487,7 +484,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
});
final ImageButton buttonMore = (ImageButton) view.findViewById(R.id.context_menu_more_button);
buttonMore.setImageDrawable(iconsCache.getIcon(R.drawable.map_overflow_menu_white,
buttonMore.setImageDrawable(getIcon(R.drawable.map_overflow_menu_white,
!nightMode ? R.color.icon_color : R.color.dashboard_subheader_text_dark));
AndroidUtils.setDashButtonBackground(getMapActivity(), buttonMore, nightMode);
buttonMore.setOnClickListener(new View.OnClickListener() {
@ -523,6 +520,14 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
return view;
}
@Override
public int getStatusBarColorId() {
if (menu != null && (menu.getCurrentMenuState() == MenuState.FULL_SCREEN || menu.isLandscapeLayout())) {
return nightMode ? R.color.status_bar_dark : R.color.status_bar_route_light;
}
return -1;
}
private void updateImageButton(ImageButton button, int iconLightId, int iconDarkId, int bgLightId, int bgDarkId, boolean night) {
button.setImageDrawable(getMapActivity().getMyApplication().getIconsCache().getIcon(night ? iconDarkId : iconLightId));
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
@ -850,8 +855,6 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
private void buildHeader() {
OsmandApplication app = getMyApplication();
if (app != null && view != null) {
IconsCache iconsCache = app.getIconsCache();
final View iconLayout = view.findViewById(R.id.context_menu_icon_layout);
final ImageView iconView = (ImageView) view.findViewById(R.id.context_menu_icon_view);
Drawable icon = menu.getLeftIcon();
@ -860,7 +863,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
iconView.setImageDrawable(icon);
iconLayout.setVisibility(View.VISIBLE);
} else if (iconId != 0) {
iconView.setImageDrawable(iconsCache.getIcon(iconId,
iconView.setImageDrawable(getIcon(iconId,
!nightMode ? R.color.osmand_orange : R.color.osmand_orange_dark));
iconLayout.setVisibility(View.VISIBLE);
} else {
@ -947,9 +950,8 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
public void rebuildMenu(boolean centered) {
OsmandApplication app = getMyApplication();
if (app != null && view != null) {
IconsCache iconsCache = app.getIconsCache();
final ImageButton buttonFavorite = (ImageButton) view.findViewById(R.id.context_menu_fav_button);
buttonFavorite.setImageDrawable(iconsCache.getIcon(menu.getFavActionIconId(),
buttonFavorite.setImageDrawable(getIcon(menu.getFavActionIconId(),
!nightMode ? R.color.icon_color : R.color.dashboard_subheader_text_dark));
buttonFavorite.setContentDescription(getString(menu.getFavActionStringId()));
@ -1224,13 +1226,25 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
break;
case MenuState.FULL_SCREEN:
posY = -menuTopShadowHeight - dpToPx(SHADOW_HEIGHT_TOP_DP);
posY = addStatusBarHeightIfNeeded(posY);
break;
default:
break;
}
if (!menu.isLandscapeLayout()) {
getMapActivity().updateStatusBarColor();
}
return posY;
}
private int addStatusBarHeightIfNeeded(int res) {
if (Build.VERSION.SDK_INT >= 21) {
// One pixel is needed to fill a thin gap between the status bar and the fragment.
return res + AndroidUtils.getStatusBarHeight(getActivity()) - 1;
}
return res;
}
private void updateMainViewLayout(int posY) {
if (view != null) {
menuFullHeight = view.getHeight() - posY;
@ -1356,6 +1370,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
int fabY = y + fabPaddingTopPx;
if (fabY < fabPaddingTopPx) {
fabY = fabPaddingTopPx;
fabY = addStatusBarHeightIfNeeded(fabY);
}
return fabY;
}

View file

@ -2,8 +2,8 @@ package net.osmand.plus.mapcontextmenu.builders.cards.dialogs;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.AppCompatImageView;
import android.support.v7.widget.PopupMenu;
import android.view.LayoutInflater;
@ -16,11 +16,12 @@ import android.widget.TextView;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.base.BaseOsmAndFragment;
import net.osmand.plus.dialogs.DirectionsDialogs;
import net.osmand.plus.mapillary.MapillaryPlugin;
import net.osmand.util.Algorithms;
public class ContextMenuCardDialogFragment extends Fragment {
public class ContextMenuCardDialogFragment extends BaseOsmAndFragment {
public static final String TAG = "ContextMenuCardDialogFragment";
private ContextMenuCardDialog dialog;
@ -39,6 +40,10 @@ public class ContextMenuCardDialogFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.context_menu_card_dialog, container, false);
if (dialog.getType() == ContextMenuCardDialog.CardDialogType.MAPILLARY) {
view.findViewById(R.id.dialog_layout)
.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.mapillary_action_bar));
}
contentLayout = (LinearLayout) view.findViewById(R.id.content);
contentView = dialog.getContentView();
if (contentView != null) {
@ -106,6 +111,19 @@ public class ContextMenuCardDialogFragment extends Fragment {
dialog.saveMenu(outState);
}
@Override
public int getStatusBarColorId() {
if (dialog != null && dialog.getType() == ContextMenuCardDialog.CardDialogType.MAPILLARY) {
return R.color.status_bar_mapillary;
}
return -1;
}
@Override
protected boolean isFullScreenAllowed() {
return false;
}
public static void showInstance(ContextMenuCardDialog menu) {
ContextMenuCardDialogFragment fragment = new ContextMenuCardDialogFragment();
fragment.dialog = menu;

View file

@ -8,7 +8,6 @@ import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v7.widget.Toolbar;
import android.util.TypedValue;
import android.view.LayoutInflater;
@ -24,14 +23,14 @@ import android.widget.ScrollView;
import android.widget.TextView;
import net.osmand.AndroidUtils;
import net.osmand.plus.IconsCache;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.base.BaseOsmAndFragment;
import net.osmand.plus.widgets.AutoCompleteTextViewEx;
import net.osmand.util.Algorithms;
public abstract class PointEditorFragment extends Fragment {
public abstract class PointEditorFragment extends BaseOsmAndFragment {
private View view;
private EditText nameEdit;
@ -181,9 +180,7 @@ public abstract class PointEditorFragment extends Fragment {
}
public Drawable getRowIcon(int iconId) {
IconsCache iconsCache = getMyApplication().getIconsCache();
return iconsCache.getIcon(iconId,
getEditor().isLight() ? R.color.icon_color : R.color.icon_color_light);
return getIcon(iconId, getEditor().isLight() ? R.color.icon_color : R.color.icon_color_light);
}
@Override
@ -217,6 +214,16 @@ public abstract class PointEditorFragment extends Fragment {
super.onDestroyView();
}
@Override
public int getStatusBarColorId() {
return R.color.status_bar_light;
}
@Override
protected boolean isFullScreenAllowed() {
return false;
}
private void hideKeyboard() {
InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
if (inputMethodManager != null) {
@ -325,7 +332,6 @@ public abstract class PointEditorFragment extends Fragment {
}
protected Drawable getPaintedIcon(int iconId, int color) {
IconsCache iconsCache = getMapActivity().getMyApplication().getIconsCache();
return iconsCache.getPaintedIcon(iconId, color);
return getPaintedContentIcon(iconId, color);
}
}

View file

@ -1,7 +1,6 @@
package net.osmand.plus.mapcontextmenu.other;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.view.LayoutInflater;
@ -12,14 +11,17 @@ import android.widget.TextView;
import net.osmand.AndroidUtils;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.base.BaseOsmAndFragment;
import net.osmand.plus.helpers.AndroidUiHelper;
public class MapRouteInfoMenuFragment extends Fragment {
public class MapRouteInfoMenuFragment extends BaseOsmAndFragment {
public static final String TAG = "MapRouteInfoMenuFragment";
private MapRouteInfoMenu menu;
private View mainView;
private boolean portrait;
private MapActivity getMapActivity() {
return (MapActivity) getActivity();
}
@ -31,6 +33,10 @@ public class MapRouteInfoMenuFragment extends Fragment {
menu = mapActivity.getMapLayers().getMapControlsLayer().getMapRouteInfoMenu();
View view = inflater.inflate(R.layout.plan_route_info, container, false);
portrait = AndroidUiHelper.isOrientationPortrait(mapActivity);
if (!portrait) {
AndroidUtils.addStatusBarPadding21v(getActivity(), view);
}
if (menu == null) {
return view;
}
@ -65,6 +71,11 @@ public class MapRouteInfoMenuFragment extends Fragment {
}
}
@Override
public int getStatusBarColorId() {
return portrait ? -1 : R.color.status_bar_transparent_gradient;
}
public int getHeight() {
if (mainView != null) {
return mainView.getHeight();

View file

@ -2,7 +2,6 @@ package net.osmand.plus.mapcontextmenu.other;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.view.LayoutInflater;
@ -16,9 +15,10 @@ import android.widget.TextView;
import net.osmand.AndroidUtils;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.base.BaseOsmAndFragment;
import net.osmand.plus.helpers.AndroidUiHelper;
public class TrackDetailsMenuFragment extends Fragment {
public class TrackDetailsMenuFragment extends BaseOsmAndFragment {
public static final String TAG = "TrackDetailsMenuFragment";
private TrackDetailsMenu menu;
@ -108,6 +108,11 @@ public class TrackDetailsMenuFragment extends Fragment {
}
}
@Override
public int getStatusBarColorId() {
return R.color.status_bar_transparent_gradient;
}
public int getHeight() {
if (mainView != null) {
return mainView.getHeight();
@ -163,12 +168,12 @@ public class TrackDetailsMenuFragment extends Fragment {
ImageView yAxisArrow = (ImageView) mainView.findViewById(R.id.y_axis_arrow);
ImageView xAxisArrow = (ImageView) mainView.findViewById(R.id.x_axis_arrow);
yAxisArrow.setImageDrawable(ctx.getMyApplication().getIconsCache().getThemedIcon(R.drawable.ic_action_arrow_drop_down));
xAxisArrow.setImageDrawable(ctx.getMyApplication().getIconsCache().getThemedIcon(R.drawable.ic_action_arrow_drop_down));
yAxisArrow.setImageDrawable(getContentIcon(R.drawable.ic_action_arrow_drop_down));
xAxisArrow.setImageDrawable(getContentIcon(R.drawable.ic_action_arrow_drop_down));
ImageButton backButton = (ImageButton) mainView.findViewById(R.id.top_bar_back_button);
if (backButton != null) {
backButton.setImageDrawable(ctx.getMyApplication().getIconsCache().getIcon(R.drawable.ic_arrow_back, R.color.color_white));
backButton.setImageDrawable(getIcon(R.drawable.ic_arrow_back, R.color.color_white));
}
}

View file

@ -6,7 +6,6 @@ import android.support.annotation.DrawableRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.Snackbar;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.content.ContextCompat;
import android.view.ContextThemeWrapper;
@ -17,15 +16,16 @@ import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import net.osmand.AndroidUtils;
import net.osmand.Location;
import net.osmand.data.LatLon;
import net.osmand.plus.IconsCache;
import net.osmand.plus.MapMarkersHelper.MapMarker;
import net.osmand.plus.OsmAndLocationProvider.OsmAndCompassListener;
import net.osmand.plus.OsmAndLocationProvider.OsmAndLocationListener;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.base.BaseOsmAndFragment;
import net.osmand.plus.dashboard.DashLocationFragment;
import net.osmand.plus.helpers.AndroidUiHelper;
import net.osmand.plus.views.OsmandMapTileView;
@ -38,11 +38,10 @@ import java.util.Locale;
import static net.osmand.plus.OsmandSettings.LANDSCAPE_MIDDLE_RIGHT_CONSTANT;
import static net.osmand.plus.OsmandSettings.MIDDLE_TOP_CONSTANT;
public class MarkerMenuOnMapFragment extends Fragment implements OsmAndCompassListener, OsmAndLocationListener {
public class MarkerMenuOnMapFragment extends BaseOsmAndFragment implements OsmAndCompassListener, OsmAndLocationListener {
public static final String TAG = "MarkerMenuOnMapFragment";
private IconsCache iconsCache;
private MapMarker marker;
private boolean night;
@ -66,11 +65,13 @@ public class MarkerMenuOnMapFragment extends Fragment implements OsmAndCompassLi
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final OsmandApplication app = (OsmandApplication) getActivity().getApplication();
night = app.getDaynightHelper().isNightModeForMapControls();
iconsCache = app.getIconsCache();
portrait = AndroidUiHelper.isOrientationPortrait(getActivity());
final int themeRes = night ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
final View mainView = View.inflate(new ContextThemeWrapper(getContext(), themeRes), R.layout.fragment_marker_menu_on_map, null);
if (!portrait) {
AndroidUtils.addStatusBarPadding21v(getActivity(), mainView);
}
mainView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
@ -79,7 +80,7 @@ public class MarkerMenuOnMapFragment extends Fragment implements OsmAndCompassLi
});
((ImageView) mainView.findViewById(R.id.marker_icon))
.setImageDrawable(iconsCache.getIcon(R.drawable.ic_action_flag_dark, MapMarker.getColorId(marker.colorIndex)));
.setImageDrawable(getIcon(R.drawable.ic_action_flag_dark, MapMarker.getColorId(marker.colorIndex)));
((ImageView) mainView.findViewById(R.id.rename_icon)).setImageDrawable(getContentIcon(R.drawable.ic_action_edit_dark));
((ImageView) mainView.findViewById(R.id.delete_icon)).setImageDrawable(getContentIcon(R.drawable.ic_action_delete_dark));
@ -109,7 +110,7 @@ public class MarkerMenuOnMapFragment extends Fragment implements OsmAndCompassLi
ImageButton visitedBtn = (ImageButton) mainView.findViewById(R.id.marker_visited_button);
visitedBtn.setBackgroundDrawable(ContextCompat.getDrawable(getContext(),
night ? R.drawable.marker_circle_background_dark_with_inset : R.drawable.marker_circle_background_light_with_inset));
visitedBtn.setImageDrawable(iconsCache.getIcon(R.drawable.ic_action_marker_passed, night ? 0 : R.color.icon_color));
visitedBtn.setImageDrawable(getIcon(R.drawable.ic_action_marker_passed, night ? 0 : R.color.icon_color));
visitedBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
@ -189,6 +190,11 @@ public class MarkerMenuOnMapFragment extends Fragment implements OsmAndCompassLi
stopLocationUpdate();
}
@Override
public int getStatusBarColorId() {
return portrait ? -1 : R.color.status_bar_transparent_gradient;
}
@Override
public void updateLocation(Location location) {
boolean newLocation = this.location == null && location != null;
@ -214,19 +220,13 @@ public class MarkerMenuOnMapFragment extends Fragment implements OsmAndCompassLi
}
}
private OsmandApplication getMyApplication() {
if (getActivity() != null) {
return ((MapActivity) getActivity()).getMyApplication();
}
return null;
}
private MapActivity getMapActivity() {
return (MapActivity) getActivity();
}
private Drawable getContentIcon(@DrawableRes int id) {
return iconsCache.getIcon(id, night ? R.color.ctx_menu_info_text_dark : R.color.on_map_icon_color);
@Override
protected Drawable getContentIcon(@DrawableRes int id) {
return getIcon(id, night ? R.color.ctx_menu_info_text_dark : R.color.on_map_icon_color);
}
private void startLocationUpdate() {

View file

@ -35,7 +35,6 @@ import net.osmand.data.RotatedTileBox;
import net.osmand.plus.ApplicationMode;
import net.osmand.plus.GPXUtilities.TrkSegment;
import net.osmand.plus.GPXUtilities.WptPt;
import net.osmand.plus.IconsCache;
import net.osmand.plus.MapMarkersHelper;
import net.osmand.plus.MapMarkersHelper.MapMarker;
import net.osmand.plus.OsmAndFormatter;
@ -46,6 +45,7 @@ import net.osmand.plus.R;
import net.osmand.plus.TargetPointsHelper;
import net.osmand.plus.TargetPointsHelper.TargetPoint;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.base.BaseOsmAndFragment;
import net.osmand.plus.helpers.AndroidUiHelper;
import net.osmand.plus.mapmarkers.PlanRouteOptionsBottomSheetDialogFragment.PlanRouteOptionsFragmentListener;
import net.osmand.plus.mapmarkers.adapters.MapMarkersItemTouchHelperCallback;
@ -65,7 +65,7 @@ import java.util.List;
import static net.osmand.plus.OsmandSettings.LANDSCAPE_MIDDLE_RIGHT_CONSTANT;
import static net.osmand.plus.OsmandSettings.MIDDLE_TOP_CONSTANT;
public class PlanRouteFragment extends Fragment implements OsmAndLocationListener {
public class PlanRouteFragment extends BaseOsmAndFragment implements OsmAndLocationListener {
public static final String TAG = "PlanRouteFragment";
private static final int MIN_DISTANCE_FOR_RECALCULATE = 50; // in meters
@ -74,7 +74,6 @@ public class PlanRouteFragment extends Fragment implements OsmAndLocationListene
private MarkersPlanRouteContext planRouteContext;
private MapMarkersListAdapter adapter;
private IconsCache iconsCache;
private PlanRouteToolbarController toolbarController;
private int previousMapPosition;
@ -84,6 +83,7 @@ public class PlanRouteFragment extends Fragment implements OsmAndLocationListene
private boolean nightMode;
private boolean portrait;
private boolean fullScreen;
private boolean wasCollapseButtonVisible;
private boolean cancelSnapToRoad = true;
@ -157,13 +157,12 @@ public class PlanRouteFragment extends Fragment implements OsmAndLocationListene
toolbarHeight = mapActivity.getResources().getDimensionPixelSize(R.dimen.dashboard_map_toolbar);
iconsCache = mapActivity.getMyApplication().getIconsCache();
nightMode = mapActivity.getMyApplication().getDaynightHelper().isNightModeForMapControls();
final int themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
final int backgroundColor = ContextCompat.getColor(mapActivity,
nightMode ? R.color.ctx_menu_info_view_bg_dark : R.color.ctx_menu_info_view_bg_light);
portrait = AndroidUiHelper.isOrientationPortrait(mapActivity);
boolean fullScreen = portrait && planRouteContext.isMarkersListOpened();
fullScreen = portrait && planRouteContext.isMarkersListOpened();
int layoutRes = fullScreen ? R.layout.fragment_plan_route_full_screen : R.layout.fragment_plan_route_half_screen;
View view = View.inflate(new ContextThemeWrapper(getContext(), themeRes), layoutRes, null);
@ -381,6 +380,19 @@ public class PlanRouteFragment extends Fragment implements OsmAndLocationListene
exitPlanRouteMode();
}
@Override
public int getStatusBarColorId() {
if (fullScreen || !portrait) {
return nightMode ? R.color.status_bar_dark : R.color.status_bar_route_light;
}
return R.color.status_bar_transparent_gradient;
}
@Override
protected boolean isFullScreenAllowed() {
return !(fullScreen || !portrait);
}
@Override
public void updateLocation(Location loc) {
MapActivity mapActivity = getMapActivity();
@ -422,12 +434,13 @@ public class PlanRouteFragment extends Fragment implements OsmAndLocationListene
return null;
}
private Drawable getContentIcon(@DrawableRes int id) {
return iconsCache.getIcon(id, nightMode ? R.color.ctx_menu_info_text_dark : R.color.icon_color);
@Override
protected Drawable getContentIcon(@DrawableRes int id) {
return getIcon(id, nightMode ? R.color.ctx_menu_info_text_dark : R.color.icon_color);
}
private Drawable getActiveIcon(@DrawableRes int id) {
return iconsCache.getIcon(id, nightMode ? R.color.osmand_orange : R.color.color_myloc_distance);
return getIcon(id, nightMode ? R.color.osmand_orange : R.color.color_myloc_distance);
}
private void moveMapToPosition(double lat, double lon) {

View file

@ -5,6 +5,7 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.DrawableRes;
import android.support.annotation.Nullable;
@ -41,11 +42,11 @@ import net.osmand.plus.GPXUtilities.Track;
import net.osmand.plus.GPXUtilities.TrkSegment;
import net.osmand.plus.GPXUtilities.WptPt;
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
import net.osmand.plus.IconsCache;
import net.osmand.plus.OsmAndFormatter;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.TrackActivity;
import net.osmand.plus.base.BaseOsmAndFragment;
import net.osmand.plus.helpers.AndroidUiHelper;
import net.osmand.plus.helpers.GpxUiHelper;
import net.osmand.plus.measurementtool.NewGpxData.ActionType;
@ -77,11 +78,10 @@ import static net.osmand.plus.OsmandSettings.LANDSCAPE_MIDDLE_RIGHT_CONSTANT;
import static net.osmand.plus.OsmandSettings.MIDDLE_TOP_CONSTANT;
import static net.osmand.plus.helpers.GpxImportHelper.GPX_SUFFIX;
public class MeasurementToolFragment extends Fragment {
public class MeasurementToolFragment extends BaseOsmAndFragment {
public static final String TAG = "MeasurementToolFragment";
private IconsCache iconsCache;
private RecyclerView pointsRv;
private String previousToolBarTitle = "";
private MeasurementToolBarController toolBarController;
@ -179,7 +179,6 @@ public class MeasurementToolFragment extends Fragment {
}
editingCtx.getCommandManager().resetMeasurementLayer(measurementLayer);
iconsCache = mapActivity.getMyApplication().getIconsCache();
nightMode = mapActivity.getMyApplication().getDaynightHelper().isNightModeForMapControls();
final int themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
final int backgroundColor = ContextCompat.getColor(getActivity(),
@ -480,6 +479,11 @@ public class MeasurementToolFragment extends Fragment {
}
}
@Override
public int getStatusBarColorId() {
return R.color.status_bar_transparent_gradient;
}
private MapActivity getMapActivity() {
return (MapActivity) getActivity();
}
@ -492,12 +496,13 @@ public class MeasurementToolFragment extends Fragment {
return null;
}
private Drawable getContentIcon(@DrawableRes int id) {
return iconsCache.getIcon(id, nightMode ? R.color.ctx_menu_info_text_dark : R.color.icon_color);
@Override
protected Drawable getContentIcon(@DrawableRes int id) {
return getIcon(id, nightMode ? R.color.ctx_menu_info_text_dark : R.color.icon_color);
}
private Drawable getActiveIcon(@DrawableRes int id) {
return iconsCache.getIcon(id, nightMode ? R.color.osmand_orange : R.color.color_myloc_distance);
return getIcon(id, nightMode ? R.color.osmand_orange : R.color.color_myloc_distance);
}
private void showProgressBar() {
@ -1041,11 +1046,14 @@ public class MeasurementToolFragment extends Fragment {
private void showPointsListFragment() {
MapActivity mapActivity = getMapActivity();
if (mapActivity != null) {
int screenHeight = AndroidUtils.getScreenHeight(mapActivity) - AndroidUtils.getStatusBarHeight(mapActivity);
boolean transparentStatusBar = Build.VERSION.SDK_INT >= 21;
int statusBarHeight = transparentStatusBar ? 0 : AndroidUtils.getStatusBarHeight(mapActivity);
int screenHeight = AndroidUtils.getScreenHeight(mapActivity) - statusBarHeight;
RecyclerViewFragment fragment = new RecyclerViewFragment();
fragment.setRecyclerView(pointsRv);
fragment.setWidth(upDownRow.getWidth());
fragment.setHeight(screenHeight - upDownRow.getHeight());
fragment.setTransparentStatusBar(transparentStatusBar);
mapActivity.getSupportFragmentManager().beginTransaction()
.add(R.id.fragmentContainer, fragment, RecyclerViewFragment.TAG)
.commitAllowingStateLoss();

View file

@ -25,6 +25,7 @@ public class RecyclerViewFragment extends Fragment {
private RecyclerView rv;
private int height;
private int width;
private boolean transparentStatusBar;
private FrameLayout parent;
private FrameLayout mainView;
@ -40,6 +41,10 @@ public class RecyclerViewFragment extends Fragment {
this.width = width;
}
public void setTransparentStatusBar(boolean transparentStatusBar) {
this.transparentStatusBar = transparentStatusBar;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
@ -68,6 +73,11 @@ public class RecyclerViewFragment extends Fragment {
shadow.setScaleType(ImageView.ScaleType.FIT_XY);
shadow.setImageResource(R.drawable.bg_shadow_onmap);
if (transparentStatusBar) {
AndroidUtils.addStatusBarPadding21v(getActivity(), rv);
rv.setClipToPadding(false);
}
mainView.addView(rv);
mainView.addView(shadow);
parent.addView(mainView);

View file

@ -138,7 +138,17 @@ public class QuickActionListFragment extends BaseOsmAndFragment implements Quick
quickActionRegistry.setUpdatesListener(null);
}
private MapActivity getMapActivity() {
@Override
protected boolean isFullScreenAllowed() {
return false;
}
@Override
public int getStatusBarColorId() {
return getSettings().isLightContent() ? R.color.status_bar_light : R.color.status_bar_dark;
}
private MapActivity getMapActivity() {
return (MapActivity) getActivity();
}

View file

@ -181,7 +181,7 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe
return result;
}
private boolean isWidgetVisible() {
public boolean isWidgetVisible() {
return quickActionsWidget.getVisibility() == View.VISIBLE;
}
@ -195,6 +195,7 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe
updateQuickActionButton(showWidget);
quickActionsWidget.setVisibility(!showWidget ? View.GONE : View.VISIBLE);
mapActivity.updateStatusBarColor();
if (!showWidget) {
quitMovingMarker();

View file

@ -715,7 +715,11 @@ public class MapInfoWidgetsFactory {
}
public boolean updateVisibility(boolean visible) {
return updateVisibility(topBar, visible);
boolean res = updateVisibility(topBar, visible);
if (res) {
map.updateStatusBarColor();
}
return res;
}
public boolean updateVisibility(View v, boolean visible) {

View file

@ -55,6 +55,8 @@ public class MapMarkersWidgetsFactory {
private LatLon loc;
private boolean cachedTopBarVisibility;
public MapMarkersWidgetsFactory(final MapActivity map) {
this.map = map;
helper = map.getMyApplication().getMapMarkersHelper();
@ -151,7 +153,12 @@ public class MapMarkersWidgetsFactory {
}
public boolean updateVisibility(boolean visible) {
return updateVisibility(topBar, visible);
boolean res = updateVisibility(topBar, visible);
if (visible != cachedTopBarVisibility) {
cachedTopBarVisibility = visible;
map.updateStatusBarColor();
}
return res;
}
public boolean updateVisibility(View v, boolean visible) {