Weex中的跨设备本地资产位置

时间:2017-10-31 15:32:17

标签: android ios vuejs2 weex

使用Weex 0.16我生成了默认的" WeexDemo"适用于Web,iOS和Android的项目,默认索引文件可以正常运行。

我试图弄清楚我可以放置图像文件和其他资源的文件夹位置。我更改了" logoUrl"从http网址到相对路径(' bg.png')

  • 在浏览器上通过8080端口Web根服务是项目根文件夹,所以如果我将bg.png复制到" dist"文件夹我可以在logoUrl是" /dist/bg.png"
  • 时看到它
  • 在iOS项目" /dist/bg.png"不起作用,因为根似乎是" dist"文件夹本身,如果我改为logoUrl" bg.png",它可以工作。
  • 在Android项目中," /dist/bg.png"或" bg.png"失败。我可以在文件夹中看到" / platforms / android / app / src / main / assets / dist" bg.png文件已被复制,但我似乎无法访问它。

是否有任何解决方案可以使用同一文件夹删除资产并让所有设备都可以访问这些资源?

1 个答案:

答案 0 :(得分:2)

请执行以下操作:

在您的申请类中:

 WXSDKEngine.registerComponent("yourImage", YourImage.class);

创建类YourImage.java,它应该如下所示:

public class YourImage extends WXComponent<ImageView> {

public YourImage(WXSDKInstance instance, WXDomObject dom, WXVContainer parent) {
    super(instance, dom, parent);
}

@Override
protected ImageView initComponentHostView(@NonNull Context context) {
    ImageView imageView = new ImageView(context);
    return imageView;
}

@WXComponentProp(name = Constants.Name.SRC)
public void setSrc(String src) {

    if (src == null) {
        return;
    }

    if(null != getHostView()) {       
      Picasso.with(WXEnvironment.getApplication()).load(src).into(getHostView());
    }
  }
}

在你的vue / js文件中

<yourImage class="image" :src="url"> </yourImage>

在您的WeexUIFragment / Activity中:在通过地图加载页面数据时,添加一个键和值,如下所示:

    HashMap<String, Object> map = new HashMap<>();

    map.add("image_url", "android local asset url")
    map.put("PAGENAME", "");
    mWXSDKInstance = new WXSDKInstance(YourCurrentActivity.this);
    mWXSDKInstance.registerRenderListener(YourCurrentActivity.this);
    mWXSDKInstance.render(pageName, weexJSUrl, map, null, WXRenderStrategy.APPEND_ASYNC);

在脚本/数据块的JS文件中检索资产本地图像url:

const url = _.get(weex,'config.image_url')

如果您需要更多帮助:您可以查看以下链接中的“组件扩展”部分:    https://weex.incubator.apache.org/guide/extend-android.html