React-Native項(xiàng)目中使用Gif圖做loading遮罩

下文中的用法已經(jīng)過時(shí),推薦react-native-overlayer

先來張效果圖

廢話不多說
Show you the Code嘲碱!

源碼

功能還是在原來的項(xiàng)目中實(shí)現(xiàn)的诵原,代碼可以單獨(dú)剝離,自己動(dòng)手豐衣足食
源碼點(diǎn)擊這里

文件路徑: ListViewLoadMore/app/common/LoadingView.js

import React, { Component } from 'react';
import {
    View,
    Image,
    StyleSheet,
    Dimensions,
    TouchableOpacity,
    Modal
} from 'react-native';
const { width, height } = Dimensions.get('window')
import loadingImage from '../../assets/0.gif'
class LoadingView extends Component{
    constructor(props) {
        super(props);
    }
    _close(){
        console.log("onRequestClose ---- ")
    }
    render() {
        const { showLoading, opacity, backgroundColor } = this.props
        return (
            <Modal onRequestClose={() => this._close()} visible={showLoading} transparent>
                <View style={ [styles.loadingView, {opacity: opacity||0.3, backgroundColor: backgroundColor||'gray'}]}></View>
                <View style={ styles.loadingImageView }>
                    <View style={ styles.loadingImage }>
                        {
                            this.props.loadingViewClick?
                            <TouchableOpacity onPress={ this.props.loadingViewClick }>
                                <Image style={ styles.loadingImage } source={ loadingImage }/>
                            </TouchableOpacity>
                            :
                            <Image style={ styles.loadingImage } source={ loadingImage }/>
                        }
                    </View>
                </View>
            </Modal>
        )
    }
}
const styles = StyleSheet.create({
    loadingView: {
        flex: 1,
        height,
        width,
        position: 'absolute'
    },
    loadingImage: {
        width: 150,
        height: 100,
    },
    loadingImageView: {
        position: 'absolute',
        width,
        height,
        justifyContent: 'center',
        alignItems: 'center'
    }
})
LoadingView.propTypes = {
    loadingViewClick: React.PropTypes.func, //.isRequired,
    showLoading: React.PropTypes.bool.isRequired,
    opacity: React.PropTypes.number,
    backgroundColor: React.PropTypes.string
}


export default LoadingView

備注說明:

  • 代碼就這么多也拜,如果有其他方面的需求赃阀,諸如添加文案霎肯,可以自己在此基礎(chǔ)上自定義,應(yīng)該沒什么難度
  • 圖片資源可以自己設(shè)置和修改

使用

在需要使用的地方 先引入組件

import LoadingView from '../common/LoadingView.js'

然后在render()中添加組件

render() {
    return (
        <View style={ styles.mainView }>
            
            ...
            
            <LoadingView showLoading={ this.state.showLoading } />
        </View>
    )
}
  • 組件的showLoading屬性是必需的榛斯,顯示與隱藏是通過showLoading控制的
  • 組件支持自定義背景不透明度 opacity观游,默認(rèn)0.6
  • 組件支持自定義背景顏色 backgroundcolor,默認(rèn)gray
  • 組件支持gif圖點(diǎn)擊事件loadingViewClick(可選)

Android需要特殊處理Gif加載

android/app/build.gradle中需要添加以下內(nèi)容

dependencies {
  // If your app supports Android versions before Ice Cream Sandwich (API level 14)
  compile 'com.facebook.fresco:animated-base-support:0.11.0'

  // For animated GIF support
  compile 'com.facebook.fresco:animated-gif:0.11.0'

  // For WebP support, including animated WebP
  compile 'com.facebook.fresco:animated-webp:0.11.0'
  compile 'com.facebook.fresco:webpsupport:0.11.0'

  // For WebP support, without animations
  compile 'com.facebook.fresco:webpsupport:0.11.0'
}

Over

先這樣驮俗,有問題留言

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末懂缕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子王凑,更是在濱河造成了極大的恐慌搪柑,老刑警劉巖聋丝,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異工碾,居然都是意外死亡弱睦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門渊额,熙熙樓的掌柜王于貴愁眉苦臉地迎上來况木,“玉大人,你說我怎么就攤上這事旬迹』鹁” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵奔垦,是天一觀的道長屹耐。 經(jīng)常有香客問我,道長宴倍,這世上最難降的妖魔是什么张症? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮鸵贬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脖捻。我一直安慰自己阔逼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布地沮。 她就那樣靜靜地躺著嗜浮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪摩疑。 梳的紋絲不亂的頭發(fā)上危融,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機(jī)與錄音雷袋,去河邊找鬼吉殃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛楷怒,可吹牛的內(nèi)容都是我干的蛋勺。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼鸠删,長吁一口氣:“原來是場噩夢啊……” “哼抱完!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起刃泡,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤巧娱,失蹤者是張志新(化名)和其女友劉穎碉怔,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體禁添,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撮胧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了上荡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趴樱。...
    茶點(diǎn)故事閱讀 38,064評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖酪捡,靈堂內(nèi)的尸體忽然破棺而出叁征,到底是詐尸還是另有隱情,我是刑警寧澤逛薇,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布捺疼,位于F島的核電站,受9級特大地震影響永罚,放射性物質(zhì)發(fā)生泄漏啤呼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一呢袱、第九天 我趴在偏房一處隱蔽的房頂上張望官扣。 院中可真熱鬧,春花似錦羞福、人聲如沸惕蹄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卖陵。三九已至,卻和暖如春张峰,著一層夾襖步出監(jiān)牢的瞬間泪蔫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工喘批, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撩荣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓谤祖,卻偏偏與公主長得像婿滓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子粥喜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容