weex集成至android項(xiàng)目

如何將weex集成至已有項(xiàng)目

1.在app level的build.gradle中添加依賴庫(kù)

    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:recyclerview-v7:25.3.1'
    compile 'com.android.support:support-v4:25.3.1'
    compile 'com.alibaba:fastjson:1.1.57.android'
    compile 'com.taobao.android:weex_sdk:0.11.0@aar'

2.實(shí)現(xiàn)IWXImgLoaderAdapter接口

package reed.demoweex;

import android.widget.ImageView;

import com.taobao.weex.adapter.IWXImgLoaderAdapter;
import com.taobao.weex.common.WXImageStrategy;
import com.taobao.weex.dom.WXImageQuality;

/**
 * Created by thinkreed on 2017/5/26.
 */

public class ImageAdapter implements IWXImgLoaderAdapter {
    @Override
    public void setImage(String url, ImageView view, WXImageQuality quality, WXImageStrategy strategy) {

    }
}

3.實(shí)現(xiàn)一個(gè)WXApplication類

package reed.demoweex;

import android.app.Application;

import com.taobao.weex.InitConfig;
import com.taobao.weex.WXSDKEngine;

/**
 * Created by thinkreed on 2017/5/26.
 */

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

4.選擇MainActivity作為weex的遠(yuǎn)程渲染頁(yè)面

package reed.demoweex;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;

import com.taobao.weex.IWXRenderListener;
import com.taobao.weex.WXSDKInstance;
import com.taobao.weex.common.WXRenderStrategy;

import java.util.HashMap;
import java.util.Map;

public class MainActivity extends AppCompatActivity implements IWXRenderListener {


    private static final int REQUEST_CODE_FOR_MODIFY_INTERNET = 0;
    private static final int REQUEST_CODE_FOR_ACCESS_NETWORK_STATE = 1;
    private static String TEST_URL = "http://dotwe.org/raw/dist/6fe11640e8d25f2f98176e9643c08687.bundle.js";
    WXSDKInstance mWXSDKInstance;
    private FrameLayout mContainer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        checkApiVersionAndPermission();

        mContainer = (FrameLayout) findViewById(R.id.container);

        mWXSDKInstance = new WXSDKInstance(this);
        mWXSDKInstance.registerRenderListener(this);
        /**
         * 第一個(gè)參數(shù)pageName:自定義的String類型包名浅缸,這里命名為demoweex
         * 第二個(gè)參數(shù)url:遠(yuǎn)程bundle js文件既.we 文件經(jīng)過(guò)transform之后的js文件的下載地址,這里使用weex官方提供的示例
         * 第三個(gè)參數(shù)options:初始化時(shí)傳入WEEX的參數(shù)残制,比如 bundle JS文件地址
         * 第四個(gè)參數(shù)jsonInitData,可傳null值
         * 第五個(gè)參數(shù)flag:渲染策略设江。WXRenderStrategy.APPEND_ASYNC:異步策略先返回外層View悦荒,其他View渲染完成后調(diào)用onRenderSuccess。
         * WXRenderStrategy.APPEND_ONCE 所有控件渲染完后后一次性返回。
         */
        Map<String, Object> options = new HashMap<>();
        options.put(WXSDKInstance.BUNDLE_URL, TEST_URL);
        mWXSDKInstance.renderByUrl("demoweex",TEST_URL,options,null,WXRenderStrategy.APPEND_ONCE);
    }


    @Override
    public void onViewCreated(WXSDKInstance instance, View view) {
        if (view.getParent() != null) {
            ((ViewGroup) view.getParent()).removeView(view);
        }
        mContainer.addView(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 onStart() {
        super.onStart();
        if (mWXSDKInstance != null) {
            mWXSDKInstance.onActivityStart();
        }
    }

    @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();
        }
    }

    private void checkApiVersionAndPermission() {
        int currentVersion = android.os.Build.VERSION.SDK_INT;
        if (currentVersion >= Build.VERSION_CODES.M) {

            if (ActivityCompat.checkSelfPermission(this,
                    Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(this,
                        new String[] {Manifest.permission.INTERNET},
                        REQUEST_CODE_FOR_MODIFY_INTERNET);
            }

            if (ActivityCompat.checkSelfPermission(this,
                    Manifest.permission.ACCESS_NETWORK_STATE) != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(this,
                        new String[] {Manifest.permission.ACCESS_NETWORK_STATE},
                        REQUEST_CODE_FOR_ACCESS_NETWORK_STATE);
            }
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                           @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case REQUEST_CODE_FOR_MODIFY_INTERNET:
                if (grantResults.length <= 0
                        || grantResults[0] != PackageManager.PERMISSION_GRANTED) {
                    // TODO: 16/5/26 not decide yet....request again or close the application
                }
                break;
            case REQUEST_CODE_FOR_ACCESS_NETWORK_STATE:
                if (grantResults.length <= 0
                        || grantResults[0] != PackageManager.PERMISSION_GRANTED) {
                    // TODO: 16/5/26 not decide yet....request again or close the application
                }
                break;
            default:
                break;
        }
    }
}

activity_main布局文件如下

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_network"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></FrameLayout>

</RelativeLayout>

5.在AndroidManifest.xml中加上需要的INTERNET權(quán)限以及指定application為WXApplication

<uses-permission android:name="android.permission.INTERNET"/>
android:name=".WXApplication"

以上步驟完成读跷,在android studio中ctrl + r啊掏,將項(xiàng)目調(diào)試運(yùn)行蠢络,結(jié)果如下:

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市迟蜜,隨后出現(xiàn)的幾起案子刹孔,更是在濱河造成了極大的恐慌,老刑警劉巖娜睛,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件髓霞,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡微姊,警方通過(guò)查閱死者的電腦和手機(jī)酸茴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)兢交,“玉大人薪捍,你說(shuō)我怎么就攤上這事。” “怎么了酪穿?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵凳干,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我被济,道長(zhǎng)救赐,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任只磷,我火速辦了婚禮经磅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钮追。我一直安慰自己预厌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布元媚。 她就那樣靜靜地躺著轧叽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪刊棕。 梳的紋絲不亂的頭發(fā)上炭晒,一...
    開(kāi)封第一講書(shū)人閱讀 52,713評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音甥角,去河邊找鬼网严。 笑死,一個(gè)胖子當(dāng)著我的面吹牛嗤无,可吹牛的內(nèi)容都是我干的屿笼。 我是一名探鬼主播,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼翁巍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼驴一!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起灶壶,我...
    開(kāi)封第一講書(shū)人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤肝断,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后驰凛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體胸懈,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年恰响,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了趣钱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胚宦,死狀恐怖首有,靈堂內(nèi)的尸體忽然破棺而出燕垃,到底是詐尸還是另有隱情,我是刑警寧澤井联,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布卜壕,位于F島的核電站,受9級(jí)特大地震影響烙常,放射性物質(zhì)發(fā)生泄漏轴捎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一蚕脏、第九天 我趴在偏房一處隱蔽的房頂上張望侦副。 院中可真熱鬧,春花似錦驼鞭、人聲如沸跃洛。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至葱蝗,卻和暖如春穴张,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背两曼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工皂甘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人悼凑。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓偿枕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親户辫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子渐夸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,327評(píng)論 25 707
  • 原文地址:Android Studio 簡(jiǎn)單介紹和使用問(wèn)題小結(jié) Google在2013的I/O開(kāi)發(fā)者大會(huì)上引入的該...
    如若成楓閱讀 2,201評(píng)論 0 3
  • 1 背景 一個(gè)項(xiàng)目開(kāi)發(fā)必然會(huì)涉及團(tuán)隊(duì)協(xié)作,而工程質(zhì)量就需要團(tuán)隊(duì)去保證渔欢。一般我們期望的代碼:無(wú)潛在風(fēng)險(xiǎn)墓塌、無(wú)重復(fù)邏輯、...
    zyl06閱讀 3,225評(píng)論 5 16
  • “中午過(guò)來(lái)吃飯嗎?我買(mǎi)了好多菜” “我在五三這邊給學(xué)生上課呢垫挨,下午兩點(diǎn)還要在水南那邊上課韩肝,并且不...
    素心如簡(jiǎn)meng閱讀 256評(píng)論 0 1
  • ??調(diào)伏身心:昨晚練習(xí)靜坐冥想20多分鐘,收起紛繁亂飛的思緒九榔,靜心冥想哀峻,然后平靜地入睡涡相,竟然一覺(jué)睡到早上5:30,...
    陳俊寧閱讀 239評(píng)論 0 0