1

使用 Weex 0.16 我为 Web、iOS 和 Android 生成了默认的“WeexDemo”项目,并且默认的索引文件可以正常工作。

我正在尝试找出可以放置图像文件和其他资产的文件夹位置。我将“logoUrl”从 http url 更改为相对路径('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 文件已被复制,但我似乎无法访问它。

是否有任何解决方案可以让我使用同一个文件夹来删除资产并使其可供所有设备访问?

4

1 回答 1

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 中:通过 map 加载页面数据时,添加一个键和值,如下所示:

    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

于 2018-05-14T09:56:44.947 回答