集成腾讯X5实现在线预览文档功能

2020-03-27  本文已影响0人  ziabo_yu

公司的项目有一个预览文档功能,之前接触过google的,发现比较难用,最后权衡再三,还是决定使用腾讯x5来实现,虽然有一些小bug但整体功能性实现的还是挺好的,就是网上的教程杂七杂八的很多都没有说到重点,就决定自己写一篇博客,省的新人踩坑,好的话不多说,步入正题。

private void openFile(String path) {
        //通过bundle把文件传给x5,打开的事情交由x5处理
        Bundle bundle = new Bundle();
        //传递文件路径
        bundle.putString("filePath", path);
        //临时的路径
        bundle.putString("tempPath", Constants.DOCUMENT_DOWNLOAD_PATH);
        TbsReaderView  readerView = new TbsReaderView(this, (integer, o, o1) -> {
         });
        //加载文件前的初始化工作,加载支持不同格式的插件
        boolean b = readerView.preOpen(getFileType(path), false);
        if (b) {
            readerView.openFile(bundle);
        }
        // 往容器里添加TbsReaderView控件
        frameLayout.addView(readerView);
    }

xml中核心部分如下:

<FrameLayout
        android:id="@+id/frameLayout"
        android:background="@color/white_color"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.tencent.smtt.sdk.WebView
            android:id="@+id/webView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scrollbars="none" />
    </FrameLayout>

在onDestory中要及时销毁readerView

@Override
    protected void onDestroy() {
        if (webView != null) {
            ViewGroup parent = (ViewGroup) webView.getParent();
            if (parent != null) {
                parent.removeView(webView);
            }
            webView.clearHistory();
            webView.clearCache(true);
            webView.destroy();
            webView = null;
        }
        if (readerView != null) {
            readerView.onStop();
        }
        super.onDestroy();
    }

总结

上述便是使用腾讯x5预览文件的全部代码,需要注意的是文件必须已经下载到本地,且本地使用wps等打开没有什么问题,文件预览部分情况下可能出问题,但是几率不是很大。好了,谢谢观看!若本文对您有用,请给个赞!

上一篇下一篇

猜你喜欢

热点阅读