`

短信中加入表情

 
阅读更多

 

/**
 * 来自博客: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

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

    emojijs:网络表情符号渲染

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

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

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

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

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

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

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

    最经典的2013年春节祝福短信.doc

    5. **符号和表情的运用**:短信中使用&gt;&lt;(((;&gt;等符号和表情,增加视觉效果,使得短信看起来更加生动活泼,易于引起共鸣。 6. **情感传递**:祝福短信是情感交流的一种方式,如“我对你的思念之情如涛涛江水绵绵不绝....

    IOS8 细黑字体+EMOJI超大表情

    在iOS系统中,字体和表情符号(EMOJI)是用户界面的重要组成部分,尤其是在iOS8版本中,苹果公司对这两方面进行了更新,提升了用户的交互体验。这篇内容将深入探讨iOS8中的“细黑字体”与“EMOJI超大表情”,以及...

    Fetion2008_3.1.0480短信 聊天 软件

    1. 实时聊天:用户可以通过Fetion2008进行即时通讯,如同QQ、MSN等即时聊天工具,支持文字、表情、图片等多种聊天形式。 2. 群组聊天:创建或加入群组,与志同道合的朋友进行群聊,分享生活点滴或探讨共同兴趣。 3. ...

Global site tag (gtag.js) - Google Analytics