mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
b979128c54
Summary: I started working on improving the `StatusBar` API and make it work on Android. I added support for `setColor`, `setTranslucent` (the status bar is still visible but the app can draw under) and `setHidden` on Android. Looking for feedback on how to improve the API before I put more time on this :). Right now I went for a cross platform API and functions that don't exist on a platform are just a no-op but I'm not sure it is the best choice since at the moment what is supported is very different between both platforms. I was wondering what you guys think and if it would be better off as 2 different modules. It is also possible to port some of the features I added for Android to iOS even if there is no 'standard' way to do it. Like `setColor` could be implemented by drawing a colored view under the status bar and translucent by adding/removing some padding. Closes https://github.com/facebook/react-native/pull/5360 Reviewed By: svcscm Differential Revision: D2840417 Pulled By: nicklockwood fb-gh-sync-id: 5c8d988bccf8035341f0efe27e54dd8402c18d24
121 lines
5.1 KiB
Java
121 lines
5.1 KiB
Java
/**
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
|
|
package com.facebook.react.shell;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
|
|
import com.facebook.react.ReactPackage;
|
|
import com.facebook.react.bridge.JavaScriptModule;
|
|
import com.facebook.react.bridge.NativeModule;
|
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
import com.facebook.react.modules.appstate.AppStateModule;
|
|
import com.facebook.react.modules.camera.CameraRollManager;
|
|
import com.facebook.react.modules.camera.ImageEditingManager;
|
|
import com.facebook.react.modules.camera.ImageStoreManager;
|
|
import com.facebook.react.modules.clipboard.ClipboardModule;
|
|
import com.facebook.react.modules.dialog.DialogModule;
|
|
import com.facebook.react.modules.datepicker.DatePickerDialogModule;
|
|
import com.facebook.react.modules.fresco.FrescoModule;
|
|
import com.facebook.react.modules.intent.IntentModule;
|
|
import com.facebook.react.modules.location.LocationModule;
|
|
import com.facebook.react.modules.netinfo.NetInfoModule;
|
|
import com.facebook.react.modules.network.NetworkingModule;
|
|
import com.facebook.react.modules.statusbar.StatusBarModule;
|
|
import com.facebook.react.modules.storage.AsyncStorageModule;
|
|
import com.facebook.react.modules.timepicker.TimePickerDialogModule;
|
|
import com.facebook.react.modules.toast.ToastModule;
|
|
import com.facebook.react.modules.websocket.WebSocketModule;
|
|
import com.facebook.react.uimanager.ViewManager;
|
|
import com.facebook.react.views.art.ARTRenderableViewManager;
|
|
import com.facebook.react.views.art.ARTSurfaceViewManager;
|
|
import com.facebook.react.views.drawer.ReactDrawerLayoutManager;
|
|
import com.facebook.react.views.image.ReactImageManager;
|
|
import com.facebook.react.views.picker.ReactDialogPickerManager;
|
|
import com.facebook.react.views.picker.ReactDropdownPickerManager;
|
|
import com.facebook.react.views.progressbar.ReactProgressBarViewManager;
|
|
import com.facebook.react.views.recyclerview.RecyclerViewBackedScrollViewManager;
|
|
import com.facebook.react.views.scroll.ReactHorizontalScrollViewManager;
|
|
import com.facebook.react.views.scroll.ReactScrollViewManager;
|
|
import com.facebook.react.views.switchview.ReactSwitchManager;
|
|
import com.facebook.react.views.text.ReactRawTextManager;
|
|
import com.facebook.react.views.text.ReactTextViewManager;
|
|
import com.facebook.react.views.text.ReactTextInlineImageViewManager;
|
|
import com.facebook.react.views.text.ReactVirtualTextViewManager;
|
|
import com.facebook.react.views.textinput.ReactTextInputManager;
|
|
import com.facebook.react.views.toolbar.ReactToolbarManager;
|
|
import com.facebook.react.views.view.ReactViewManager;
|
|
import com.facebook.react.views.viewpager.ReactViewPagerManager;
|
|
import com.facebook.react.views.swiperefresh.SwipeRefreshLayoutManager;
|
|
import com.facebook.react.views.webview.ReactWebViewManager;
|
|
|
|
/**
|
|
* Package defining basic modules and view managers.
|
|
*/
|
|
public class MainReactPackage implements ReactPackage {
|
|
|
|
@Override
|
|
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
|
|
return Arrays.<NativeModule>asList(
|
|
new AppStateModule(reactContext),
|
|
new AsyncStorageModule(reactContext),
|
|
new CameraRollManager(reactContext),
|
|
new ClipboardModule(reactContext),
|
|
new DatePickerDialogModule(reactContext),
|
|
new DialogModule(reactContext),
|
|
new FrescoModule(reactContext),
|
|
new ImageEditingManager(reactContext),
|
|
new ImageStoreManager(reactContext),
|
|
new IntentModule(reactContext),
|
|
new LocationModule(reactContext),
|
|
new NetworkingModule(reactContext),
|
|
new NetInfoModule(reactContext),
|
|
new StatusBarModule(reactContext),
|
|
new TimePickerDialogModule(reactContext),
|
|
new ToastModule(reactContext),
|
|
new WebSocketModule(reactContext)
|
|
);
|
|
}
|
|
|
|
@Override
|
|
public List<Class<? extends JavaScriptModule>> createJSModules() {
|
|
return Collections.emptyList();
|
|
}
|
|
|
|
@Override
|
|
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
|
|
return Arrays.<ViewManager>asList(
|
|
ARTRenderableViewManager.createARTGroupViewManager(),
|
|
ARTRenderableViewManager.createARTShapeViewManager(),
|
|
ARTRenderableViewManager.createARTTextViewManager(),
|
|
new ARTSurfaceViewManager(),
|
|
new ReactDialogPickerManager(),
|
|
new ReactDrawerLayoutManager(),
|
|
new ReactDropdownPickerManager(),
|
|
new ReactHorizontalScrollViewManager(),
|
|
new ReactImageManager(),
|
|
new ReactProgressBarViewManager(),
|
|
new ReactRawTextManager(),
|
|
new ReactScrollViewManager(),
|
|
new ReactSwitchManager(),
|
|
new ReactTextInlineImageViewManager(),
|
|
new ReactTextInputManager(),
|
|
new ReactTextViewManager(),
|
|
new ReactToolbarManager(),
|
|
new ReactViewManager(),
|
|
new ReactViewPagerManager(),
|
|
new ReactVirtualTextViewManager(),
|
|
new ReactWebViewManager(),
|
|
new RecyclerViewBackedScrollViewManager(),
|
|
new SwipeRefreshLayoutManager());
|
|
}
|
|
}
|