44f7a00e95
Summary: Both iOS and Android currently support some sort of native pull to refresh control but the API was very different. I tried implementing a component based on PullToRefreshViewAndroid but that works on both platforms. I liked the idea of wrapping the ListView or ScrollView with the PullToRefreshView component and allow styling the refresh view with platform specific props if needed. I also like the fact that 'refreshing' is a controlled prop so there is no need to keep a ref to the component or to the stopRefreshing function. It is a pretty rough start so I'm looking for feedback and ideas to improve on the API before cleaning up everything. On iOS we could probably deprecate the onRefreshStart property of the ScrollView and implement the native stuff in a PullToRefreshViewManager. We could then add props to customize the look of the UIRefreshControl (tintColor). We could also deprecate the Android only component and remove it later. Closes https://github.com/facebook/react-native/pull/4915 Reviewed By: svcscm Differential Revision: D2799246 Pulled By: nicklockwood fb-gh-sync-id: 75872c12143ddbc05cc91900ab4612e477ca5765 |
||
---|---|---|
.. | ||
AnimatedGratuitousApp | ||
Navigator | ||
Thumbnails | ||
UIExplorer | ||
UIExplorer.xcodeproj | ||
UIExplorerIntegrationTests | ||
UIExplorerUnitTests | ||
android/app | ||
AccessibilityAndroidExample.android.js | ||
AccessibilityIOSExample.js | ||
ActionSheetIOSExample.js | ||
ActivityIndicatorIOSExample.js | ||
AdSupportIOSExample.js | ||
AlertExample.js | ||
AlertIOSExample.js | ||
AnimatedExample.js | ||
AppStateIOSExample.js | ||
AssetScaledImageExample.js | ||
AsyncStorageExample.js | ||
BorderExample.js | ||
CameraRollExample.ios.js | ||
CameraRollView.ios.js | ||
ClipboardExample.js | ||
DatePickerIOSExample.js | ||
ExampleTypes.js | ||
GeolocationExample.js | ||
ImageCapInsetsExample.js | ||
ImageEditingExample.js | ||
ImageExample.js | ||
IntentAndroidExample.android.js | ||
LayoutEventsExample.js | ||
LayoutExample.js | ||
ListViewExample.js | ||
ListViewGridLayoutExample.js | ||
ListViewPagingExample.js | ||
MapViewExample.js | ||
ModalExample.js | ||
NavigatorIOSColorsExample.js | ||
NavigatorIOSExample.js | ||
NetInfoExample.js | ||
PanResponderExample.js | ||
PickerIOSExample.js | ||
PointerEventsExample.js | ||
ProgressBarAndroidExample.android.js | ||
ProgressViewIOSExample.js | ||
PullToRefreshViewAndroidExample.android.js | ||
PushNotificationIOSExample.js | ||
RCTRootViewIOSExample.js | ||
README.md | ||
RefreshControlExample.js | ||
ScrollViewExample.js | ||
ScrollViewSimpleExample.js | ||
SegmentedControlIOSExample.js | ||
SetPropertiesExampleApp.js | ||
SliderIOSExample.js | ||
StatusBarIOSExample.js | ||
SwitchAndroidExample.android.js | ||
SwitchIOSExample.js | ||
TabBarIOSExample.js | ||
TextExample.android.js | ||
TextExample.ios.js | ||
TextInputExample.android.js | ||
TextInputExample.ios.js | ||
TimerExample.js | ||
ToastAndroidExample.android.js | ||
ToolbarAndroidExample.android.js | ||
TouchableExample.js | ||
TransformExample.js | ||
TransparentHitTestExample.js | ||
UIExplorerApp.android.js | ||
UIExplorerApp.ios.js | ||
UIExplorerBlock.js | ||
UIExplorerButton.js | ||
UIExplorerList.android.js | ||
UIExplorerList.ios.js | ||
UIExplorerListBase.js | ||
UIExplorerPage.js | ||
UIExplorerTitle.js | ||
VibrationIOSExample.js | ||
ViewExample.js | ||
ViewPagerAndroidExample.android.js | ||
WebViewExample.js | ||
XHRExample.android.js | ||
XHRExample.ios.js | ||
XHRExampleCookies.js | ||
XHRExampleHeaders.js | ||
bunny.png | ||
createExamplePage.js | ||
flux@3x.png | ||
hawk.png | ||
slider-left.png | ||
slider-left@2x.png | ||
slider-right.png | ||
slider-right@2x.png | ||
slider.png | ||
slider@2x.png | ||
uie_thumb_big.png |
README.md
UIExplorer
The UIExplorer is a sample app that showcases React Native views and modules.
Running this app
Before running the app, make sure you ran:
git clone https://github.com/facebook/react-native.git
cd react-native
npm install
Running on iOS
Mac OS and Xcode are required.
- Open
Examples/UIExplorer/UIExplorer.xcodeproj
in Xcode - Hit the Run button
See Running on device if you want to use a physical device.
Running on Android
You'll need to have all the prerequisites (SDK, NDK) for Building React Native installed.
Start an Android emulator (Genymotion is recommended).
cd react-native
./gradlew :Examples:UIExplorer:android:app:installDebug
./packager/packager.sh
Note: Building for the first time can take a while.
Open the UIExplorer app in your emulator.
See Running on Device in case you want to use a physical device.
Built from source
Building the app on both iOS and Android means building the React Native framework from source. This way you're running the latest native and JS code the way you see it in your clone of the github repo.
This is different from apps created using react-native init
which have a dependency on a specific version of React Native JS and native code, declared in a package.json
file (and build.gradle
for Android apps).