在这篇文章中Android React Native的使用细节问题提到了 图片使用的问题,也提到了无论用哪种方法都不能加载app内部的图片资源的问题,当时的代码是这样子的

 source={ require('image!icon') } />

在官方文档中也是这么写的Image

Android React Native加载图片资源的正确姿势_第1张图片

但是在另一个页文档中却与其相矛盾的,Images,估计这页文档刚加入不久

Android React Native加载图片资源的正确姿势_第2张图片

也就是说正确的app内部图片加载姿势应该如下

<Image style={{width:100,height:100}} source={{uri:'icon'}} />

当然图片要存在res的drawable目录下,记住uri对应的图片名称是不包含后缀的。这样图片能够被正确加载并且显示出来。

该文章中还提到加载静态图片资源(该方式还存在问题,加载不进来

我在index.android.js同目录下扔了一张名为icon.png的图片,然后使用该方式加载

<Image style={{width:100,height:100}} source={require('./icon.png')}/>

结果是图片并没有加载进来,但是也不报错。姑且不理会它,反正目前版本还不稳定,等正式稳定下来再说。总之现在去学React Native就是一个填坑的过程。

再如果要加载手机存储卡上的图片资源,其方式也很简单,假设我现在要加载sdcard根目录下的icon.png。对应的代码如下

  <Image style={{width:100,height:100}} source={{uri:'file:///sdcard/icon.png'}} />

可以看到使用了file://加上文件的路径/sdcard/icon.png进行加载,当然你还需要加入对应的权限。这样图片就能正确加载了。

网络图片就不说了,之前那篇文章中就已经提到了

  <Image style={{width:100,height:100}} source={{uri:'https://facebook.github.io/react/img/logo_og.png'}} />

也就是说,目前为止就是静态资源加载不了,这也是个bug,将来的某个版本肯定会修复的,临时的解决方法见https://github.com/WoLfulus/react-native/commit/33e2d052b6e2e3e6b3595572abbc3cb9b66d5755

打开node_modules\react-native\Libraries\Image\resolveAssetSource.js文件,将

function getScaledAssetPath(asset) {  var scale = pickScale(asset.scales, PixelRatio.get());  var scaleSuffix = scale === 1 ? '' : '@' + scale + 'x';  var assetDir = getBasePath(asset);  return assetDir + '/' + asset.name + scaleSuffix + '.' + asset.type;}

修改为

function getScaledAssetPath(asset) {  var scale = pickScale(asset.scales, PixelRatio.get());  var scaleSuffix = scale === 1 ? '' : '@' + scale + 'x';  var assetDir = getBasePath(asset);  //return assetDir + '/' + asset.name + scaleSuffix + '.' + asset.type;   var imagePath = assetDir + '/' + asset.name + scaleSuffix + '.' + asset.type;  if (imagePath[0] == "/" || imagePath[0] == "\\") {      imagePath = imagePath.substr(1);  }  return imagePath;}

这时候你再使用

<Image style={{width:100,height:100}} source={require('./icon.png')}/>

就可以正常的加载并显示静态图片资源的了。

文章写作时,React Native Android的版本是0.14.2,开发环境为win 7 X64,相信不久的将来,这些问题都会被一一修复。

更多相关文章

  1. Android仿淘宝首页UI(附代源代码及示例图片)
  2. Android换肤功能设计与实现(5)——网络加载及图片内存管理
  3. Android OpenGLES2.0(八)——纹理贴图之显示图片
  4. 如何有效的清除Android中无用的资源(静态代码分析)
  5. Android处理图片OOM的若干方法小结
  6. android 图片圆角 遮罩_安卓圆角、背景遮罩。覆盖实现方式(适用于
  7. Android 图片资源的异步加载2

随机推荐

  1. 〖Android〗/system/etc/event-log-tags
  2. Android应用开发提高系列(5)——Android动
  3. Android(安卓)之 Bitmap 和 File 相互转
  4. 不用SDK manager 下载 Android sdk 和 pl
  5. android camera Intent调用
  6. android 登陆、注册、并个指定用户充值
  7. android adb配置环境变量
  8. Android ADB server didn't ACK * failed
  9. Android共享数据ContentProvider的使用
  10. 求 在独立service 中 调用contentprovide