Image组件是用来加载图片的。React Native项目加载图片往往有三种方式:

  • 从React Native项目中加载图片;
  • 从APP项目中加载图片;
  • 从网络中加载图片。

Image组件加载图片

加载项目图片资源

  所谓加载React Native项目中的图片资源,指的是加载React Native项目中除了android、ios、node_module文件夹之外的其他文件夹中的图片资源。

  加载React Native项目中的资源图片,可以使用 require 方法。实例代码如: <Image source={require('./images/apple_logo.png')}/> 。

  React Native可以根据平台来选择不同的图片,例如,图片文件夹下有 logo.android.png 和 logo.ios.png ,则RN会根据当前的设备是安卓机还是苹果机来动态的加载相应设备下的图片。

  【注意】React Native使用 require 方法加载项目图片资源的方法暂时不支持字符串拼接,即: <Image source={require('./images/' + 'apple_logo.png')}> 这种形式会报如下图所示的错误:

  这里补充一些关于路径的问题: ./ 表示当前目录, ./../ 表示当前目录的上一级目录,依此类推。

加载APP图片资源

  这里的加载APP中的图片资源,都是从打包后的APK文件中反编译出来的图片资源,对于Android项目,图片必须存在于 app/src/main/res/drawable 文件夹内;对于iOS项目,图片必须存在于 Images.xcassets 文件夹内。

  上面说,无论Android还是iOS,都是从打包后的APK文件中取图片的,因此,我们在将图片放到Android或iOS的相应文件夹下后,需要先运行一遍项目,或者Build一下APK,这样才能保证项目的APK文件中打包了刚刚放进去的图片。

  实例代码如: <Image source={{uri: 'apple_logo'} style={{width:40, height:40}}/> 。

  【注意1】这种方式获取到的图片不提供安全检查,因此我们需要自己指定图片大小,否则图片显示不出来。

  【注意2】使用这种方式获取图片,uri中不能指定图片后缀,即只需要指定文件名即可。

  【注意3】 uri 方式支持字符串拼接,因此可以解决 require 方法不能拼接的问题,即解决方法是将图片放入APK中。

加载网络图片资源

  加载网络图片同样用到了 uri 的方法,实例代码如: <Image source={{uri:'http://.../apple_logo.png'}} style={{width:200, height:200}} /> 。

  【注意】使用这种方法加载网络图片,同样必须指定图片的尺寸。

Image作为其他组件的背景图片

  Image可以作为其他组件的背景图片展示,其方法是将Image嵌套在这些组件的外层,实例代码如下:

<Image source={{ uri: 'logo' }} style={{ width: 150, height: 150 }}>
<Text style={{ color: 'green', fontSize: 20, backgroundColor: 'transparent' }}>我有一个背景图片!</Text>
<Text style={{ color: 'green', fontSize: 20, backgroundColor: 'transparent' }}>我有一个背景图片!</Text>
</Image>

Image的属性

resizeMode :当加载的图片的尺寸与设置的宽高不匹配时,决定怎样去加载图片,有三个可选值:cover(等比例缩放,使图片最短边占满组件)、contain(等比例缩放,使图片最长边占满组件)、stretch(拉伸铺满,可能改变图片外表比例)。

source :图片的资源,上面已经介绍,这里不加赘述。

Image的style

名称 value 平台
backfaceVisibility enum(‘visible’, ‘hidden’) iOS与Android
backgroundColor 颜色 iOS与Android
borderBottomLeftRadius number iOS与Android
borderBottomRightRadius number iOS与Android
borderColor 颜色 iOS与Android
borderRadius number iOS与Android
borderTopLeftRadius number iOS与Android
borderTopRightRadius number iOS与Android
borderWidth number iOS与Android
opacity enum(‘visible’, ‘hidden’) iOS与Android
overflow enum(‘visible’, ‘hidden’) iOS与Android
tintColor 颜色,改变所有非透明像素的颜色 iOS与Android
overlayColor string类型,当图片组件有圆角,指定overlayColor将导致剩下的部分被纯净颜色填充。这个是非常有用的对于Android平台不能实现软件。利用该属性一个典型方式是显示图片背景色然后同时设置overlayColor为背景颜色 Android
defaultSource 当加载图片过程中默认显示的静态图片 iOS

【RN - 基础】之Image使用简介的更多相关文章

  1. J2EE基础之Web服务简介

    J2EE基础之Web服务简介 1.什么是Web服务? 在人们的日常生活中,经常会查询网页上某城市的天气信息,这些信息都是动态的.实时的,它是专业的气象站提供的一种服务.例如,在网上购物时,通常采用网上 ...

  2. Java基础-JVM调优策略简介

    Java基础-JVM调优策略简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.JVM结构分析 1>.JVM结构图 2>.JVM运行时数据区功能说明 JVM管理的内 ...

  3. Django 06 Django模型基础1(ORM简介、数据库连接配置、模型的创建与映射、数据的增删改查)

    Django 06 Django模型基础1(ORM简介.数据库连接配置.模型的创建与映射.数据的增删改查) 一.ORM系统 #django模型映射关系 #模型类-----数据表 #类属性-----表字 ...

  4. Spring Boot 基础,理论,简介

    Spring Boot 基础,理论,简介 1.SpringBoot自动装配 1.1 Spring装配方式 1.2 Spring @Enable 模块驱动 1.3 Spring 条件装配 2.自动装配正 ...

  5. 【RN - 基础】之View使用简介

    简介 View是一个容器,支持FlexBox布局. View既可以作为容器容纳其他组件,也可以作为一个组件包含进另一个容器中. 无论运行在哪个平台上,View都会直接对应这个平台的原生视图,如iOS中 ...

  6. 【RN - 基础】之TextInput使用简介

    TextInput组件允许用户在应用中通过键盘输入文本信息,其使用方法和Text.Image一样简单,实例代码如下: <TextInput placeholder={'请输入用户名'} styl ...

  7. 【RN - 基础】之Text使用简介

    基本用法 Text组件是React Native中的一个重要组件,相当于iOS中的UILabel和Android中的TextView.Text组件用来存放文本数据.下面是一个简单的例子: import ...

  8. 爬虫基础(五)-----scrapy框架简介

    ---------------------------------------------------摆脱穷人思维 <五> :拓展自己的视野,适当做一些眼前''无用''的事情,防止进入只关 ...

  9. python 基础 10.0 nosql 简介--redis 连接池及管道

    一. NOSQL 数据库简介 NoSQL 泛指非关系型的数据库.非关系型数据库与关系型数据库的差别 非关系型数据库的优势: 1.性能NOSQL 是基于键值对的,可以想象成表中的主键和值的对应关系,而且 ...

随机推荐

  1. 星级评分条(RatingBar)的功能与用法

    星级评分条与拖动条有相同的父类:AbsSeekBar,因此它们十分相似.实际上星际评分条与拖动条的用法.功能都十分接近:它们都允许用户通过拖动来改变进度.RatingBar与SeekBar的最大区别在 ...

  2. [Hadoop]Hive-1.2.x安装配置+Mysql安装

    HIve的元数据存储在mysql中,需要配置与MySQL建立连接,除了安装MySQL外还要安装连接的jar包:mysql-connector-java-5.1.47.tar.gz   安装环境:Cen ...

  3. [考试反思]1027csp-s模拟测试90:自我

    其实这套题很好. 但是这次,在T1爆炸的同时,T2和T3并没有出现能弥补的表现. 在AK仍然存在的同时,我居然连一个AC都没有. 所以最后就是一无是处的一场. 考试结束前估分:100+100+30=2 ...

  4. [考试反思]1013csp-s模拟测试71:徘徊

    分差好大...但是从排名上看也许还可以接受? 不算太炸 但是这个还是算了吧... 其实状态不是很好. T1不会,打的搜索,想到一个剪枝但是感觉没什么用,所以没打. 考后打上,85了...打上另一个就9 ...

  5. Jenkins+JMeter+Ant 接口持续集成

    ​JMeter安装 JMeter安装包: 下载地址:https://jmeter.apache.org/download_jmeter.cgi 依赖JDK环境 JDK环境配置: JAVA_HOME   ...

  6. linux4.1内核配置以及编译及千兆网卡dp83867网卡驱动移植

    一  内核配置编译 1首先解压内核 tar jxvf linux-at91-4.1.tar.bz2: 2下载编译链 在ubuntu命令行中输入sudo apt-get install gcc-arm- ...

  7. PHP str_replace的用法

    PHP str_replace的用法 1 替换单个字符<pre><?phpecho str_replace("world","Shanghai" ...

  8. XML解析之Jsoup

    操作xml文件 解析(读取):将文档中的数据解读到内存中 写入:将内存中的数据保存到XML文档中.持久化的存储 解析xml的方式 DOM:将标记语言文档一次性加载进内存,在内存中形成一颗dom树 优点 ...

  9. API网关在API安全性中的作用

    从单一应用程序切换到微服务时,客户端的行为不能与客户端具有该应用程序的一个入口点的行为相同.简单来说就是微服务上的某一部分功能与单独实现该应用程序时存在不同. 目前在使用微服务时,客户端必须处理微服务 ...

  10. java课笔记

    http://127.0.0.1:8088/ http://127.0.0.1:8088/test/index.jsp http://127.0.0.1:8088/test/show 用户 (请求) ...