短信ui--会话编辑界面(五)彩信附件

本文详细介绍了短信UI中彩信附件的实现,包括附件的引入,核心类的类图,以及单个和多个幻灯片页的编辑功能。通过AttachmentEditor类,用户可以添加、删除和替换多媒体文件。当编辑普通短信时,该界面会隐藏。添加附件涉及启动相应应用程序,选择类型并接收返回的数据,如图片的URI,然后通过WorkingMessage设置附件。
摘要由CSDN通过智能技术生成
短信ui--会话编辑界面(五)彩信附件

1、附件的引入

   附件UI,对于会话编辑界面来说是最重要也是最复杂的一个组成部分,与彩信息息相关。该界面的功能主要是提供给用户添加、删除、替换彩信附件。附件对大家来说应该不陌生,彩信的附件无外乎就是添加的多媒体文件,但是在android程序设计中将附件抽象为一个“SlideshowModel”,神马意思了?SlideshowModel中文含义就是幻灯片,那一个幻灯片可能有很多”组成页“,”组成页“就是幻灯片基本组成单元,在程序中将一个基本组成单元抽象为一个”SlideModel“,SlideModel既然是”页“的概念,如果尝试使用过ppt的同学,肯定知道幻灯片每一页里面又包含很多的元素,如可以添加图片、音频、视频、文本,这些添加的元素在android 中都定义成一个抽象元素:ImageModel 、AudioModel、VedioModel、TextModel。

   小结一下,SlideShowModel就是附件的抽象,它包含很多的SlideModel页,每个SlideModel又包含不同的ImageModel、AudioModel、VedioModel、TextModel元素。

2、附件相关核心类的类图

    该类图在讲解会话编辑界面初始里面就有,这里再熟悉一下


                                                                                 Model 类图

                                                                                     附件view类 图

3、UI简单介绍

     附件编辑UI只有是彩信的情况且我们添加了附件才会呈现,如果我们编辑的是一条普通的短信该UI就会隐藏,那这是怎么做到的?首先来看看编辑短信界面ComposeMessageActivity的onCreate方法会调用相关方法初始化附件相关的view,mAttachmentEditorHandler该Handler需要注意,对于幻灯片的编辑要靠它来实现。如下所示是view的初始化

 mAttachmentEditor = (AttachmentEditor) findViewById(R.id.attachment_editor);
        mAttachmentEditor.setHandler(mAttachmentEditorHandler);
然后再根据当前编辑的信息是否含有附件如果有附件则显示附件,如果没有附件UI则隐藏。

mAttachmentEditor.update(mWorkingMessage);
其核心实现放在AttachmentEditor的update方法中

    public void update(WorkingMessage msg) {
        hideView();隐藏附件ui
        mView = null;
        // If there's no attachment, we have nothing to do.
        if (!msg.hasAttachment()) {
            return;   如果没有附件,则隐藏附件ui
        }
        // Get the slideshow from the message.
        mSlideshow = msg.getSlideshow();
        //add by zaokun ,used gain message's attach size
        if(mSlideshow!=null){
            showSize = (mSlideshow.getCurrentMessageSize() - 1)/1024 + 1;
           }
        mView = createView();创建对应的view,通过加载不同的布局来实现
        if ((mPresenter == null) || !mSlideshow.equals(mPresenter.getModel())) {
            mPresenter = PresenterFactory.getPresenter(
                    "MmsThumbnailPresenter", mContext, mView, mSlideshow);
        } else {
            mPresenter.setView(mView);
        }

       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值