BerryMail新版本里有个附件预览的功能,COOL.具体可以参看这里,http://www.berrymail.cn/berrymail-v-1-2-0-0-now-available.html
顺便借一下它那里的图吧.
我第一眼看见这个图,惊呆了,够酷够炫,够强大.
考虑到预览图片,我觉得还是很简单的.整个预览的东西可以作为一个整体自定义一个控件,实际上这没什么困难的.
我唯一感兴趣的是如何在编写邮件的编辑器里加入这个控件呢.研究了一把,搞定.
先看看我做的结果 吧
直接贴代码,看看是如何实现的.
public static void main(String[] args) { EditorInEmail eie = new EditorInEmail(); eie.addMenuItem(); } /** * Constructor */ public EditorInEmail() { } /** * Add the menu items to email view/edit */ private void addMenuItem() { //define AttachmentMenuItem attachMemuItem = new AttachmentMenuItem(0); //add the defined menu item into email view. ApplicationMenuItemRepository.getInstance() .addMenuItem(ApplicationMenuItemRepository.MENUITEM_EMAIL_EDIT , attachMemuItem); }
下面是菜单的实现.
public class AttachmentMenuItem extends ApplicationMenuItem { public AttachmentMenuItem(int order) { super(order); } /** * Override */ public Object run(Object context) { //看起来这里有点难度,如何得到这个email窗体呢? //获取当前的UiApplication. UiApplication uiApp = UiApplication.getUiApplication(); //狗日的,隐藏的够深的,screen的类型为 //net.rim.device.apps.internal.blackberryemail.email.EmailEditorScreen //所以还是有个编辑email的窗体. Screen screen = uiApp.getActiveScreen(); //让我试图在screen里加一个东西吧. screen.add(new EditField("Tips:","hello, I am embeddedd in Email Editor")); return context; } /** * Returns a string which is the name of menu item. */ public String toString() { return "Add attachments"; } }
简要介绍一下思路.
- 在email编辑器的菜单上加入一个菜单
- 再实现这个菜单
- 最重要的是如何实现这个菜单.首先得到这个email编辑器窗体,其实就是当前active的窗体,如何得到,上面已经介绍方法了.有意思的是,这个窗体的类是net.rim.device.apps.internal.blackberryemail.email.EmailEditorScreen,你明白什么意思了吗.既然知道窗体了,加入field那就再简单不过了.
总结一下,其实很多功能不是你做不到,二是想不到.我很欣赏BM的这种精神.
感谢博主为尚邮的开发完善提供这么好的资料!
知识很专业,很受用,谢谢
net.rim.device.apps.internal.blackberryemail.email.EmailEditorScreen,
API里没看到这个类耶
@jacul
这个类当然看不见了,因为是在调试时看到的