es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La imagen se desvanece en el fondo de React Native.

Estoy haciendo una aplicación de React Native y tengo problemas para hacer que una imagen se desvanezca en los bordes para que se mezcle con el fondo. Quiero que se vea como en la aplicación de Netflix, donde la imagen no termina, sino que se desvanece en negro imagen de Netflix. He intentado envolver mi componente de imagen en un degradado lineal, pero eso no elimina los bordes duros de la imagen. Tengo que reducir la opacidad de la imagen a 0.1 para lograrlo, lo que simplemente destruye la calidad de la imagen.

Aquí está el código del componente:

<lineargradient colors="{["black"," "white",="" "black"]}="" locations="{[0.2," 0.5,="" .8]}="">
   <image key="{image}" source="{{" uri:="" image="" }}="" style="{styles.backgroundImage}"></image>
  </lineargradient>

y los estilos:

imageGradient: {
    height: "70%",
    marginTop: 150,
    justifyContent: "center"
  },

backgroundImage: {
    height: "80%",
    width: DEVICE_WIDTH,
    opacity: 0.8
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr el efecto de desvanecimiento de una imagen en los bordes para que se fusione con el fondo en una aplicación de React Native, puedes utilizar una combinación del componente ImageBackground y del componente LinearGradient de la biblioteca expo-linear-gradient.

    Primero, importa los componentes ImageBackground y LinearGradient de las bibliotecas react-native y expo-linear-gradient respectivamente.

    import { ImageBackground } from 'react-native';
    import { LinearGradient } from 'expo-linear-gradient';
    

    Luego, reemplaza el componente Image con el componente ImageBackground y envuélvelo en el componente LinearGradient. Asegúrate de establecer la propiedad opacity del componente LinearGradient en 0.7 o en el valor deseado para lograr el efecto de desvanecimiento.

    <imagebackground source="{{" uri:="" image="" }}="" style="{styles.backgroundImage}">
      <lineargradient colors="{['rgba(0,0,0,0)'," 'rgba(0,0,0,0.7)']}="" style="{styles.linearGradient}"></lineargradient>
    </imagebackground>
    

    Finalmente, actualiza tus estilos para eliminar la propiedad opacity y añadir un nuevo estilo para el componente linearGradient.

    backgroundImage: {
      height: '80%',
      width: DEVICE_WIDTH,
    },
    
    linearGradient: {
      flex: 1,
    },
    

    Con estos cambios, la imagen se desvanecerá en el fondo en los bordes, al igual que en la aplicación de Netflix.

Comments are closed.