diff --git a/WheelCurvedPicker.android.js b/WheelCurvedPicker.android.js
index 2cfe37c..1f6397e 100644
--- a/WheelCurvedPicker.android.js
+++ b/WheelCurvedPicker.android.js
@@ -1,95 +1,93 @@
-'use strict';
+'use strict'
-import React from 'react';
-import {
- View,
- ColorPropType,
- requireNativeComponent,
-} from 'react-native';
+import React from 'react'
+import PropTypes from 'prop-types'
+import { View, ColorPropType, requireNativeComponent } from 'react-native'
+export default class WheelCurvedPicker extends React.Component {
+ static propTypes = {
+ ...View.propTypes,
-var WheelCurvedPicker = React.createClass ({
+ data: PropTypes.array,
- propTypes: {
- ...View.propTypes,
+ textColor: ColorPropType,
- data: React.PropTypes.array,
+ indicatorColor: ColorPropType,
- textColor: ColorPropType,
+ textSize: PropTypes.number,
- textSize: React.PropTypes.number,
+ itemStyle: PropTypes.object,
- itemStyle: React.PropTypes.object,
+ itemSpace: PropTypes.number,
- itemSpace: React.PropTypes.number,
+ onValueChange: PropTypes.func,
- onValueChange: React.PropTypes.func,
+ selectedValue: PropTypes.any,
- selectedValue: React.PropTypes.any,
+ selectedIndex: PropTypes.number
+ }
- selectedIndex: React.PropTypes.number,
- },
+ static defaultProps = {
+ itemStyle: { color: 'white', fontSize: 26 },
+ itemSpace: 20
+ }
- getDefaultProps(): Object {
- return {
- itemStyle : {color:"white", fontSize:26},
- itemSpace: 20,
- };
- },
+ constructor(...params) {
+ super(...params)
- getInitialState: function() {
- return this._stateFromProps(this.props);
- },
+ this.state = this._stateFromProps(this.props)
+ }
- componentWillReceiveProps: function(nextProps) {
- this.setState(this._stateFromProps(nextProps));
- },
+ componentWillReceiveProps(nextProps) {
+ this.setState(this._stateFromProps(nextProps))
+ }
- _stateFromProps: function(props) {
- var selectedIndex = 0;
- var items = [];
- React.Children.forEach(props.children, function (child, index) {
- if (child.props.value === props.selectedValue) {
- selectedIndex = index;
- }
- items.push({value: child.props.value, label: child.props.label});
- });
+ _stateFromProps(props) {
+ var selectedIndex = 0
+ var items = []
+ React.Children.forEach(props.children, function(child, index) {
+ if (child.props.value === props.selectedValue) {
+ selectedIndex = index
+ }
+ items.push({ value: child.props.value, label: child.props.label })
+ })
- var textSize = props.itemStyle.fontSize
- var textColor = props.itemStyle.color
+ var textSize = props.itemStyle.fontSize
+ var textColor = props.itemStyle.color
- return {selectedIndex, items, textSize, textColor};
- },
+ return { selectedIndex, items, textSize, textColor }
+ }
- _onValueChange: function(e: Event) {
- if (this.props.onValueChange) {
- this.props.onValueChange(e.nativeEvent.data);
- }
- },
+ _onValueChange(e: Event) {
+ if (this.props.onValueChange) {
+ this.props.onValueChange(e.nativeEvent.data)
+ }
+ }
- render() {
- return ;
- }
-});
+ render() {
+ return (
+
+ )
+ }
+}
-WheelCurvedPicker.Item = React.createClass({
- propTypes: {
- value: React.PropTypes.any, // string or integer basically
- label: React.PropTypes.string,
- },
+WheelCurvedPicker.Item = class extends React.Component {
+ static propTypes: {
+ value: PropTypes.any, // string or integer basically
+ label: PropTypes.string
+ }
- render: function() {
- // These items don't get rendered directly.
- return null;
- },
-});
+ render() {
+ // These items don't get rendered directly.
+ return null
+ }
+}
-var WheelCurvedPickerNative = requireNativeComponent('WheelCurvedPicker', WheelCurvedPicker);
-
-module.exports = WheelCurvedPicker;
+let WheelCurvedPickerNative = requireNativeComponent('WheelCurvedPicker', WheelCurvedPicker)
diff --git a/android/build.gradle b/android/build.gradle
index f0a74ba..51ea21f 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
android {
compileSdkVersion 23
- buildToolsVersion "23.0.1"
+ buildToolsVersion '25.0.0'
defaultConfig {
minSdkVersion 16
targetSdkVersion 22
@@ -16,6 +16,6 @@ android {
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
- compile "cn.aigestudio.wheelpicker:WheelPicker:1.0.3"
+ compile "cn.aigestudio.wheelpicker:WheelPicker:1.1.2"
compile 'com.facebook.react:react-native:+'
}
diff --git a/android/src/main/java/com/zyu/ReactNativeWheelPickerPackage.java b/android/src/main/java/com/zyu/ReactNativeWheelPickerPackage.java
index 1c692fc..f2354ac 100644
--- a/android/src/main/java/com/zyu/ReactNativeWheelPickerPackage.java
+++ b/android/src/main/java/com/zyu/ReactNativeWheelPickerPackage.java
@@ -19,11 +19,6 @@ public List createNativeModules(ReactApplicationContext reactConte
return Collections.emptyList();
}
- @Override
- public List> createJSModules() {
- return Collections.emptyList();
- }
-
@Override
public List createViewManagers(ReactApplicationContext reactContext) {
return Arrays.asList(
diff --git a/android/src/main/java/com/zyu/ReactWheelCurvedPicker.java b/android/src/main/java/com/zyu/ReactWheelCurvedPicker.java
index 126e866..44c4db2 100644
--- a/android/src/main/java/com/zyu/ReactWheelCurvedPicker.java
+++ b/android/src/main/java/com/zyu/ReactWheelCurvedPicker.java
@@ -1,15 +1,6 @@
package com.zyu;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.LinearGradient;
-import android.graphics.Paint;
-import android.graphics.Shader;
-import android.os.SystemClock;
-import android.util.AttributeSet;
-
-import com.aigestudio.wheelpicker.core.AbstractWheelPicker;
-import com.aigestudio.wheelpicker.view.WheelCurvedPicker;
+import com.aigestudio.wheelpicker.WheelPicker;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.WritableMap;
@@ -23,52 +14,46 @@
/**
* @author Sam Yu
*/
-public class ReactWheelCurvedPicker extends WheelCurvedPicker {
+public class ReactWheelCurvedPicker extends WheelPicker{
private final EventDispatcher mEventDispatcher;
private List mValueData;
+ private int mState = SCROLL_STATE_IDLE;
+
+ public void setIndicatorColor(Integer indicatorColor) {
+ setIndicator(true);
+ super.setIndicatorColor(indicatorColor);
+ }
public ReactWheelCurvedPicker(ReactContext reactContext) {
super(reactContext);
mEventDispatcher = reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher();
setOnWheelChangeListener(new OnWheelChangeListener() {
@Override
- public void onWheelScrolling(float deltaX, float deltaY) {
+ public void onWheelScrolled(int offset) {
+
}
@Override
- public void onWheelSelected(int index, String data) {
- if (mValueData != null && index < mValueData.size()) {
+ public void onWheelSelected(int position) {
+ if (mValueData != null && position < mValueData.size()) {
mEventDispatcher.dispatchEvent(
- new ItemSelectedEvent(getId(), mValueData.get(index)));
+ new ItemSelectedEvent(getId(), mValueData.get(position)));
}
+
}
@Override
public void onWheelScrollStateChanged(int state) {
+ mState = state;
+
}
});
}
@Override
- protected void drawForeground(Canvas canvas) {
- super.drawForeground(canvas);
-
- Paint paint = new Paint();
- paint.setColor(Color.WHITE);
- int colorFrom = 0x00FFFFFF;//Color.BLACK;
- int colorTo = Color.WHITE;
- LinearGradient linearGradientShader = new LinearGradient(rectCurItem.left, rectCurItem.top, rectCurItem.right/2, rectCurItem.top, colorFrom, colorTo, Shader.TileMode.MIRROR);
- paint.setShader(linearGradientShader);
- canvas.drawLine(rectCurItem.left, rectCurItem.top, rectCurItem.right, rectCurItem.top, paint);
- canvas.drawLine(rectCurItem.left, rectCurItem.bottom, rectCurItem.right, rectCurItem.bottom, paint);
- }
-
- @Override
- public void setItemIndex(int index) {
- super.setItemIndex(index);
- unitDeltaTotal = 0;
- mHandler.post(this);
+ public void setSelectedItemPosition(int index) {
+ super.setSelectedItemPosition(index);
}
public void setValueData(List data) {
@@ -76,7 +61,13 @@ public void setValueData(List data) {
}
public int getState() {
- return state;
+ return mState;
+ }
+
+ @Override
+ public void setData(List data) {
+ super.setData(data);
+ this.postInvalidate();
}
}
diff --git a/android/src/main/java/com/zyu/ReactWheelCurvedPickerManager.java b/android/src/main/java/com/zyu/ReactWheelCurvedPickerManager.java
index cd0e5c4..d439cd7 100644
--- a/android/src/main/java/com/zyu/ReactWheelCurvedPickerManager.java
+++ b/android/src/main/java/com/zyu/ReactWheelCurvedPickerManager.java
@@ -2,7 +2,7 @@
import android.graphics.Color;
-import com.aigestudio.wheelpicker.core.AbstractWheelPicker;
+import com.aigestudio.wheelpicker.WheelPicker;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.common.MapBuilder;
@@ -27,10 +27,12 @@ public class ReactWheelCurvedPickerManager extends SimpleViewManager