Fix RP shadow and landscape

This commit is contained in:
crimean 2019-02-18 16:11:40 +03:00
parent dc55d30ae7
commit d9bf234bf3
2 changed files with 31 additions and 15 deletions

View file

@ -12,6 +12,20 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
<FrameLayout
android:id="@+id/top_shadow"
android:layout_width="match_parent"
android:layout_height="16dp">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:scaleType="fitXY"
android:src="@drawable/bg_shadow_onmap" />
</FrameLayout>
<LinearLayout <LinearLayout
android:id="@+id/route_menu_top_shadow_all" android:id="@+id/route_menu_top_shadow_all"
android:layout_width="match_parent" android:layout_width="match_parent"

View file

@ -51,7 +51,6 @@ import net.osmand.router.TransportRoutePlanner.TransportRouteResultSegment;
import java.util.List; import java.util.List;
import static net.osmand.plus.mapcontextmenu.MapContextMenuFragment.CURRENT_Y_UNDEFINED; import static net.osmand.plus.mapcontextmenu.MapContextMenuFragment.CURRENT_Y_UNDEFINED;
import static net.osmand.plus.mapcontextmenu.MenuBuilder.SHADOW_HEIGHT_TOP_DP;
public class MapRouteInfoMenuFragment extends BaseOsmAndFragment { public class MapRouteInfoMenuFragment extends BaseOsmAndFragment {
public static final String TAG = "MapRouteInfoMenuFragment"; public static final String TAG = "MapRouteInfoMenuFragment";
@ -83,7 +82,6 @@ public class MapRouteInfoMenuFragment extends BaseOsmAndFragment {
private int shadowHeight; private int shadowHeight;
private int screenHeight; private int screenHeight;
private int viewHeight; private int viewHeight;
private int topShadowMargin;
@Nullable @Nullable
private MapActivity getMapActivity() { private MapActivity getMapActivity() {
@ -111,10 +109,9 @@ public class MapRouteInfoMenuFragment extends BaseOsmAndFragment {
processScreenHeight(container); processScreenHeight(container);
portrait = AndroidUiHelper.isOrientationPortrait(mapActivity); portrait = AndroidUiHelper.isOrientationPortrait(mapActivity);
topShadowMargin = AndroidUtils.dpToPx(mapActivity, 9f);
menu = mapActivity.getMapLayers().getMapControlsLayer().getMapRouteInfoMenu(); menu = mapActivity.getMapLayers().getMapControlsLayer().getMapRouteInfoMenu();
shadowHeight = AndroidUtils.dpToPx(mapActivity, SHADOW_HEIGHT_TOP_DP); shadowHeight = AndroidUtils.getStatusBarHeight(mapActivity);
topScreenPosY = addStatusBarHeightIfNeeded(0); topScreenPosY = addStatusBarHeightIfNeeded(0);
minHalfY = viewHeight - (int) (viewHeight * .75f); minHalfY = viewHeight - (int) (viewHeight * .75f);
@ -131,6 +128,9 @@ public class MapRouteInfoMenuFragment extends BaseOsmAndFragment {
modesLayout = view.findViewById(R.id.modes_layout); modesLayout = view.findViewById(R.id.modes_layout);
nightMode = mapActivity.getMyApplication().getDaynightHelper().isNightModeForMapControls(); nightMode = mapActivity.getMyApplication().getDaynightHelper().isNightModeForMapControls();
View topShadowView = mainView.findViewById(R.id.top_shadow);
topShadowView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, shadowHeight));
view.setOnClickListener(new View.OnClickListener() { view.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
@ -147,15 +147,21 @@ public class MapRouteInfoMenuFragment extends BaseOsmAndFragment {
buildBottomView(); buildBottomView();
if (!portrait) { if (!portrait) {
topShadowView.setVisibility(View.GONE);
view.findViewById(R.id.app_modes_fold_container).setVisibility(View.GONE);
final TypedValue typedValueAttr = new TypedValue(); final TypedValue typedValueAttr = new TypedValue();
mapActivity.getTheme().resolveAttribute(R.attr.left_menu_view_bg, typedValueAttr, true); mapActivity.getTheme().resolveAttribute(R.attr.left_menu_view_bg, typedValueAttr, true);
mainView.setBackgroundResource(typedValueAttr.resourceId); mainView.setBackgroundResource(typedValueAttr.resourceId);
mainView.setLayoutParams(new FrameLayout.LayoutParams(getResources().getDimensionPixelSize(R.dimen.dashboard_land_width), ViewGroup.LayoutParams.MATCH_PARENT)); mainView.setLayoutParams(new FrameLayout.LayoutParams(getResources().getDimensionPixelSize(R.dimen.dashboard_land_width), ViewGroup.LayoutParams.MATCH_PARENT));
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(AndroidUtils.dpToPx(mapActivity, 345f), ViewGroup.LayoutParams.WRAP_CONTENT); int widthNoShadow = AndroidUtils.dpToPx(mapActivity, 345f);
modesLayoutToolbar.setLayoutParams(new FrameLayout.LayoutParams(widthNoShadow, ViewGroup.LayoutParams.WRAP_CONTENT));
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(widthNoShadow, ViewGroup.LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.BOTTOM; params.gravity = Gravity.BOTTOM;
view.findViewById(R.id.control_buttons).setLayoutParams(params); view.findViewById(R.id.control_buttons).setLayoutParams(params);
View appModesView = view.findViewById(R.id.app_modes);
appModesView.setPadding(0, 0, appModesView.getPaddingRight(), 0);
} }
runLayoutListener(); runLayoutListener();
@ -363,7 +369,7 @@ public class MapRouteInfoMenuFragment extends BaseOsmAndFragment {
@Override @Override
public int getStatusBarColorId() { public int getStatusBarColorId() {
if (view != null) { if (view != null) {
if (menu != null && (getViewY() <= topShadowMargin || !portrait)) { if (menu != null && (getViewY() <= 0 || !portrait)) {
if (Build.VERSION.SDK_INT >= 23) { if (Build.VERSION.SDK_INT >= 23) {
view.setSystemUiVisibility(view.getSystemUiVisibility() | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); view.setSystemUiVisibility(view.getSystemUiVisibility() | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
} }
@ -397,7 +403,7 @@ public class MapRouteInfoMenuFragment extends BaseOsmAndFragment {
return; return;
} }
int y = getViewY(); int y = getViewY();
if (y < topShadowMargin || !portrait) { if (y < 0 || !portrait) {
ViewGroup parent = (ViewGroup) modesLayout.getParent(); ViewGroup parent = (ViewGroup) modesLayout.getParent();
if (parent != null && parent != modesLayoutToolbarContainer) { if (parent != null && parent != modesLayoutToolbarContainer) {
parent.removeView(modesLayout); parent.removeView(modesLayout);
@ -426,13 +432,8 @@ public class MapRouteInfoMenuFragment extends BaseOsmAndFragment {
} }
private int getFullScreenTopPosY() { private int getFullScreenTopPosY() {
MapActivity mapActivity = getMapActivity();
if (mapActivity != null) {
return topShadowMargin;
} else {
return 0; return 0;
} }
}
private int addStatusBarHeightIfNeeded(int res) { private int addStatusBarHeightIfNeeded(int res) {
MapActivity mapActivity = getMapActivity(); MapActivity mapActivity = getMapActivity();
@ -899,7 +900,8 @@ public class MapRouteInfoMenuFragment extends BaseOsmAndFragment {
boolean landscapeLayout = !portraitMode; boolean landscapeLayout = !portraitMode;
boolean nightMode = ctx.getMyApplication().getDaynightHelper().isNightModeForMapControls(); boolean nightMode = ctx.getMyApplication().getDaynightHelper().isNightModeForMapControls();
if (!landscapeLayout) { if (!landscapeLayout) {
AndroidUtils.setBackground(ctx, mainView, nightMode, R.drawable.route_info_menu_bg_light, R.drawable.route_info_menu_bg_dark); View menuView = view.findViewById(R.id.route_menu_top_shadow_all);
AndroidUtils.setBackground(ctx, menuView, nightMode, R.color.route_info_bg_light, R.color.route_info_bg_dark);
} else { } else {
AndroidUtils.setBackground(ctx, mainView, nightMode, R.drawable.route_info_menu_bg_left_light, R.drawable.route_info_menu_bg_left_dark); AndroidUtils.setBackground(ctx, mainView, nightMode, R.drawable.route_info_menu_bg_left_light, R.drawable.route_info_menu_bg_left_dark);
} }