React Native Color Picker Library use reanimated 2
yarn add @nghinv/react-native-color-picker
or
npm install @nghinv/react-native-color-picker
- peerDependencies
yarn add react-native-gesture-handler react-native-reanimated react-native-linear-gradient react-native-svg
import React, { useState, useEffect } from 'react';
import { View, StyleSheet } from 'react-native';
import { useSharedValue } from 'react-native-reanimated';
import ColorPicker, { ColorAnimated } from '@nghinv/react-native-color-picker';
import { colors, useHsv } from '@nghinv/react-native-animated';
function App() {
const [initialColor, setColor] = useState('#ffff55');
const hsv = useHsv(0);
const isGestureActive = useSharedValue(false);
useEffect(() => {
const hsvValue = colors.hex2Hsv(initialColor);
hsv.h.value = hsvValue.h;
hsv.s.value = hsvValue.s;
hsv.v.value = hsvValue.v;
}, [initialColor, hsv]);
return (
<View style={styles.container}>
<ColorAnimated
hsv={hsv}
isGestureActive={isGestureActive}
style={styles.currentColor}
/>
<ColorPicker
size={240}
hsv={hsv}
isGestureActive={isGestureActive}
// initialColor={initialColor}
// resetSaturationWhenHueChange
onColorChange={(color) => {
console.log('onColorChange', color);
}}
onColorConfirm={(color) => {
console.log('onColorConfirm', color);
}}
/>
<Slider
width={240}
style={{ marginTop: 32 }}
value={hsv.value.v}
onChange={onChange}
/>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
paddingHorizontal: 16,
},
currentColor: {
width: 80,
height: 40,
borderRadius: 20,
marginBottom: 24,
borderWidth: 2,
borderColor: 'white',
},
});
export default App;
Property | Type | Default | Description |
---|---|---|---|
initialColor | string |
#ffffff |
|
size | number |
screen_width - 64 |
|
strokeWidth | number |
36 |
|
rectSizeSpace | number |
8 |
|
disabled | boolean |
false |
|
onColorChange | (color: string) => void |
undefined |
|
onColorConfirm | (color: string) => void |
undefined |
|
hsv | HsvAnimated |
undefined |
|
isGestureActive | Animated.SharedValue<boolean> |
undefined |
|
resetSaturationWhenHueChange | boolean |
false |