进阶指南

使用自定义的UISetting打开页面

SDK提供默认的UI布局用于打开离线包,UI布局元素配置如下:



//打开一个BID
TMFHybridManager.getInstance().startAppById(bid, getCustomUiSettings());
//打开一个URL
TMFHybridManager.getInstance().startAppByUrl(url, getCustomUiSettings());

private UISettings getCustomUiSettings() {
        return new UISettings.Builder()
                .fullScreen(false)//是否全屏
                .dividerColor(getResources().getColor(R.color.poc_gray_D8D8D8))
                .showDivider(false)
                .showMainTitle(true)//是否展示主标题
                .mainTitleText("银行业务交易")//主标题文本
                .mainTitleTextColor(getResources().getColor(R.color.qmui_config_color_red))//主标题文本颜色
                .showSubTitle(true)//是否展示副标题
                .subTitleText("进行中")//副标题文本
                .subTitleTextColor(getResources().getColor(R.color.app_color_blue))//副标题文本颜色
                .setTitleViewBackGroundColor(getResources().getColor(R.color.color_default_black))
                .setBackBtnIcon(R.mipmap.h5_default_back)//返回按钮icon
                .showOptionMenu(true)//是否展示option menu
                .optionMenuIcon0(R.drawable.brand_icon)
                .optionMenuIcon1(R.mipmap.about_logo)
                .showProgress(true)//是否展示架在进度条
                .progressColor(getResources().getColor(R.color.qmui_config_color_red))//进度条颜色
                .build();
    }

使用完全自定义的H5页面

如果上诉的自定义UI不能满足H5页面的展示需求,可以按照如下方法实现对页面的完全自定义。值得一提的是,完全自定义的H5页面是全局生效。

//设置完全自定义的H5展示页面 
TMFHybridManager.getInstance().setCustomView(new TestCustomViewProvider());
//移除完全自定义H5页面
TMFHybridManager.getInstance().setCustomView(null);
//实现 CustomViewProvider 接口,实现相关方法
public class TestCustomViewProvider implements CustomViewProvider {

    @Override
    public IH5TitleViewProvider createTitleView(Context context) {
        return new TestCustomTitleView(context);
    }


    @Override
    public IH5ContentViewProvider createH5ContentView(Context context) {
        return new TestCustomContentView(context);
    }
}

添加全局公共资源包

当制定打开的离线包对公共资源包有依赖时,可以通过下面方法增加对公共资源包的引用;确保通过BID打开离线包时可以正确找到对应的公共资源。

//添加全局公共资源包,bid对应公共资源包bid
TMFHybridManager.getInstance().addCommonResource(bid);

配置虚拟地址

通过BID打开离线包时,默认会使用 http://www.default.com 作为离线包的虚拟地址,可以调用如下的接口设置虚拟地址:

//设置虚拟地址
TMFHybridManager.getInstance().setVirtualAddress("https://www.qq.com");

附带参数打开离线包

当离线包有附加参数添加到Url,可以使用如下的方式进行参数传递:

Bundle bundle = new Bundle();
bundle.putString(OfflineAppBundleKey.KEY_ENTRANCE_PATH, entryPath);//入口文件路径,默认为index.html
bundle.putStringArray(OfflineAppBundleKey.KEY_COMMON_RESOURCES, commonRes);//公共资源包列表
bundle.putString(OfflineAppBundleKey.KEY_URL_PARAMS, stringOfUrlParams);//Url参数,Json字符串格式

//附带参数打开离线包
TMFHybridManager.getInstance().startAppById(id, bundle, UISettings.getDefault());

使用集成视图展示离线包或者URL

SDK中提供了EmbedView用于快速集成打开离线包或者URL。

public class EmbedViewTestActivity extends TopBarActivity {

    private EmbedView embedView;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle bundle = getIntent().getExtras();
        String bidOrUrl = "";
        if (null != bundle) {
            bidOrUrl = bundle.getString("key_bid_url");
        }
      //获取EmbedView实例,并添加到布局
        embedView = TMFHybridManager.getInstance().getOfflineContentView(this, bidOrUrl);
        FrameLayout frameLayout = findViewById(R.id.embed_view_container);
        frameLayout.addView(embedView,
                new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
    }

    @Override
    protected void onResume() {
        super.onResume();
        embedView.onResume();
    }

    @Override
    protected void onStop() {
        super.onStop();
        embedView.onStop();
    }

    @Override
    protected void onPause() {
        super.onPause();
        embedView.onPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        embedView.onDestroy();
    }

    @Override
    protected View getContentView() {
        return LayoutInflater.from(this).inflate(R.layout.activity_embed_view_test, null, false);
    }
}

设置在线资源域名

可以通过下面的方法设置离线包对应的在线资源地址。

//设置在线资源域名
TMFHybridManager.getInstance().setHostForOnlineApp("http://www.qq.com");
Copyright © 2013-2023 Tencent Cloud. all right reserved,powered by GitbookUpdate Time 2023-08-31 14:46:07

results matching ""

    No results matching ""