[android] Transparent statusbar.

This commit is contained in:
Roman Romanov 2016-11-03 13:19:38 +04:00 committed by Ilya Grechuhin
parent 3e78928cbb
commit b26eaabd8a
15 changed files with 76 additions and 24 deletions

View file

@ -10,11 +10,13 @@
<item name="android:textColorSecondary">@color/text_dark_subtitle</item>
<item name="android:windowBackground">?windowBackgroundForced</item>
<item name="android:colorPrimaryDark" tools:targetApi="lollipop">@color/bg_statusbar</item>
<item name="android:windowDrawsSystemBarBackgrounds" tools:targetApi="lollipop">true</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:fontFamily" tools:targetApi="jelly_bean">@string/robotoRegular</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowActionBarOverlay">true</item>
<item name="clickableBackground">?selectableItemBackground</item>
<item name="windowActionBar">false</item>
<item name="windowActionBarOverlay">true</item>
<item name="alertDialogTheme">@style/MwmTheme.DialogFragment</item>
<item name="windowBackgroundForced">@color/bg_window</item>
@ -22,7 +24,6 @@
<item name="cardBackground">@color/bg_cards</item>
<item name="fullscreenDialogTheme">@style/MwmTheme.DialogFragment.Fullscreen</item>
<item name="statusBar">@color/bg_statusbar</item>
<item name="colorPrimary">@color/bg_primary</item>
<item name="colorControlNormal">?secondary</item>
<item name="colorAccent">@color/base_accent</item>
@ -95,11 +96,13 @@
<item name="android:textColorSecondary">@color/text_light_subtitle</item>
<item name="android:windowBackground">?windowBackgroundForced</item>
<item name="android:colorPrimaryDark" tools:targetApi="lollipop">?statusBar</item>
<item name="android:windowDrawsSystemBarBackgrounds" tools:targetApi="lollipop">true</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:fontFamily" tools:targetApi="jelly_bean">@string/robotoRegular</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowActionBarOverlay">true</item>
<item name="clickableBackground">?selectableItemBackground</item>
<item name="windowActionBar">false</item>
<item name="windowActionBarOverlay">true</item>
<item name="alertDialogTheme">@style/MwmTheme.Night.DialogFragment</item>
<item name="windowBackgroundForced">@color/bg_window_night</item>
@ -107,7 +110,6 @@
<item name="cardBackground">@color/bg_cards_night</item>
<item name="fullscreenDialogTheme">@style/MwmTheme.DialogFragment.Fullscreen.Night</item>
<item name="statusBar">@color/bg_statusbar_night</item>
<item name="colorPrimary">@color/bg_primary_night</item>
<item name="colorControlNormal">?secondary</item>
<item name="colorAccent">@color/base_accent_night</item>

View file

@ -78,6 +78,7 @@
<item name="android:textViewStyle">@style/MwmWidget.TextView</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:fontFamily" tools:targetApi="jelly_bean">@string/robotoRegular</item>
<item name="android:windowTranslucentStatus" tools:targetApi="kitkat">true</item>
</style>
<style name="MwmTheme.DialogFragment.Fullscreen.Night" parent="Theme.AppCompat">
@ -91,6 +92,7 @@
<item name="android:textViewStyle">@style/MwmWidget.TextView</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:fontFamily" tools:targetApi="jelly_bean">@string/robotoRegular</item>
<item name="android:windowTranslucentStatus" tools:targetApi="kitkat">true</item>
</style>
<style name="MwmTheme.DialogFragment.Fullscreen.Translucent">
@ -169,9 +171,6 @@
<item name="android:colorPrimaryDark" tools:targetApi="lollipop">@android:color/black</item>
<item name="android:timePickerStyle" tools:targetApi="lollipop">@style/MwmWidget.Editor.TimePicker</item>
<item name="android:windowBackground">@null</item>
<item name="windowActionBar">false</item>
<item name="windowActionBarOverlay">true</item>
<item name="android:windowActionBarOverlay">true</item>
</style>
<style name="MwmTheme.Night.FullScreenGalleryActivity">
@ -179,9 +178,6 @@
<item name="android:colorPrimaryDark" tools:targetApi="lollipop">@android:color/black</item>
<item name="android:timePickerStyle" tools:targetApi="lollipop">@style/MwmWidget.Editor.TimePicker</item>
<item name="android:windowBackground">@null</item>
<item name="windowActionBar">false</item>
<item name="windowActionBarOverlay">true</item>
<item name="android:windowActionBarOverlay">true</item>
</style>
</resources>

View file

@ -451,6 +451,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
{
mPositionChooser = findViewById(R.id.position_chooser);
final Toolbar toolbar = (Toolbar) mPositionChooser.findViewById(R.id.toolbar_position_chooser);
UiUtils.extendViewWithStatusBar(toolbar);
UiUtils.showHomeUpButton(toolbar);
toolbar.setNavigationOnClickListener(new OnClickListener()
{

View file

@ -24,6 +24,7 @@ public class BaseMwmExtraTitleActivity extends BaseMwmFragmentActivity
title = bundle.getString(EXTRA_TITLE);
}
Toolbar toolbar = getToolbar();
UiUtils.extendViewWithStatusBar(toolbar);
toolbar.setTitle(title);
UiUtils.showHomeUpButton(toolbar);
displayToolbarAsActionBar();

View file

@ -3,6 +3,7 @@ package com.mapswithme.maps.base;
import android.app.Activity;
import android.content.Intent;
import android.media.AudioManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
@ -11,6 +12,7 @@ import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.WindowManager;
import com.mapswithme.maps.MwmApplication;
import com.mapswithme.maps.R;
@ -50,6 +52,8 @@ public class BaseMwmFragmentActivity extends AppCompatActivity
mBaseDelegate.onCreate();
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
final int layoutId = getContentLayoutResId();
if (layoutId != 0)

View file

@ -4,6 +4,7 @@ import android.os.Bundle;
import android.support.annotation.StringRes;
import android.support.v4.app.Fragment;
import android.support.v7.widget.Toolbar;
import com.mapswithme.maps.R;
import com.mapswithme.util.UiUtils;
@ -15,6 +16,7 @@ public abstract class BaseToolbarActivity extends BaseMwmFragmentActivity
super.onCreate(state);
Toolbar toolbar = getToolbar();
UiUtils.extendViewWithStatusBar(toolbar);
int title = getToolbarTitle();
if (title == 0)
toolbar.setTitle(getTitle());

View file

@ -3,7 +3,6 @@ package com.mapswithme.maps.gallery;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.StyleRes;
@ -66,8 +65,6 @@ public class FullScreenGalleryActivity extends BaseMwmFragmentActivity
toolbar.setTitle("");
UiUtils.showHomeUpButton(toolbar);
displayToolbarAsActionBar();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
mUserBlock = findViewById(R.id.rl__user_block);
mDescription = (TextView) findViewById(R.id.tv__description);

View file

@ -98,6 +98,9 @@ public class NavigationController
View shadow = topFrame.findViewById(R.id.shadow_top);
UiUtils.showIf(Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP, shadow);
UiUtils.extendViewWithStatusBar(mStreetFrame);
UiUtils.extendViewMarginWithStatusBar(turnFrame);
// Bottom frame
mSpeedValue = (TextView) mBottomFrame.findViewById(R.id.speed_value);
mSpeedUnits = (TextView) mBottomFrame.findViewById(R.id.speed_dimen);

View file

@ -1,6 +1,5 @@
package com.mapswithme.maps.routing;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.widget.ImageView;
@ -8,7 +7,6 @@ import android.widget.ImageView;
import com.mapswithme.maps.MwmActivity;
import com.mapswithme.maps.R;
import com.mapswithme.maps.bookmarks.data.MapObject;
import com.mapswithme.util.ThemeUtils;
import com.mapswithme.util.UiUtils;
public class RoutingPlanInplaceController extends RoutingPlanController
@ -17,17 +15,9 @@ public class RoutingPlanInplaceController extends RoutingPlanController
private Boolean mSlotsRestoredState;
private void updateStatusBarColor()
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
mActivity.getWindow().setStatusBarColor(ThemeUtils.getColor(mActivity, UiUtils.isVisible(mFrame) ? R.attr.statusBar
: android.R.attr.colorPrimaryDark));
}
public RoutingPlanInplaceController(MwmActivity activity)
{
super(activity.findViewById(R.id.routing_plan_frame), activity);
updateStatusBarColor();
}
public void show(boolean show)
@ -47,7 +37,6 @@ public class RoutingPlanInplaceController extends RoutingPlanController
}
UiUtils.showIf(show, mFrame);
updateStatusBarColor();
if (show)
updatePoints();
}

View file

@ -27,6 +27,8 @@ public class ToolbarController
{
mActivity = activity;
mToolbar = (Toolbar) root.findViewById(getToolbarId());
UiUtils.extendViewWithStatusBar(mToolbar);
setupNavigationListener();
}

View file

@ -47,6 +47,7 @@ class BottomPlacePageAnimationController extends BasePlacePageAnimationControlle
final Toolbar toolbar = (Toolbar) mLayoutToolbar.findViewById(R.id.toolbar);
if (toolbar != null)
{
UiUtils.extendViewWithStatusBar(toolbar);
UiUtils.showHomeUpButton(toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener()
{

View file

@ -85,6 +85,7 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
private void initToolbar(View view)
{
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
UiUtils.extendViewWithStatusBar(toolbar);
final TextView textView = (TextView) toolbar.findViewById(R.id.tv__save);
textView.setOnClickListener(new View.OnClickListener()
{

View file

@ -79,6 +79,7 @@ public class EditDescriptionFragment extends BaseMwmDialogFragment
private void initToolbar(View view)
{
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
UiUtils.extendViewWithStatusBar(toolbar);
final TextView textView = (TextView) toolbar.findViewById(R.id.tv__save);
textView.setOnClickListener(new View.OnClickListener()
{

View file

@ -16,6 +16,7 @@ class LeftPlacePageAnimationController extends BasePlacePageAnimationController
LeftPlacePageAnimationController(@NonNull PlacePageView placePage)
{
super(placePage);
UiUtils.extendViewPaddingWithStatusBar(mPreview);
}
@Override

View file

@ -23,6 +23,7 @@ import android.text.TextUtils;
import android.view.MotionEvent;
import android.view.Surface;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
@ -359,6 +360,56 @@ public final class UiUtils
return viewRect.contains(x, y);
}
private static int getStatusBarHeight(Context context)
{
int result = 0;
Resources res = context.getResources();
int resourceId = res.getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0)
result = res.getDimensionPixelSize(resourceId);
return result;
}
public static void extendViewWithStatusBar(View view)
{
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT)
return;
int statusBarHeight = getStatusBarHeight(view.getContext());
ViewGroup.LayoutParams lp = view.getLayoutParams();
lp.height += statusBarHeight;
view.setLayoutParams(lp);
extendViewPaddingTop(view, statusBarHeight);
}
public static void extendViewPaddingWithStatusBar(View view)
{
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT)
return;
int statusBarHeight = getStatusBarHeight(view.getContext());
extendViewPaddingTop(view, statusBarHeight);
}
private static void extendViewPaddingTop(View view, int statusBarHeight)
{
view.setPadding(view.getPaddingLeft(), view.getPaddingTop() + statusBarHeight,
view.getPaddingRight(), view.getPaddingBottom());
}
public static void extendViewMarginWithStatusBar(View view)
{
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT)
return;
int statusBarHeight = getStatusBarHeight(view.getContext());
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
int margin = lp.getMarginStart();
lp.setMargins(margin, margin + statusBarHeight, margin, margin);
view.setLayoutParams(lp);
}
// utility class
private UiUtils() {}
}