精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何使用React Native制作圓形加載條

開發 開發工具
最近需求需要一個顯示百分比的加載條。然而去搜索了很久,沒能發現比較滿意的組件,只好自己解決了。當然對于大多數前端而言,這個并不是特別難的,可能思路眾多,然而面對React Native似乎就有點相形見絀了。解決這樣的問題,我們還是得回歸前端本身,看看有什么可以嫁接的方案沒。

先放運行截圖說明做什么吧,

 

react-native-percentage-circle 項目地址

最近需求需要一個顯示百分比的加載條。然而去搜索了很久,沒能發現比較滿意的組件,只好自己解決了。當然對于大多數前端而言,這個并不是特別難的,可能思路眾多,然而面對React Native似乎就有點相形見絀了。解決這樣的問題,我們還是得回歸前端本身,看看有什么可以嫁接的方案沒。

前端常規制作進度條方法

前端實現相對容易點,我們可以用canvas去繪制圓,也可以用SVG去繪制.

使用SVG

  1. <svg style="width:2.8rem" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 130 130" overflow="visible" enable-background="new 0 0 130 130" id="progress"
  2.     <circle fill="none" stroke="#ccc" stroke-width="4" stroke-miterlimit="10" cx="64.8" cy="64.8" r="59.8"></circle> 
  3.     <circle class="styled" fill="none" stroke="#2ecc71" stroke-width="4" stroke-miterlimit="10" cx="64.8" cy="64.8" r="59.8" style="stroke-dashoffset: -93.9336; stroke-dasharray: 375.734;"></circle> 
  4.   
  5.  </svg>  

SVG主要是用Circle進行繪制,關于Circle使用可以看 這里 。我們先繪制***個圓,用于底色。接下來我們只需要在上面繪制一個帶有色彩的圓(切記不要填充顏色fill="none")。這個時候我們需要了解兩個關鍵的屬性;

stroke-dasharray: 用于控制路徑繪制中虛線和間距的。例子中的即圓的周長。

stroke-dashoffset: 用于指定距離虛線繪制的起點

如果我們知道了這個的話,我們只需要計算出圓的周長

  1. var CircleLength = R * 2 * Math.PI; 
  2.  
  3. var PercentOffset = - CircleLength * yourPercent;  

然后將這個第二個Circle屬性賦予到style中: 

  1. style="stroke-dashoffset: -93.9336; stroke-dasharray: 375.734;" 

SVG相對來說還算是比較易用的解決方案, Demo點擊預覽;

使用 CSS漸變

還有一個更加直接的方法,就是利用 CSS3 中的linear-gradient:

效果如圖:

 

我們只需要指定line-grdient中通過旋轉的角度然后設置好間隔的漸變百分比就行啦。

  1. background-image:linear-gradient(90deg, transparent 50%, #16a085 50%), linear-gradient(90deg, #eee 50%, transparent 50%); 

下圖為隱藏掉遮擋的小圓的樣子。

 

代碼如下: 

  1. .circle1{ 
  2.   position:relative
  3.   width:110px; 
  4.   height:110px; 
  5.   border-radius:100%; 
  6.   background-color: #eee; 
  7.   background-image:linear-gradient(90deg, transparent 50%, #16a085 50%),     linear-gradient(90deg, #eee 50%, transparent 50%); 
  8.  } 
  9. .circle2{ 
  10.   position:relative
  11.   top:5px; 
  12.   left:5px; 
  13.   width:100px; 
  14.   height:100px; 
  15.   border-radius:100%; 
  16.   background-color: #fff; 
  17.  

使用CSS Transform

如果要用Transform 的話,這個腦洞就比較大了,解決的方案也有很多,今天自己分享一個相對不燒腦的解決方案: 

 圖3-1

 圖3-2

如圖 我們需要建立一個外部的圓,也就是用于繪制灰色的底色,然后再用一個區域進行層級遮擋(也可以自己用border來模擬啦)。記住屬性一定要有overflow:hidden.

接下來我們需要添加左右兩個分區,用于放置進行彩條繪制的容器。如圖3-1我們設置左分區一個,里面是一個左半圓,而這個半圓距離容器距離是100%,默認是不可見的。然后它需要圍繞圓心旋轉,比較巧妙的是,它需要旋轉過180度后,才會回到它的父容器可見區域。如圖3-2同理我們可以設置右半區,然后將半圓放在-100%的距離,即右半圓默認也不可見的。當它開始旋轉的時候即如下圖紅色區域就是我們的角度:

 注意由于是兩個圓進行配合,因此角度過180度,時候,左半圓則開始旋轉,而右半圓則保持180度即可。 

  1. .left-wrap{ 
  2.     overflow: hidden; 
  3.     position: absolute
  4.     left:0; 
  5.     top:0; 
  6.     width: 50%; 
  7.     height:100%; 
  8.      
  9. .left-wrap .loader{ 
  10.     position: absolute
  11.     left:100%; 
  12.     top:0; 
  13.     width:100%; 
  14.     height:100%; 
  15.     border-radius: 1000px; 
  16.     background-color: #333;  
  17.     border-top-left-radius: 0; 
  18.     border-bottom-left-radius: 0; 
  19.     transform-origin:0 50% 0; 
  20. // 省略一些右半區代碼 
  21.  
  22. .right-wrap{ 
  23.     .... 
  24.     left:50%; 
  25. .right-wrap .loader{  
  26.     ... 
  27.     left:-100%; 
  28.     border-bottom-right-radius: 0; 
  29.     border-top-right-radius: 0;     
  30.     transform-origin:100% 50% 0;     
  31.  

這些就是前端的一些解決方法當然你也可以選擇開源的框架,比如:

如何使用React Native寫這樣的進度條呢?

前面的前端思路自己倒是有了,于是覺得很easy嘛,不過在開始寫的時候發現 尷尬了。 SVG成本比較大,你需要安裝依賴react-native-art-svg。用漸變的話,當然也比較麻煩,也需呀安裝依賴,自己內心覺得:畫一個圓至于么!!!

于是乎開始自己造輪子了,采用了第三種方案,就用view + transform進行組件封裝。才開始還挺順的,不過看官方文檔,發現沒有對 transform origin支持。雖然支持了rotate ,scale,translate,但是發現這個缺陷,無疑陷入一絲困境。隨后發現有人早已提了自己的pr給官方,希望得到支持。類似于 transformOrgin:{x:100}這樣子。 當然目前***版依舊沒有納入到計劃中。不過官方支持了transformMatrix , 這個雖好,可是樓主數學卻是渣,能不能有一個讓學渣快速理解的方案。

The transform-origin property lets you modify the origin for transformations of an element. For example, the transform-origin of the rotate() function is the centre of rotation. (This property is applied by first translating the element by the negated value of the property, then applying the element's transform, then translating by the property value.)

大致意思就是這個屬性在進行選擇時指定origin的時候,會先將元素平移過去,然后再移回來。所以我們可以在旋轉時這樣指定:

  1. <View style={[styles.leftWrap,{ 
  2.   // .... 
  3.   <View style={[styles.loader,{ 
  4.      ...  radius: 半徑 
  5.      transform:[{translateX:-this.props.radius/2},{rotate:this.state.leftTransformerDegree},{translateX:this.props.radius/2}],   
  6.      }]}></View
  7.  </View 

這樣自己就可以解決transform origin的問題了。這樣寫進度就非常easy 啦。自己簡單封裝了這個組件 react-native-percentage-circle

簡單開始: 

  1. npm i react-native-percentage-circle --save 
  2.  
  3. import PercentageCircle from 'react-native-percentage-circle'
  4.  
  5. //... 
  6.  
  7. redner() { 
  8.   <View
  9.     <PercentageCircle radius={35} percent={50} color={"#3498db"}></PercentageCircle>   
  10.   </View
  11.  

選項說明

Props Type Example Description
color string '#000' 進度條顏色
percent Number 30 百分之多少
radius Number 20 圓的半徑

當然目前的參數自己想到的就這些,當然大家可以自己寫,也可以提PR ,將它擴展。

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2016-11-09 12:18:00

ui動畫javascript

2017-03-21 21:37:06

組件UI測試架構

2024-02-20 01:53:01

ReactFlutter開發

2016-10-13 19:01:59

React NativUbuntu

2023-07-18 15:49:22

HTMLCSS

2021-07-25 21:36:24

Windows操作系統功能

2024-07-08 00:00:07

2023-06-24 17:09:06

React前端

2016-08-12 13:55:06

2021-04-17 18:19:23

FlutterReact Nativ開發

2015-09-22 09:50:36

FacebookAndroid

2016-08-12 08:49:46

React NativFacebookNative

2017-09-11 14:35:34

編輯器開發環境React

2023-01-29 08:00:00

Instagram濾鏡圖片編輯

2017-03-09 13:29:04

ReactNative JSPatch

2016-08-15 13:34:37

React NativiOSjs入口

2024-01-19 09:03:06

ReactTypeScripFlexbox

2017-01-11 18:44:43

React Nativ觸摸事件Android

2017-01-04 10:18:00

React NativScrollViewAndroid

2016-11-23 16:48:20

react-nativandroidjavascript
點贊
收藏

51CTO技術棧公眾號

欧美xxxxxbbbbb| 亚洲日本一区二区三区在线不卡| 精品无码久久久久久久久| 秋霞蜜臀av久久电影网免费| 欧美日韩中文字幕| 亚洲美女网站18| 亚洲老妇色熟女老太| 校园激情久久| 麻豆国产精品va在线观看不卡| 高清中文字幕mv的电影| 亚洲一区二区三区四区| 亚洲伊人色欲综合网| 日韩av在线一区二区三区| 国产丝袜视频在线观看| 西西人体一区二区| 欧美理论片在线观看| 日韩一区二区a片免费观看| 日韩精品成人| 欧美伊人久久大香线蕉综合69| 男人日女人的bb| 国产精品视频二区三区| 国产成人亚洲精品狼色在线| 国产精品福利在线观看网址| 精品无码一区二区三区电影桃花 | 日韩中文欧美在线| 欧美另类第一页| 美国黄色特级片| 欧美三级电影在线| 日韩欧美激情在线| 日本中文字幕二区| 欧美专区福利免费| 午夜私人影院久久久久| 国产精品一二三在线观看| 黄色片在线免费看| 成人av网址在线| 91观看网站| 国产剧情精品在线| 美女视频一区在线观看| 欧美资源在线观看| 日韩精品成人在线| 国产精品va| 日韩在线观看免费全| 亚洲色成人网站www永久四虎| 欧美电影完整版在线观看| 日韩一级精品视频在线观看| 中文字幕66页| 久久女人天堂| 欧美日韩一区二区在线观看视频 | 国产色播av在线| 一区二区三区四区中文字幕| 中文字幕久久综合| 午夜激情视频在线| 亚洲欧洲精品一区二区三区| 亚洲国产精品一区在线观看不卡 | 日韩专区中文字幕| 91动漫免费网站| 欧美三级伦理在线| 色综久久综合桃花网| 日韩黄色中文字幕| 97精品一区| 久久精品一本久久99精品| 手机看片国产日韩| 国产精品久久久久久久免费观看 | 九色porny丨首页入口在线| 亚洲国产人成综合网站| 国产精品又粗又长| 亚洲欧美韩国| 在线视频欧美区| 天天干天天草天天| 91精品国产一区二区在线观看| 欧美二区乱c少妇| 亚洲精品国产久| 一区二区在线免费播放| 亚洲精品美女免费| 亚洲综合网在线观看| 欧美手机视频| 久久亚洲一区二区三区四区五区高| 91插插插插插插| 国内自拍视频一区二区三区| 欧美孕妇性xx| 在线黄色av网站| 国产福利一区二区| 开心色怡人综合网站| 国产黄色在线| 樱花草国产18久久久久| 欧美国产亚洲一区| 四虎永久精品在线| 亚洲黄色在线观看| 成人性生交大片免费看无遮挡aⅴ| 97久久视频| 久久久久国产一区二区三区| 蜜臀精品一区二区三区| 激情综合色播激情啊| 翡翠波斯猫1977年美国| 黄色小视频在线观看| 日韩码欧中文字| 免费毛片网站在线观看| av在线一区不卡| 日韩欧美在线不卡| 法国伦理少妇愉情| 亚洲精品一区二区妖精| 97国产一区二区精品久久呦| 老熟妇一区二区三区啪啪| 国产成人av电影在线观看| 欧洲亚洲一区二区三区四区五区| 18加网站在线| 在线这里只有精品| 亚洲精品久久一区二区三区777| 激情婷婷综合| 久久久免费在线观看| 中文字幕在线视频免费| 成人av免费在线| 欧美h视频在线观看| 日本韩国欧美| 精品欧美乱码久久久久久 | 邪恶网站在线观看| 精品久久ai| 久操成人在线视频| 在线观看毛片视频| 久久久影视传媒| av动漫在线免费观看| 国产成人免费精品| 日韩成人在线电影网| 无码人妻精品一区二区三区夜夜嗨| 久久精品三级| 国产一区免费在线观看| 亚洲资源一区| 欧美久久一区二区| 国产又粗又黄又猛| 日韩国产精品91| 就去色蜜桃综合| 人狥杂交一区欧美二区| 日韩精品中文字幕一区二区三区| 视频国产一区二区| 蜜臀久久99精品久久久画质超高清| 欧美xxxx黑人又粗又长密月 | 欧美伦理在线视频| 97精品视频在线| 欧美视频在线观看一区二区三区| 亚洲精品美国一| 欧美日韩精品区别| 亚欧美无遮挡hd高清在线视频 | 中文字幕视频免费观看| 久久精品水蜜桃av综合天堂| 国产l精品国产亚洲区久久| 久久久久久久久久久久久久久久久久久久| 欧美裸身视频免费观看| 精品久久在线观看| 亚洲综合视频在线观看| 稀缺呦国内精品呦| 亚洲成人原创| 久久99精品久久久久久久久久| av免费在线视| 精品性高朝久久久久久久| 99热在线观看免费精品| www国产精品av| 黄色免费观看视频网站 | 免费观看黄色的网站| 亚洲人体在线| 欧美成年人网站| 亚洲高清在线观看视频| 性做久久久久久免费观看 | 国产精品热久久| 亚洲女人的天堂| 精品人妻在线视频| 久久精品一本| 亚洲成人午夜在线| 国产一区二区高清在线| 国内精品久久久久影院 日本资源| 手机在线精品视频| 色诱亚洲精品久久久久久| 国产精品无码无卡无需播放器| 精品在线播放免费| 999一区二区三区| 日韩激情网站| 国产专区欧美专区| 秋霞在线视频| 亚洲美女久久久| 一区二区www| 亚洲无人区一区| 成人性生交大免费看| 裸体一区二区三区| 女人被男人躁得好爽免费视频| 久久精品色播| 国产精品网红福利| 国产探花在线观看| 国产亚洲精品成人av久久ww| 国产色视频在线| 色综合色狠狠综合色| 三上悠亚在线观看视频| 99久久精品国产毛片| 91日韩视频在线观看| 欧美日本不卡| 四虎永久国产精品| 国产精品毛片视频| 国产精品欧美一区二区| www.综合网.com| 色婷婷综合成人| 性xxxx搡xxxxx搡欧美| 欧美日韩日日骚| 日本视频www| 中文字幕一区二区三区蜜月| 你懂得在线视频| 激情图区综合网| 无码人妻精品一区二区三区在线| 欧美国产小视频| 欧美激情第六页| 98视频精品全部国产| 国产精品对白刺激| 国产高潮在线| 欧美猛交免费看| h网站在线免费观看| 日韩电影中文字幕在线| www.蜜臀av| 欧美卡1卡2卡| 最近中文字幕av| 欧美日韩亚洲视频| 日韩精品视频免费看| 亚洲人妖av一区二区| 欧美激情 一区| 久久蜜臀精品av| 国产51自产区| 国产成人av一区二区三区在线| 亚洲第一天堂久久| 男女激情视频一区| 97成人在线观看视频| 亚洲人成高清| 天天做天天躁天天躁| 91精品国产福利在线观看麻豆| 日韩av电影在线观看| 日韩美脚连裤袜丝袜在线| 国产精品视频免费一区二区三区| 欧美经典一区| 91人人爽人人爽人人精88v| 丁香婷婷久久| 国产精品va在线播放| 成人va天堂| 国产精品wwwwww| 91精品xxx在线观看| 日韩免费中文字幕| 国产免费不卡| 日韩av电影手机在线| 亚洲一区站长工具| 欧美最猛性xxxxx免费| 中文字幕乱码在线播放| 91干在线观看| 另类激情视频| 国产精品xxx视频| yiren22亚洲综合| 国产精品丝袜久久久久久高清 | 在线播放中文一区| 一本色道久久综合亚洲| 欧美丰满嫩嫩电影| 国产成人精品免费看视频| 日韩精品一区二区三区四区| 亚洲第一视频在线| 亚洲第一福利网站| 亚洲av激情无码专区在线播放| 亚洲精品国产拍免费91在线| 欧美精品a∨在线观看不卡| 亚洲美女精品成人在线视频| 国产福利小视频在线观看| 在线视频免费一区二区| 麻豆电影在线播放| 欧美大片欧美激情性色a∨久久| 久草免费在线色站| 91sa在线看| 搜成人激情视频| 成人精品在线视频| 伊色综合久久之综合久久| 狠狠爱一区二区三区| 蜜桃a∨噜噜一区二区三区| 亚洲韩国在线| 国产精品vip| 久久婷婷国产精品| 久久97超碰色| 成人一区二区三区仙踪林| 99久久99久久免费精品蜜臀| 欧美 日韩 国产 成人 在线观看| 中文字幕一区二区不卡| 日韩免费一二三区| 色999日韩国产欧美一区二区| 国产剧情久久久| 日韩成人性视频| 天堂а√在线官网| 久久久久久久一| 欧美色网在线| av一区观看| av资源久久| 青青青在线视频播放| 免费的国产精品| 亚洲欧美日韩色| 国产精品久久久久久久浪潮网站 | 欧美日韩精品免费观看视频完整| 国产91在线视频观看| 久久国产人妖系列| 中国美女乱淫免费看视频| 亚洲视频一区在线观看| 中文字字幕在线中文| 91精品国产色综合久久不卡蜜臀 | 色综合久久88色综合天天看泰| 亚洲最大网站| 99久久99久久精品国产片| 精品国产午夜| 久久成人免费观看| 国产一区二区在线免费观看| 中文字幕人妻一区二区三区在线视频| 亚洲乱码精品一二三四区日韩在线| 欧美精品韩国精品| 精品国内片67194| 米奇精品一区二区三区| 国产精品99久久久久久www| 91成人在线精品视频| 国产高清精品软男同| 日欧美一区二区| 日韩aaaaa| 亚洲综合在线视频| 91精品国产乱码久久久久| 亚洲人成亚洲人成在线观看| 国产亚洲成av人片在线观看| 亚洲自拍偷拍色图| 成人羞羞网站| www日韩视频| 91亚洲精品一区二区乱码| 久久久久人妻一区精品色欧美| 欧美日韩高清在线播放| 极品美乳网红视频免费在线观看| 98精品国产高清在线xxxx天堂| 亚洲成人五区| 久久精品在线免费视频| 国内不卡的二区三区中文字幕| 亚洲欧美日韩第一页| 91福利国产成人精品照片| 毛片免费在线| 欧美在线不卡区| 婷婷精品在线观看| 欧美女人性生活视频| 99久久精品一区二区| 日韩美女黄色片| 亚洲国产精品专区久久| 多野结衣av一区| 久久综合色一本| 久久久噜噜噜久久狠狠50岁| 欧美熟妇一区二区| 色综合天天视频在线观看| 日本福利午夜视频在线| 欧美制服第一页| 国产成人精品三级高清久久91| 女性女同性aⅴ免费观女性恋| 91免费看片在线观看| 亚洲免费在线观看av| 亚洲美女精品成人在线视频| 日韩精品三区| 亚洲人成影视在线观看| 精东粉嫩av免费一区二区三区| 国产精品视频一区二区在线观看| 欧美午夜理伦三级在线观看| aaa日本高清在线播放免费观看| 国产精品网红直播| 欧美影院一区| 久久久久成人精品无码中文字幕| 精品av在线播放| 麻豆app在线观看| 国产精品你懂得| 亚洲国产日韩欧美在线| 少妇献身老头系列| 黑人巨大精品欧美一区二区免费| 男人天堂亚洲二区| 日韩高清一区在线| 国产精品萝li| 一区二区成人免费视频| 日韩午夜在线播放| 51精品在线| 欧美精品一区二区三区四区五区| 日韩电影在线一区二区三区| 中国美女黄色一级片| 欧美一区二区三区视频在线 | 欧美成人午夜视频| 精品av导航| 天天插天天操天天射| 亚洲激情图片小说视频| 天堂中文在线视频| 国产在线视频91| 亚洲免费黄色| 国产精品美女高潮无套| 欧美一二三区在线| 91久久国产综合久久91猫猫| 一区国产精品| 99久久99久久精品免费观看 | 久久国产精品露脸对白| 久久久久久久黄色| 国产一区二区三区网站| 日韩三级久久| 欧在线一二三四区| 亚洲欧美综合在线精品| 天堂中文在线观看视频| 成人a在线视频| 久久xxxx精品视频| 天天综合天天做| 亚洲天堂日韩电影|