Foxit PDF SDK for Android版本的默认界面现在基本和移动端的阅读器靠拢,具有了更多的标注的编辑功能,但是不是所有的用户都要那么多的工具菜单。这样就得修改uiextensions_src来实现。
以如何把签名和橡皮擦挪到最顶端的菜单栏为例。需要有以下的几个步骤:
1.添加2个工具栏按钮:
“complete_pdf_viewer” demo的”PDFReaderFragment.java”文件中”mUiExtensionsManager = new
UIExtensionsManager(getActivity().getApplicationContext(), pdfViewerCtrl, config);”之后添加以下代码:
mUiExtensionsManager.getBarManager().addItem(IBarsHandler.BarName.BOTTOM_BAR, BaseBar.TB_Position.Position_CENTER, R.string.fx_string_pencil, R.drawable.mt_iv_pencil, 0, new IBarsHandler.IItemClickListener() { @Override public void onClick(View v) { InkModule inkModule = (InkModule) mUiExtensionsManager.getModuleByName(Module.MODULE_NAME_INK); if (inkModule != null) { mUiExtensionsManager.setCurrentToolHandler(inkModule.getToolHandler()); mUiExtensionsManager.changeState(ReadStateConfig.STATE_ANNOTTOOL); } } }); mUiExtensionsManager.getBarManager().addItem(IBarsHandler.BarName.BOTTOM_BAR, BaseBar.TB_Position.Position_CENTER, R.string.fx_string_eraser, R.drawable.mt_eraser_normal, 0, new IBarsHandler.IItemClickListener() { @Override public void onClick(View v) { EraserModule eraserModule = (EraserModule) mUiExtensionsManager.getModuleByName(Module.MODULE_NAME_ERASER); if (eraserModule != null) { mUiExtensionsManager.setCurrentToolHandler(eraserModule.getToolHandler()); mUiExtensionsManager.changeState(ReadStateConfig.STATE_ANNOTTOOL); } } });
2. 修改工具栏的响应状态
uiextensions_src工程中修改”UIExtensionsManager.java”文件,以下函数中
private void changeToolBarState(ToolHandler oldToolHandler, ToolHandler newToolHandler) { ..... if (newToolHandler instanceof SignatureToolHandler) { triggerDismissMenuEvent(); mMainFrame.resetAnnotCustomBottomBar(); mMainFrame.resetAnnotCustomTopBar(); changeState(ReadStateConfig.STATE_SIGNATURE); } else if (newToolHandler != null) { changeState(ReadStateConfig.STATE_ANNOTTOOL); } else if (getState() == ReadStateConfig.STATE_ANNOTTOOL) { changeState(ReadStateConfig.STATE_NORMAL); // 原先是STATE_Edit } if (oldToolHandler instanceof SignatureToolHandler && newToolHandler == null) { changeState(ReadStateConfig.STATE_NORMAL); } ..... }
3. 修改Toolhandler的响应
铅笔工具的handler文件InkToolHandler.java 中修改以下地方
private void resetAnnotBar(){ mUiExtensionsManager.getMainFrame().getToolSetBar().removeAllItems(); mOKItem = new BaseItemImpl(mContext); mOKItem.setTag(ToolbarItemConfig.ITEM_ANNOT_BAR_OK); mOKItem.setImageResource(R.drawable.rd_annot_create_ok_selector); mOKItem.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mUiExtensionsManager.changeState(ReadStateConfig.STATE_NORMAL); // 原先是STATE_Edit mUiExtensionsManager.setCurrentToolHandler(null); } }); ..... }
橡皮擦工具的handler文件EraserToolHandler.java 中修改以下地方
private void resetAnnotBar(){ mUiExtensionsManager.getMainFrame().getToolSetBar().removeAllItems(); mOKItem = new BaseItemImpl(mContext); mOKItem.setTag(ToolbarItemConfig.ITEM_ANNOT_BAR_OK); mOKItem.setImageResource(R.drawable.rd_annot_create_ok_selector); mOKItem.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mUiExtensionsManager.changeState(ReadStateConfig.STATE_NORMAL); // 原先是STATE_Edit mUiExtensionsManager.setCurrentToolHandler(null); } }); .... }
修改完后的界面如下: