123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- package com.reactnativenavigation.layouts;
-
- import android.annotation.TargetApi;
- import android.app.Activity;
- import android.content.Context;
- import android.graphics.Color;
- import android.os.Build;
- import android.os.Bundle;
- import android.support.annotation.ColorInt;
- import android.view.Window;
- import android.widget.LinearLayout;
-
- import com.facebook.react.ReactInstanceManager;
- import com.reactnativenavigation.controllers.ScreenParams;
- import com.reactnativenavigation.controllers.ScreenStyleParams;
- import com.reactnativenavigation.utils.SdkSupports;
- import com.reactnativenavigation.views.ContentView;
- import com.reactnativenavigation.views.ScrollDirectionListener;
- import com.reactnativenavigation.views.TitleBar;
- import com.reactnativenavigation.views.TitleBarButton;
-
- import java.util.List;
-
- import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
- import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
-
- public class ScreenLayout extends LinearLayout implements ScrollDirectionListener.OnScrollChanged {
-
- private final ReactInstanceManager reactInstanceManager;
- private final String moduleName;
- private final Bundle passProps;
- private final List<TitleBarButton.Params> buttons;
- private ContentView contentView;
- private TopBar topBar;
-
- public ScreenLayout(Context context, ReactInstanceManager reactInstanceManager, ScreenParams screenParams) {
- super(context);
- this.reactInstanceManager = reactInstanceManager;
- moduleName = screenParams.moduleName;
- passProps = screenParams.passProps;
- buttons = screenParams.buttons;
- setOrientation(VERTICAL);
-
- createViews();
- setStyle(screenParams.styleParams);
- }
-
- private void createViews() {
- addTopBar();
- addTitleBarAndSetButtons();
- addContentView();
- }
-
- private void addTitleBarAndSetButtons() {
- TitleBar titleBar = new TitleBar(getContext());
- titleBar.setButtons(buttons);
- topBar.addView(titleBar);
- }
-
- private void addTopBar() {
- topBar = new TopBar(getContext());
- addView(topBar, new LinearLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT));
- }
-
- private void addContentView() {
- contentView = new ContentView(getContext(), reactInstanceManager, moduleName, passProps, this);
- addView(contentView, new LayoutParams(MATCH_PARENT, MATCH_PARENT));
- }
-
- private void setStyle(ScreenStyleParams styleParams) {
- setStatusBarColor(styleParams.statusBarColor);
- setTopBarColor(styleParams.topBarColor);
- setNavigationBarColor(styleParams.navigationBarColor);
- setTitleBarHidden(styleParams.titleBarHidden);
- }
-
- @TargetApi(Build.VERSION_CODES.LOLLIPOP)
- private void setStatusBarColor(@ColorInt int statusBarColor) {
- if (!SdkSupports.lollipop()) {
- return;
- }
-
- final Activity context = (Activity) getContext();
- final Window window = context.getWindow();
- if (statusBarColor > 0) {
- window.setStatusBarColor(statusBarColor);
- } else {
- window.setStatusBarColor(Color.BLACK);
- }
- }
-
- private void setTopBarColor(@ColorInt int topBarColor) {
- if (topBarColor > 0) {
- topBar.setBackgroundColor(topBarColor);
- }
- }
-
- @TargetApi(Build.VERSION_CODES.LOLLIPOP)
- public void setNavigationBarColor(int navigationBarColor) {
- if (!SdkSupports.lollipop()) {
- return;
- }
-
- final Activity context = (Activity) getContext();
- final Window window = context.getWindow();
- if (navigationBarColor > 0) {
- window.setNavigationBarColor(navigationBarColor);
- } else {
- window.setNavigationBarColor(Color.BLACK);
- }
- }
-
- private void setTitleBarHidden(boolean titleBarHidden) {
- if (titleBarHidden) {
-
- }
- }
-
- @Override
- public void onScrollChanged(ScrollDirectionListener.Direction direction) {
-
- }
- }
|