美文网首页android经验总结kotlin频道
weex入门——实现最简单的helloworld加载本地js

weex入门——实现最简单的helloworld加载本地js

作者: next_discover | 来源:发表于2018-07-10 23:47 被阅读5次

    结合官网https://weex-project.io/cn/guide/index.html一步步来,
    然后最大的坑是:

    weex compile hello.we  js
    

    .we生成的js文件加载不出来,

    把.we后缀的文件全部改为.vue的文件再使用下面的命令生成js文件,

    weex compile hello.vue  js
    

    然后再使用原生加载才可以,坑爹....

    所需要的库文件

    compile 'com.android.support:recyclerview-v7:24.2.1'
        compile 'com.android.support:appcompat-v7:24.2.1'
        compile 'com.alibaba:fastjson:1.1.45'
        compile 'com.taobao.android:weex_sdk:0.9.5@aar'
        compile 'com.github.bumptech.glide:glide:3.7.0'
    

    自己实现的ImageAdapter

    public class ImageAdapter implements IWXImgLoaderAdapter {
        @Override
        public void setImage(String url, ImageView view, WXImageQuality quality, WXImageStrategy strategy) {
            //实现你自己的图片下载,否则图片无法显示。
            Glide.with(view.getContext())
                    .load(url)
                    .into(view); 
        }
    }
    

    application里面的初始化,记得在Androidmanifest文件里注册

    public class App extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            InitConfig config=new InitConfig.Builder().setImgAdapter(new ImageAdapter()).build();
            WXSDKEngine.initialize(this,config);
        }
    }
    

    具体加载js文件的地方

    public class MainActivity extends AppCompatActivity implements IWXRenderListener {
        WXSDKInstance mWXSDKInstance;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mWXSDKInstance = new WXSDKInstance(this);
            mWXSDKInstance.registerRenderListener(this);
            mWXSDKInstance.render("WXSample", WXFileUtils.loadAsset("home.js",this), null, null, -1, -1, WXRenderStrategy.APPEND_ASYNC);
        }
        @Override
        public void onViewCreated(WXSDKInstance instance, View view) {
            setContentView(view);
        }
        @Override
        public void onRenderSuccess(WXSDKInstance instance, int width, int height) {
        }
        @Override
        public void onRefreshSuccess(WXSDKInstance instance, int width, int height) {
        }
        @Override
        public void onException(WXSDKInstance instance, String errCode, String msg) {
        }
        @Override
        protected void onResume() {
            super.onResume();
            if (mWXSDKInstance != null) {
                mWXSDKInstance.onActivityResume();
            }
        }
        @Override
        protected void onPause() {
            super.onPause();
            if (mWXSDKInstance != null) {
                mWXSDKInstance.onActivityPause();
            }
        }
        @Override
        protected void onStop() {
            super.onStop();
            if (mWXSDKInstance != null) {
                mWXSDKInstance.onActivityStop();
            }
        }
        @Override
        protected void onDestroy() {
            super.onDestroy();
            if (mWXSDKInstance != null) {
                mWXSDKInstance.onActivityDestroy();
            }
        }
    }
    

    我安装的最新版的weex脚手架单纯的用.we生成js是不行的,如果可以的朋友请留言交流下
    最后我用.vue生成的js文件就可以

    项目的基本结构就是这样


    image.png

    相关文章

      网友评论

        本文标题:weex入门——实现最简单的helloworld加载本地js

        本文链接:https://www.haomeiwen.com/subject/uskcpftx.html