Подтвердить что ты не робот

Как сделать эффект размытия с помощью реакции-родной?

введите описание изображения здесь

как сделать эффект размытия с помощью реакции-родной? как "background-image"

и я хочу переключить эффект "размытие" и "нет", "нет" означает эффект размытия

4b9b3361

Ответ 1

Теперь вы можете сделать это без использования библиотеки с помощью prop: blurRadius.

например

<Image
    style={styles.img}
    resizeMode='cover'
    source={imgSrc} 
    blurRadius={1}
/>

Объяснение: число (1) означает количество размытия, которое вы хотите применить на изображении, тем выше число, тем более грубое изображение.

К сожалению, это еще не работает на Android (RN 0.40.0). Тем не менее, может быть полезно, кто ищет только решение iOS.

Изменить: Сейчас работает на Android.

Ответ 2

Для размытия и всего вида в react-native вы можете использовать @react-native-community/blur и применить его следующим образом:

import React, { Component } from 'react';
import { BlurView } from '@react-native-community/blur';
import {
  StyleSheet,
  Text,
  View,
  findNodeHandle,
  Platform,
  Image,
} from 'react-native';

const styles = StyleSheet.create({
  title: {
    color: 'black',
    fontSize: 15,
  },
  absolute: {
    position: 'absolute',
    top: 0,
    left: 0,
    bottom: 0,
    right: 0,
  },
  blurredView: {
    // For me android blur did not work until applying a background color:
    backgroundColor: 'white',
  },
});

export default class MyBlurredComponent extends Component {
  constructor(props) {
    super(props);
    this.state = { viewRef: null };
  }

  onTextViewLoaded() {
    this.setState({ viewRef: findNodeHandle(this.viewRef) });
  }

  render() {
    return (
      <View>
        <View
          style={[
            styles.blurredView,
          ]}
          ref={(viewRef) => { this.viewRef = viewRef; }}
          onLayout={() => { this.onTextViewLoaded(); }}
        >
          <Image
            style={{ width: 100, height: 100 }}
            source={{ uri: 'https://facebook.github.io/react-native/docs/assets/GettingStartedCongratulations.png' }}
          />
          <Text style={[styles.title]}>
            TEXT 2222 \n
            TEXT 3333
          </Text>
        </View>
        {
          (this.state.viewRef || Platform.OS === 'ios') && <BlurView
            style={styles.absolute}
            viewRef={this.state.viewRef}
            blurType="light"
            blurAmount={3}
            blurRadius={5}
          />
        }
      </View>
    );
  }
}

//Deps:

 "react-native": "0.53.3",
 "@react-native-community/blur": "^3.2.2"

Результат:

enter image description here

Ответ 3

Установите react-native-blur:

npm install react-native-blur

import BlurView from 'react-native-blur';

...
<BlurView blurType="light" style={styles.blur}>
...

Ответ 5

Если вы создали свое приложение, используя CRNA, т.е. используя expo. Вы можете использовать BlurView с выставки.

import {BlurView} from 'expo';

У него есть два реквизита для управления эффектом размытия.

tint, который принимает строковое значение, а именно light, default или dark. и intensity в диапазоне от 1 to 100