react-native 圓形進(jìn)度條

項(xiàng)目中錄制視頻需要用到圓形進(jìn)度條,從網(wǎng)上搜了很多,終于發(fā)現(xiàn)一個(gè)好用的組件react-native-progress,這個(gè)組件支持線形和圓形多種形式的進(jìn)度條,先來看看效果圖~

官方效果圖.gif

這個(gè)組件有四種進(jìn)度條:

  • Progress.Bar
  • Progress.Pie
  • Progress.Circle
  • Progress.CircleSnail

今天主要結(jié)合自己的項(xiàng)目需求講下圓形進(jìn)度條Progress.Circle的使用,下面我們來看一下它怎么使用吧~

一、屬性介紹

1. 組件通用屬性
屬性 描述 默認(rèn)值
animated 是否對(duì)進(jìn)度進(jìn)行動(dòng)畫更改 true
indeterminate 如果設(shè)置為true,指示器將旋轉(zhuǎn),進(jìn)度屬性將被忽略。 false
progress 指示器顯示的進(jìn)度, 0到1之間取值 0
color 指示器填充顏色 rgba(0, 122, 255, 1)
unfilledColor 剩余進(jìn)度的顏色 None
borderWidth 外部邊框?qū)挾龋?表示沒有邊框 1
borderColor 外部邊框顏色 color
children 可在進(jìn)度條內(nèi)部添加組件 null
2. 圓形進(jìn)度條組件屬性
屬性 描述 默認(rèn)值
size 圓的直徑 40
thickness 內(nèi)圓的厚度 3
showsText 是否顯示當(dāng)前進(jìn)度的文本 false
formatText(progress) 一個(gè)函數(shù),用于返回文本顯示的字符串 See source
textStyle 進(jìn)度文本的樣式,字體顏色默認(rèn)為圓的color,字體大小和size屬性成比例 None
direction 圓的方向,clockwise(順時(shí)針方向) 或者counter-clockwise(逆時(shí)針方向) clockwise
strokeCap 圓的Stroke Cap樣式,butt, square or round butt

二、具體使用

(一)安裝
  1. 使用安裝命令npm install react-native-progress --save進(jìn)行安裝;

  2. 在ios上使用圓形進(jìn)度條需要在Libraries目錄下添加ART.xcodeproj,路徑為node_modules/react-native/Libraries/ART,如圖:

QQ20180104-160911@2x.png
QQ20180104-160636@2x.png

3.在Build Phases下找到Link Binary With Libraries,添加libART.a,如圖:

QQ20180104-160516@2x.png

注:android系統(tǒng)npm完成后直接使用即可。

(二)使用

代碼如下:

...
import * as Progress from 'react-native-progress';
let seconds = 0;
...
<View 
    style={{
        justifyContent: 'center',
        alignItems: 'center'
    }}>
    <Progress.Circle
        style={{
            borderRadius: 42,
            width: 84,
            height: 84
        }}
        size={84} // 圓的直徑
        progress={this.state.progress} // 進(jìn)度
        unfilledColor="rgba(255,255,255,0.5)" // 剩余進(jìn)度的顏色
        color={"#008aff"} // 顏色
        thickness={6} // 內(nèi)圓厚度
        direction="clockwise" // 方向
        borderWidth={0} // 邊框
        children={ // 子布局
            <View style={{
                position: 'absolute',
                top: 6,
                left: 6,
            }}>
                <TouchableOpacity
                    activeOpacity={0.75}
                    onPressIn={() => {
                        console.log("onPressIn");
                        this.countDown();
                    }}
                    onPressOut={() => {
                        console.log("onPressOut");
                        this.timer && clearInterval(this.timer);
                    }}
                    onPress={() => {}}
                    onLongPress={() => console.log("onLongPress")}
                >
                    <Image
                        style={{width:72,height:72}}
                        source={StaticImage.solidCircle}
                    />
                </TouchableOpacity>
            </View>
        }
    >
    </Progress.Circle>
</View>  
...
    // 計(jì)時(shí)
    countDown() {
        this.timer = setInterval(() => {
            seconds += 0.1;
            console.log('seconds=',seconds);
            console.log('progress---',this.state.progress);
            if(seconds <= 15){
                this.setState({
                    progress: seconds / 15,
                });
            }
            if(seconds > 15){
                this.timer && clearInterval(this.timer);
            }
        },100);
    }                   

效果圖:

QQ20180104-173449.gif

最后附上github地址:react-native-progress

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文原創(chuàng)首發(fā)于公眾號(hào):ReactNative開發(fā)圈,轉(zhuǎn)載需注明出處。 React Native 圓形進(jìn)度條組件:r...
    forrest23閱讀 2,269評(píng)論 0 3
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,794評(píng)論 25 709
  • 簡(jiǎn)短說明 收錄一些好用的RN第三方組件,以方便日常的使用,大家有什么推薦的也可以跟我說,我加進(jìn)去。如有冒犯,可以聯(lián)...
    以德扶人閱讀 43,900評(píng)論 44 214
  • 六一兒童節(jié)要到了,我們一幫高中生故作天真地問老師六一要放假的吧?結(jié)果老師很認(rèn)真地告訴我們,兒童節(jié)放假是按年齡的,不...
    梓毓爸閱讀 150評(píng)論 0 1
  • 昨晚睡得尤其的晚,和C約了去吃火鍋,等了兩個(gè)小時(shí)都沒有等到我們的位置于是下樓去吃杭幫菜,點(diǎn)了菜之后兩個(gè)人突然都想吃...
    錦肆1994閱讀 324評(píng)論 1 2

友情鏈接更多精彩內(nèi)容