reactnative 电量自动-颜色渐变-带文字-svg-path-rect实现
创始人
2025-01-10 21:08:11
0

import React, { useEffect, useState } from 'react';

import { StyleSheet, View } from 'react-native';

import { Svg, LinearGradient,  Stop, Path, Text, Defs, Circle, ClipPath, Rect } from 'react-native-svg';

interface BatteryProps {

  batteryNum: number

}

const Battery = (props: BatteryProps) => {

  const [batteryNum, setBatteryNum] = useState(0);//电池显示数字

  const [batteryNumX, setBatteryNumX] = useState(0);//文字x坐标

  const [batteryNumColor, setBatteryNumColor] = useState('white');//文字x坐标

  const [colorHigh, setColorHigh] = useState('rgba(238, 144, 102, 1)');

  const [colorLow, setColorLow] = useState('rgba(247, 205, 175, 1)');

  useEffect(() => {

  }, []);

  useEffect(() => {

    setBatteryNum(props.batteryNum)

   

    //设置整体渐变色

    if(props.batteryNum<=20 && props.batteryNum>0){

      setColorHigh('rgba(238, 144, 102, 1)')

      setColorLow('rgba(247, 205, 175, 1)')

     

    }else if(props.batteryNum> 20 && props.batteryNum<=100){

      setColorHigh('rgba(87, 217, 173, 1)')

      setColorLow('rgba(161, 229, 207, 1)')

    }else{

     

    }

   

    //设置文字显示x起点坐标

    if(props.batteryNum>=10 && props.batteryNum<100){

      setBatteryNumX(12)

    }else if(props.batteryNum===100){

      setBatteryNumX(8)

    }else{

      setBatteryNumX(15)

    }

    //设置文字渐变颜色

    if(props.batteryNum>=44 && props.batteryNum<=46){

      setBatteryNumColor('url(#grads4445)')

    }else if(props.batteryNum>46 && props.batteryNum<=49){

      setBatteryNumColor('url(#grads4649)')

    }else if(props.batteryNum>49 && props.batteryNum<52){

      setBatteryNumColor('url(#grads5052)')

    }else if(props.batteryNum>=52 && props.batteryNum<=54){

      setBatteryNumColor('url(#grads5354)')

    }else if(props.batteryNum>54 && props.batteryNum<55){

      setBatteryNumColor('url(#gradss5455)')

    }else if(props.batteryNum>=55){

      setBatteryNumColor('white')

    }else{

      setBatteryNumColor('rgba(23, 23, 74, 1)')

    }


 

  }, [props.batteryNum]);

  const svgHeight = 74;

  const svgWidth = 42;

  return (

   

     

     

       

         

         

       

       

          d="M11.6,4v0.4H12V4H11.6zM31.5,4H31v0.4h0.4L31.5,4L31.5,4zM12.1,2.5c0,-1 0.8,-1.7 1.7,-1.7V0c-1.4,0 -2.6,1.2 -2.6,2.6H12.1zM12.1,4V2.5h-0.9V4H12.1zM9,4.5h2.6V3.5H9V4.5zM0.9,12.7c0,-4.5 3.6,-8.2 8.1,-8.2V3.5c-5,0 -9,4 -9,9h0.9V12.7zM0.9,64.9V12.7H0v52.3H0.9zM9,73.1c-4.5,0 -8.1,-3.7 -8.1,-8.2H0c0,5 4,9 9,9V73.1zM33,73.1H9v0.9h24V73.1zM41.1,64.9c0,4.5 -3.6,8.2 -8.1,8.2v0.9c5,0 9,-4 9,-9h-0.9V64.9zM41.1,12.7v52.3H42V12.7H41.1zM33,4.5c4.5,0 8.1,3.7 8.1,8.2H42c0,-5 -4,-9 -9,-9V4.5zM31.5,4.5H33V3.5h-1.5V4.5zM31,2.5V4h0.9V2.5H31zM29.3,0.9c0.9,0 1.7,0.8 1.7,1.7h0.9c0,-1.4 -1.2,-2.6 -2.6,-2.6C29.3,0 29.3,0.9 29.3,0.9zM13.8,0.9h15.5V0H13.8V0.9z"

          fill="none"

          stroke="rgba(255, 255, 255, 0.30)"

        />

       

          d="M16,3c-0.9,0 -1.7,0.8 -1.7,1.7V7H9.9C6.1,7 3,10 3,13.9v50c0,3.8 3.1,6.9 6.9,6.9h22.3c3.8,0 6.9,-3.1 6.9,-6.9v-50c0,-3.8 -3.1,-6.9 -6.9,-6.9h-4.4V4.7c0,-1 -0.8,-1.7 -1.7,-1.7C26.1,3 16,3 16,3z"

          fill="white"

          stroke="#D9D9D9"

        />  

        {/* 反着来的 最大值71   最小值0*/}

       

         

       

         

            d="M16,3c-0.9,0 -1.7,0.8 -1.7,1.7V7H9.9C6.1,7 3,10 3,13.9v50c0,3.8 3.1,6.9 6.9,6.9h22.3c3.8,0 6.9,-3.1 6.9,-6.9v-50c0,-3.8 -3.1,-6.9 -6.9,-6.9h-4.4V4.7c0,-1 -0.8,-1.7 -1.7,-1.7C26.1,3 16,3 16,3z"

            fill="white"

            stroke="#D9D9D9"

          />  

       


 

        {/*

          // d="M16,3c-0.9,0 -1.7,0.8 -1.7,1.7V7H9.9C6.1,7 3,10 3,13.9v49.9c0,3.8 3.1,6.9 6.9,6.9h22.3c3.8,0 6.9,-3.1 6.9,-6.9V13.9c0,-3.8 -3.1,-6.9 -6.9,-6.9h-4.4V4.7c0,-1 -0.8,-1.7 -1.7,-1.7H16z"

          // d="M32.3,70.7H9.7c-3.7,0 -6.8,-3 -6.8,-6.8V37.6H39v26.3C39,67.7 36,70.7 32.3,70.7z"

          d="M32.3,70.7H9.7c-3.7,0 -6.8,-3 -6.8,-6.8V37.6H39v26.3C39,67.7 36,70.7 32.3,70.7z"

          fill="url(#grad)"

        />   */}

       

             

             

             

             

             

             

             

         

         

         

             

             

             

             

             

             

             

         

         

             

             

             

             

             

             

             

         

         

         

             

             

             

             

             

             

             

             

         

         

         

         

             

             

             

             

             

             

             

             

         

        {

          batteryNum === 0 ? null :

          {batteryNum}%

       

        }

     

     

     

     

     

   

  )

};

export default Battery;


 

const styles = StyleSheet.create({

  battery: {

    alignSelf: 'flex-end',

    marginBottom: 16,

    marginRight: 16,

    // backgroundColor:'blue'

  },

})

相关内容

热门资讯

此事备受玩家关注!新超圣辅助透... 此事备受玩家关注!新超圣辅助透视挂,建德麻将存在有挂,一贯有挂细节运新超圣辅助工具,进入游戏界面。进...
今天上午!熊猫麻将辅助透视挂,... 今天上午!熊猫麻将辅助透视挂,大唐撸麻雀确实有挂,确实有挂透视1、下载好大唐撸麻雀正确养号方法之后点...
突发!小吆三打哈辅助透视挂,悠... 突发!小吆三打哈辅助透视挂,悠闲麻将真的是有挂,原来有挂解密一、小吆三打哈游戏安装教程牌型概率发牌机...
今年以来!樱花梦雨辅助透视挂,... 今年以来!樱花梦雨辅助透视挂,新滕州麻将真的是有挂,好像有挂方法今年以来!樱花梦雨辅助透视挂,新滕州...
备受关注的!边锋老友棋牌辅助透... 备受关注的!边锋老友棋牌辅助透视挂,微友麻将是真的有挂,一直有挂攻略运边锋老友棋牌辅助工具,进入游戏...
明白辅助挂!萍乡滚筒辅助透视挂... 明白辅助挂!萍乡滚筒辅助透视挂,大唐麻将游戏是有挂,一直有挂教程1、操作简单,无需大唐麻将游戏手机版...
据报道!丫丫古诗辅助透视挂,琼... 据报道!丫丫古诗辅助透视挂,琼崖海南麻将真的有挂,其实有挂方法丫丫古诗脚本下载中分为三种模型:丫丫古...
随着!多多休闲辅助透视挂,东游... 随着!多多休闲辅助透视挂,东游麻将是真的有挂,竟然有挂存在随着!多多休闲辅助透视挂,东游麻将是真的有...
方法辅助挂!星禾游戏辅助透视挂... 方法辅助挂!星禾游戏辅助透视挂,太浪乾安麻将是真的有挂,果然发现有挂1、下载好星禾游戏脚本下载之后点...
近日!巅峰互娱辅助透视挂,趣咪... 近日!巅峰互娱辅助透视挂,趣咪麻将确实有挂,真是揭秘有挂;1、这是跨平台的巅峰互娱轻量版有透视,在线...