Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

374
Vistas
¿Qué tiene de malo mi animación de interpolación de color React Native Reanimated?

Estoy tratando de hacer algo extremadamente simple: hacer que mi botón sea transparente mientras no está presionado y cambiar su color de fondo a un color diferente gradualmente cuando un usuario lo presiona. Para lograr eso, estoy usando React Native Reanimated. Desafortunadamente, hay algo mal con mi animación y no estoy seguro de qué. El asunto es este:

Cambio isPressed a verdadero cuando se presiona el botón y a falso cuando el usuario aleja el dedo del botón. Luego uso ese booleano isPressed para cambiar el progreso y finalmente uso ese progreso para interpolar el color de transparente a mi otro color. Lamentablemente lo que sucede es esto:

Presiono el botón y en lugar de que el botón cambie su color de fondo casi instantáneamente, tarda como 5 segundos antes de cambiar a colors.primary50. Luego, si dejo de presionar el botón, toma otros 5 o más segundos para volver a ser transparente. Además, realmente no veo un cambio gradual en el color, solo cambia instantáneamente.

 const TertiaryButton: FunctionComponent<Props> = ({ title, wide = false, style, ...rest }) => { const [isPressed, setIsPressed] = useState(false); const progress = useSharedValue(0); useEffect(() => { progress.value = withTiming(isPressed ? 1 : 0, { easing: Easing.out(Easing.cubic), duration: 1000 }); }, [isPressed, progress]); const rStyle = useAnimatedStyle(() => { const backgroundColor = interpolateColor(progress.value, [0, 1], ['transparent', colors.primary50]); return { backgroundColor }; }); return ( <Pressable onPressIn={() => setIsPressed(true)} onPressOut={() => setIsPressed(false)} {...rest}> <Button wide={wide} style={[ style, { ...rStyle, }, ]} > <ButtonText variant="h4">{title}</ButtonText> </Button> </Pressable> ); };
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Intente cambiar el valor de progreso instantáneamente dentro onPressIn y onPressOut .

 onPressOut={() => { console.log("onPressOut") isPressed.value = withTiming(0) }} onPressIn={() => { console.log("onPressIn") isPressed.value = withTiming(1) }}
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda