【RN - 基础】之Image使用简介
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使用简介的更多相关文章
- J2EE基础之Web服务简介
J2EE基础之Web服务简介 1.什么是Web服务? 在人们的日常生活中,经常会查询网页上某城市的天气信息,这些信息都是动态的.实时的,它是专业的气象站提供的一种服务.例如,在网上购物时,通常采用网上 ...
- Java基础-JVM调优策略简介
Java基础-JVM调优策略简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.JVM结构分析 1>.JVM结构图 2>.JVM运行时数据区功能说明 JVM管理的内 ...
- Django 06 Django模型基础1(ORM简介、数据库连接配置、模型的创建与映射、数据的增删改查)
Django 06 Django模型基础1(ORM简介.数据库连接配置.模型的创建与映射.数据的增删改查) 一.ORM系统 #django模型映射关系 #模型类-----数据表 #类属性-----表字 ...
- Spring Boot 基础,理论,简介
Spring Boot 基础,理论,简介 1.SpringBoot自动装配 1.1 Spring装配方式 1.2 Spring @Enable 模块驱动 1.3 Spring 条件装配 2.自动装配正 ...
- 【RN - 基础】之View使用简介
简介 View是一个容器,支持FlexBox布局. View既可以作为容器容纳其他组件,也可以作为一个组件包含进另一个容器中. 无论运行在哪个平台上,View都会直接对应这个平台的原生视图,如iOS中 ...
- 【RN - 基础】之TextInput使用简介
TextInput组件允许用户在应用中通过键盘输入文本信息,其使用方法和Text.Image一样简单,实例代码如下: <TextInput placeholder={'请输入用户名'} styl ...
- 【RN - 基础】之Text使用简介
基本用法 Text组件是React Native中的一个重要组件,相当于iOS中的UILabel和Android中的TextView.Text组件用来存放文本数据.下面是一个简单的例子: import ...
- 爬虫基础(五)-----scrapy框架简介
---------------------------------------------------摆脱穷人思维 <五> :拓展自己的视野,适当做一些眼前''无用''的事情,防止进入只关 ...
- python 基础 10.0 nosql 简介--redis 连接池及管道
一. NOSQL 数据库简介 NoSQL 泛指非关系型的数据库.非关系型数据库与关系型数据库的差别 非关系型数据库的优势: 1.性能NOSQL 是基于键值对的,可以想象成表中的主键和值的对应关系,而且 ...
随机推荐
- 【MySQL】MySQL Workbench快捷键小结
执行当前行,ctrl+enter 执行整篇sql脚本: ctrl+shift+enter 格式化sql语句(美化sql语句):ctrl+b 自动补全:ctrl+space(似乎win10中这个快捷键失 ...
- 还不会用FindBugs?你的代码质量很可能令人堪忧
前言 项目中代码质量,往往需要比较有经验的程序员的审查来保证.但是随着项目越来越大,代码审查会变得越来越复杂,需要耗费越来越多的人力.而且程序员的经验和精力都是有限的,能审查出问题必定有限.而在对代码 ...
- 在VMware15中安装虚拟机并使用Xshell连接到此虚拟机(超详细哦)
首先点击创建新的虚拟机. 此处默认, 点击下一步 默认, 点击下一步 此处可以设置你的虚拟机名称和安装位置(强烈建议不要将安装位置放在系统盘). 此处可根据自己的电脑配置来设置(建议2,4),后续可以 ...
- javascript创建一个基于数组的栈结构
栈是一种遵从后进先出(LIFO)原则的有序集合.新添加或待删除的元素都保存在栈的同 一端,称作栈顶,另一端就叫栈底.在栈里,新元素都靠近栈顶,旧元素都接近栈底. 栈拥有以下方法: push(eleme ...
- 揭秘——TCP的三次握手和四次挥手
1.前言 本文以博主在某次前端面试中被问到"什么是TCP协议中的三次握手和四次挥手?"为契机,经过整理教材.百度百科以及他人博客,再结合博主自身的理解,尽可能的以通俗易懂的语言来解 ...
- 曹工杂谈:为什么很少需要改Spring源码,因为扩展点太多了,说说Spring的后置处理器
前言 最近发了好几篇,都是覆盖框架源码,但是spring的代码,我是从没覆盖过,毕竟,如果方便扩展,没谁想去改源码,而spring就是不需要改源码的那个,真的是"对扩展开放,对修改关闭&qu ...
- Uber Go 语言编码规范
Uber Go 语言编码规范 Uber 是一家美国硅谷的科技公司,也是 Go 语言的早期 adopter.其开源了很多 golang 项目,诸如被 Gopher 圈熟知的 zap.jaeger 等.2 ...
- pssh系列工具
一.pssh简介及安装 首先我们来了解下什么是pssh,它是干嘛用的?pssh是一个python编写可以在多台服务器上执行命令的工具,也可以实现文件复制.换而言之就是一个批量管理多台服务器的一个小工具 ...
- 网站搭建 - IIS 填坑 - 终于建好站了 linux + Windows
之前的IIS可以运行Windows的网页,但是对于php的网页,还是不能够支持,于是决定重新来一遍. (把踩的坑重新描述一下,在下载完php之后,解压后不要急着改文件,跳到最后的页面去改.) 以便能够 ...
- RocketMQ消息轨迹-设计篇
目录 1.消息轨迹数据格式 2.记录消息轨迹 3.如何存储消息轨迹数据 @(本节目录) RocketMQ消息轨迹主要包含两篇文章:设计篇与源码分析篇,本节将详细介绍RocketMQ消息轨迹-设计相关. ...