Closed oney closed 7 years ago
Really would like to come back and refactor the code and improve performance. As it's just javascript it should support but never tested it out. In the mean time if you'd like to improve/ make a PR please do!
I managed to get this to work with Android by changing the render method of Slider like this.
render() { var {positionOne, positionTwo} = this.state; var {selectedStyle, unselectedStyle, sliderLength} = this.props; var twoMarkers = positionTwo;
var fixedPositionOne = Math.floor(positionOne / this.stepLength) * this.stepLength;
var fixedPositionTwo = Math.floor(positionTwo / this.stepLength) * this.stepLength;
var trackOneLength = fixedPositionOne;
var trackOneStyle = twoMarkers ? unselectedStyle : selectedStyle;
var trackThreeLength = twoMarkers ? sliderLength - (fixedPositionTwo) : 0;
var trackThreeStyle = unselectedStyle;
var trackTwoLength = sliderLength - trackOneLength - trackThreeLength;
var trackTwoStyle = twoMarkers ? selectedStyle : unselectedStyle;
var Marker = this.props.customMarker;
var {slipDisplacement, height, width, borderRadius} = this.props.touchDimensions;
var touchStyle = {
height: height,
width: width,
borderRadius: borderRadius || 0
};
return (
<View style={[styles.container, this.props.containerStyle]}>
<View style={[styles.fullTrack, { width: sliderLength }]}>
<View style={[this.props.trackStyle, styles.track, trackOneStyle, { width: trackOneLength }]} />
<View style={[this.props.trackStyle, styles.track, trackTwoStyle, { width: trackTwoLength }]} />
{ twoMarkers && (
<View style={[this.props.trackStyle, styles.track, trackThreeStyle, { width: trackThreeLength }]} />
) }
<View
style={[styles.touch, touchStyle, {left: -(trackTwoLength + trackThreeLength + width / 2)}]}
ref={component => this._markerOne = component}
{...this._panResponderOne.panHandlers}
>
<Marker
pressed={this.state.onePressed}
value={this.state.valueOne}
markerStyle={this.props.markerStyle}
pressedMarkerStyle={this.props.pressedMarkerStyle}
/>
</View>
{ twoMarkers && (positionOne !== this.props.sliderLength) && (
<View
style={[styles.touch, touchStyle, {left: -(trackThreeLength + width * 1.5)}]}
ref={component => this._markerTwo = component}
{...this._panResponderTwo.panHandlers}
>
<Marker
pressed={this.state.twoPressed}
value={this.state.valueOne}
markerStyle={this.props.markerStyle}
pressedMarkerStyle={this.props.pressedMarkerStyle}
/>
</View>
) }
</View>
</View>
);
}
@chung-nguyen great, could you submit a PR ?
@jrans @sylvainbaronnet Hey guys could you merge that nice PR?
It seems that it doesn't work great in Android.