zoukankan      html  css  js  c++  java
  • RN中的常用组件-----图片

     1.RN中的常用组件-----图片

       本地图片: <Image  source={require('../src/assets/x.jpg')}/>

       本地图片可以无需指定尺寸(因为导入/打包在服务器端进行),默认是原始尺寸;如果指定了width,height不会自动的修改,

    也必须手工赋值.

       远程图片:<Image  source={ {uri:'http://t.cn/logo.png'} }  style={{x,height:x }}/>

        注意:Image的source可以赋值为"远程图片的URL地址"或者"本地的图片数据"----本地图片

    不能使用文件路径字符串!远程图片需要异步请求,初始时图片尺寸为0;请求完成后默认尺寸

    仍然为0-----必须手工设置远程图片的尺寸 (防止页面重排)

       Image组件的resizeMode决定了图片尺寸与组件尺寸不等如何缩放,可取值:

      ①cover:覆盖,等比例缩放图片,保证完全覆盖组件的宽和高,溢出部分不显示

      ②contain:包含,等比例缩放图片,保证容器可以完全容纳图片全部内容,可能出现留白

      ③stretch:拉伸,不等比例缩放图片,保证容器可以完全容纳图片的全部内容,不会留白

    但图片变形.

      ④repeat:重复,等比例缩放图片,在容器中平铺图片,保证没有留白

      ⑤center:图片不拉伸直接放置在容器正中央.

    重点:如何获取远程图片的原始尺寸?从而实现图片内容全部显示且无留白

    Image.getSize(uri,(w,h)=>{ },(err)=>{ })

     

    小知识:url、uri、urn三者间的关系?

    Unified Resource Identifier:统一的 资源识别符

    Unified Resource Locator:统一的资源定位符,如http://b.com/logo.jpg

    Unified Resource Naming:统一的资源命名符,如tel:13312345435、mailto:tom@t.cn

    URI= URL +URN

    2.RN中的常用组件-----活动指示器

    <ActivityIndicator  size="small/large" color="#f00"/>

    显示一个"加载中"的圆环动画图片;默认为小号,可以设置大号;

    注意:页面中最后一个"活动指示器"的color会影响前面所有指示器的颜色.

    使用本地图片时的经典错误:

    this.state.list = [ 

          './src/asset1/0.jpg',

          './src/assets/1.jpg'

    ]

    <View>

      {
         this.state.list.map((e, i)=>{

               return  <Image  source={require(e)}/>

         })

      }

    </View>

    错误提示:  Invalid call at line xx: require(e)

    错误原因:  require放在循环/选择中,变为动态导入,Webpack打包时不支持动态导入!

    解决方法:  把动态导入变为静态导入:

    this.state.list = [ 

          require('./src/asset1/0.jpg'),

            require('./src/assets/1.jpg')

    ]

    <View>

      {
         this.state.list.map((e, i)=>{

            return  <Image  source={ e }/>

         })

      }

    </View>

    3.RN中的常用组件——开关

      <Switch  value={ 布尔变量 }  onValueChange={事件处理函数} />

      属于需要进行“双向数据绑定”的受控组件,value是boolean数据

    4.RN中的常用组件——触摸反馈

      <TouchableOpacity>

    其它组件(文字/图片等)

      </TouchableOpacity>

      提示:RN中提供了四个触摸反馈组件,其中TouchableOpacity是触摸后发生透明度的改变

     

    5.RN中的常用组件——简单列表——难点&重点

      高性能的列表组件——底层值挂载当前需要显示的列表项,以及上方/下方若干条即将被显示的列表项,更大范围内列的表项不进行挂载

      <FlatList  data={数组}  renderItem={ this._renderItem }  keyExtractor={this._keyExtractor} />

      _renderItem = ( obj )=>{

    //obj.item:是一个数据   obj.index:是该数据的下标

    return (表示一个列表项的JSX)

      }

    FlatList组件的属性:

    ①data:必需的,数组类型,指定列表要渲染的数据

    ②renderItem:必需的,函数类型,指定如何渲染一个列表项

    ③keyExtractor:函数类型,指定如何提取每个列表项的key

     

    ④ListHeaderComponent:函数类型,指定列表头部内容

    ⑤ListFooterComponent:函数类型,指定列表尾部内容

    ⑥ItemSeparatorComponent:函数类型,指定列表项间的分隔条内容

     

    ⑦onEndReached:事件,指代滚动到了列表尾部

    ⑧onEndReachedThreshold:数字,0~1之间,指定滚动到距离底部还剩多远时触发onEndReached事件

    6.RN中的路由和导航实现

       提示:RN的运行不依赖于浏览器!没有window.navigator/history对象!甚至

    没有Page的概念!------RN中切换是Screen,不是Page.

       RN官方没有提供导航组件,推荐使用第三方导航组件:React Navigation

       React  Navigation的官网:https://reactnavigation.org/

       ReactNavigation 的使用步骤:

       ①在当前项目下载必须的NPM包

               npm  i   react-navigation

               npm  i   react-navite-gesture-hanlder

               npm  i   react-native-reanimated

       ②创建路由词典

       ③应用路由词典

       ④访问测试

              

  • 相关阅读:
    *CodeForces 1325E
    CodeForces 1325D
    线性基
    分块
    RabbitMQ学习笔记(四、RabbitMQ队列)
    RabbitMQ学习笔记(三、生产者与消费者)
    RabbitMQ学习笔记(二、RabbitMQ结构)
    RabbitMQ学习笔记(一、消息中间件基础)
    SpringCloud学习笔记(十、SpringCloud Sleuth)
    SpringCloud学习笔记(九、SpringCloud Stream)
  • 原文地址:https://www.cnblogs.com/sna-ling/p/12355622.html
Copyright © 2011-2022 走看看