`

短信中加入表情

 
阅读更多

 

/**
 * 来自博客:http://gundumw100.iteye.com/blog/904107
 * 用这种方式显示短信中的图片!!!
 * 
 * */
public class SmileyParser {
    private Context mContext;
    private String[] mSmileyTexts;
    private Pattern mPattern;
    private HashMap<String, Integer> mSmileyToRes;
    public static final int[] DEFAULT_SMILEY_RES_IDS = {
        R.drawable.face1,
        R.drawable.face2,
        R.drawable.face3,
        R.drawable.face4,
        R.drawable.face5,
        R.drawable.face6,
        R.drawable.face7,
        R.drawable.face8,
        R.drawable.face9,
        R.drawable.face10,
        R.drawable.face11,
        R.drawable.face12,
        R.drawable.face13,
        R.drawable.face14,
        R.drawable.face15,
        R.drawable.face16,
        R.drawable.face17,
        R.drawable.face18,
    };

    public SmileyParser(Context context) {
        mContext = context;
        mSmileyTexts = mContext.getResources().getStringArray(DEFAULT_SMILEY_TEXTS);
        mSmileyToRes = buildSmileyToRes();
        mPattern = buildPattern();
    }

    public static final int DEFAULT_SMILEY_TEXTS = R.array.default_smiley_texts;

    private HashMap<String, Integer> buildSmileyToRes() {
        if (DEFAULT_SMILEY_RES_IDS.length != mSmileyTexts.length) {
//        	Log.w("SmileyParser", "Smiley resource ID/text mismatch");
            //表情的数量需要和数组定义的长度一致!
            throw new IllegalStateException("Smiley resource ID/text mismatch");
        }

        HashMap<String, Integer> smileyToRes = new HashMap<String, Integer>(mSmileyTexts.length);
        for (int i = 0; i < mSmileyTexts.length; i++) {
            smileyToRes.put(mSmileyTexts[i], DEFAULT_SMILEY_RES_IDS[i]);
        }

        return smileyToRes;
    }

    //构建正则表达式
    private Pattern buildPattern() {
        StringBuilder patternString = new StringBuilder(mSmileyTexts.length * 3);
        patternString.append('(');
        for (String s : mSmileyTexts) {
            patternString.append(Pattern.quote(s));
            patternString.append('|');
        }
        patternString.replace(patternString.length() - 1, patternString.length(), ")");

        return Pattern.compile(patternString.toString());
    }

    //根据文本替换成图片
    public CharSequence replace(CharSequence text) {
        SpannableStringBuilder builder = new SpannableStringBuilder(text);
        Matcher matcher = mPattern.matcher(text);
        while (matcher.find()) {
            int resId = mSmileyToRes.get(matcher.group());
            builder.setSpan(new ImageSpan(mContext, resId),matcher.start(), matcher.end(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
        return builder;
    }
}
 

 

 

分享到:
评论

相关推荐

    安卓微信表情样式

    8. **用户体验**:考虑到用户交互,可以添加长按复制、滑动浏览表情等功能,提高用户使用表情的便利性。 9. **数据持久化**:如果需要保存用户自定义的表情或表情使用记录,可以将数据存储在SQLite数据库或...

    微信最新自带表情emoji.rar

    在微信的开发过程中,表情设计团队会根据社会热点、流行文化以及用户的反馈来更新和添加新的emoji,以保持其新鲜感和实用性。这些表情通常包括静态图片、动态GIF,甚至有时会包含3D动画。"emoji"这个文件名很可能...

    android通讯录短信聊天

    为了在短信中显示表情,需要确保在发送时正确编码表情,接收端则需要解码并渲染出来。 最后,考虑到好友之间需要同时安装此应用才能进行聊天,需要实现一个用户注册与登录系统,以及好友列表管理功能。这可能涉及到...

    元宵节祝福短信-元宵节手机短信-元宵节搞笑短信.doc

    值得一提的是,随着表情符号、图片、甚至小视频等多媒体元素的加入,手机短信的形式变得更加生动有趣。这些元素的加入,不仅增加了祝福的趣味性,也使得祝福的情感表达更加丰富和直观。比如,发送一张满屏灯光璀璨的...

    iphone 短信气泡效果UI

    在iOS开发中,创建具有互动性和吸引力的用户界面是至关重要的,尤其是对于聊天应用程序来说,短信气泡效果是不可或缺的一部分。"iphone 短信气泡效果UI" 是一个专门为开发者设计的开源控件,旨在简化这个过程,让...

    swift-PHFComposeBarView是iOS7自带短信应用中写短信那个输入框的高仿控件

    Swift开发中的UI设计是构建iOS应用的关键部分,而`PHFComposeBarView`是一个高度仿照iOS 7原生短信应用中输入框的控件。这个控件为开发者提供了实现类似系统风格的文本输入界面的可能性,同时允许进行一定程度的...

    ,ASP手机短信接口

    5. **编码与解码**:考虑到短信内容可能包含特殊字符,如中文、表情符号等,需要进行适当的编码(如UTF-8)以避免传输过程中的乱码问题。同时,接收的短信内容也需要正确解码。 6. **安全性**:由于涉及到用户的...

    Emoji 系列表情资源

    Emoji起源于日本,最初由电信公司创建,目的是为了丰富短信中的情感表达。随着时间的发展,它们逐渐被国际标准化组织接纳,现在有成千上万种不同类型的Emoji,涵盖了从基本情绪到各种事物、活动以及符号的广泛范围。...

    全png格式,20x20和40x40的都有,emoji微信默认表情符号图片+代码对照表

    这些表情符号不仅包含预设的系统表情,还可以通过添加自定义表情包进行扩展。微信默认表情符号图片包括了一系列人们熟悉的表情和动作,方便用户快速表达情绪。 5. **代码对照表**:代码对照表是将表情符号与特定...

    Android模仿苹果短信界面聊天

    事件处理函数内,获取输入框的文本内容,然后调用接口或服务来发送消息,并将消息添加到聊天记录列表中。 在实际应用中,我们可能还需要考虑其他功能,如时间戳的显示、图片和语音消息的发送、未读消息的标记等。...

    emoji表情合集

    8. **设计与更新**:随着社会趋势和技术的发展,新的emoji会不断被添加到标准中,如Unicode 14.0就引入了多项新增表情。同时,各大公司(如Apple、Google)也会根据自身的设计理念更新emoji的视觉风格。 9. **无...

    androi 简单的发短信功能

    2. `sendMultipartTextMessage()`:用于发送多部分文本短信,适用于包含多个部分(如表情或超链接)的短信。 3. `sendDataMessage()`:用于发送数据短信,通常用于传输非文本数据,如图片或音频片段。 三、实现短信...

    龙鼎短信群发客户端使用方法.docx

    在编写短信内容时,可以利用各种表情和符号来增强短信的吸引力。编写完成后,点击提交按钮,系统将验证内容的合法性,并给您发送提示,告知短信是否成功提交。 ### 查看接收短信 龙鼎短信群发客户端支持接收短信的...

    中秋节微信提前经典祝福短信-微信群发祝福短信.docx

    - **创意与幽默**:适当加入创意或幽默元素可以使短信更加生动有趣,更容易被接收者记住。 - **简洁明了**:虽然短信的内容可以丰富多彩,但也要注意保持整体的简洁性,避免冗长而失去重点。 ### 4. 祝福短信实例...

    2011最新元旦祝福短信.doc

    最后,幽默和恶搞元素的加入,也使得这些短信在传递祝福的同时,能够营造出轻松愉快的氛围,增加互动和分享的可能性。例如,短信中的“不许动!举起手来,认识的站左边,不认识的站右边,想笑的站中间”,就是通过...

    emojijs:网络表情符号渲染

    表情符号是短信中常用的表情符号。 它们被编码为大多数字体还不能正确呈现的 unicode 字符。 因此,除非您使用的是 iOS 或 Android 设备,否则您可能看不到很多。 使用 emojijs,您可以轻松地将表情符号替换为任何...

    【祝福语】过情人节微信祝福短信.doc

    3. **创意元素**:在祝福短信中加入创意元素,如数字(如1314,寓意一生一世)、象征物(如玫瑰花、心形图案)或承诺(如永远爱你),可以增加短信的吸引力和意义。 4. **适时发送**:在情人节当天的合适时间发送...

    电信设备-短信发送方法、终端及计算机可读存储介质.zip

    - **增强型消息服务(EMS)**:提供更丰富的短信功能,如添加表情符号、有限的多媒体支持等。 - **短信API**:在企业应用中,短信API允许程序自动发送和接收短信,常用于验证码、通知服务等。 这些知识点构成了...

    七夕情人节发什么短信好呢.doc

    6. **配图或表情包**:适当加入可爱的表情包或相关的图片,可以使短信更生动有趣,增加互动感。 7. **结合实际活动**:如果你们有特别的计划,比如约会或者礼物,短信可以作为预热,提前告知她你的用心,让这个日子...

    清明节短信大全.doc

    当我们深入阅读这些短信内容时,我们可以发现它们蕴含着几个重要的主题,这些主题不仅体现了中国传统文化的深厚底蕴,也反映了人们在现代社会中如何通过文字来维系情感关系。 首先,情感传达是这些短信最为直观的...

Global site tag (gtag.js) - Google Analytics