进阶
自定义文档样式
创建用于展示文档的 activity, 如命名为 CustomDocShowActivity,在 onCreate 回调中接收 SDK 传入的文件相关参数,用户后续打开操作。
... Intent intent = getIntent(); //文件路径,作为传入FileReaderView的path参数 String filePath = intent.getStringExtra(PreviewConfig.PARAM_FILE_PATH); //文件名称, 业务根据需要获取 String fileName = intent.getStringExtra(PreviewConfig.PARAM_FILE_NAME); //文档的url,业务根据需要获取 String fileUrl = intent.getStringExtra(PreviewConfig.PARAM_FILE_URL); if(TextUtils.isEmpty(filePath)){ //如果文件路径为空,表示文档没有加载完成,可以注册监听器,监听文档加载完成后再打开文档 PreviewDocImpl.setProgressListener(this); }else{ //如果文件路径不为空,表示文档已加载完成,可以直接打开 showFile(filePath); } ...
实现进度监听接口 IFileLoadingListener,并设置给 PreviewDocImpl。
定义
public interface IFileLoadingListener { /** * 文件加载失败 * @param url 文件的url */ void loadingFail(String url); /** * 加载进度回调 * @param progress 进度([0,1]) */ void loadingProgress(float progress); /** * 加载完成 * @param url 文件的url * @param path 本地存储路径 */ void loadingFinish(String url, String path); }
example
public class CustomDocShowActivity extends TopBarActivity implements IFileLoadingListener { ... @Override public void loadingFail(String url) { Toast.makeText(this, "加载文件失败", Toast.LENGTH_LONG).show(); } @Override public void loadingProgress(float progress) { Log.i(TAG, "loadingProgress progress = " + progress); } @Override public void loadingFinish(String url, String path) { showFile(path); //加载完成后打开文档 } }
PreviewDocImpl.setProgressListener(this); //给sdk设置监听
使用 FileReaderView 打开文档,传入 SDK 给的 path 参数。
private void showFile(String filePath) { if (mFileReadView != null) { mFileReadView.show(filePath); } }
在 onDestory() 中调用。
@Override protected void onDestroy() { super.onDestroy(); if (mFileReadView != null) { mFileReadView.stop(); } PreviewDocImpl.cancelLoading(); }
在组件初始化时,设置 CustomDocShowActivity.class 为自定义文档展示 ativity。
webView.setDownloadListener(new PreviewDocImpl.Builder() .setActivity((Activity) context) //必须 .setContentActivity(CustomDocShowActivity.class) //设置自定义文档展示Activity .create());
可参见 tmfdemo工程。