1. 程式人生 > >Android之一分鐘完成發表情功能

Android之一分鐘完成發表情功能

應用背景

不知道大家是否開發過類似朋友圈,論壇之類的功能。通常在這個過程中我們要有發表情的需求。LZ當時遇到了這個需求,所以完成功能後,就將發表情這個功能封裝了一下。使用非常簡單,只需要三兩行程式碼,你就能在你的專案中實現發表情的功能啦。

效果圖展示

實現步驟

1.將以下類與資原始檔依次匯入到你自己的專案中

java類

資原始檔

asset

2.在某輸入頁面中的xml中添加布局檔案

比如我這個效果圖就是一個Activity。那我就在Activity的根部局當中新增如下程式碼

         <include
            android:id
="@+id/chat_face_container" layout="@layout/chat_face_container" android:visibility="gone" />

這裡應該注意xml頁面的搭建邏輯,chat_face_container應該在一個LinearLayout的最下面,整個LinearLayout應該是附著在螢幕底部。具體請參考demo

3.在程式碼中的配置

非常非常的簡單,只需要一行程式碼即可


 //param1:你加入當前頁面中的佈局,param2:你的輸入框,param3:context
ChatFaceView chatFaceView = new ChatFaceView(chat_face_container, edit_input_text, this);

假如ios發來一條帶有表情的訊息,如何將字串訊息轉換為帶有表情的字串?

呼叫如下方法即可


SpannableStringBuilder ssbC = FaceUtils.getInstance(context).toSpanText(
                        edit_input_text.getText().toString());
tvshow2.setText(ssbC);

另外還有一些常用api

    /*比如:
          為輸入框新增點選事件,點選輸入框讓chatview消失*/
       edit_input_text.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                chatFaceView.closeChatView();
            }
        });
     /*比如:
             為表情按鈕新增點選事件,點選讓chatview消失或顯示*/
        btn_chat_emoji.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                chatFaceView.openOrCloseChatView();
            }
        });

核心要點

1.傳送表情實則是傳送的表情對應的String編碼,這個編碼在本案例中就在asset檔案下

2.點選表情後,表情圖片如何顯示在了EditText中?而不是以原本String格式顯示?

這是通該方法實現

    /**
     * 
     * @param png 檔名,不含路徑
     * @return
     */
    private SpannableStringBuilder getFace(String png) {
        SpannableStringBuilder sb = new SpannableStringBuilder();

        try {

            //          String tempText = "[" + png + "]";
            String tempText =FaceUtils.getInstance(mContext).GetFaceMap(0).get(png);
            sb.append(tempText);
            sb.setSpan(
                    new ImageSpan(mContext, BitmapFactory
                            .decodeStream(mContext.getAssets().open("face/default/" + png))), sb.length()
                            //                          .decodeStream(mContext.getAssets().open(png))), sb.length()
                            - tempText.length(), sb.length(),
                            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        } catch (Exception e) {
            e.printStackTrace();
        }

        return sb;
    }

相關推薦

Android之一分鐘完成表情功能

應用背景 不知道大家是否開發過類似朋友圈,論壇之類的功能。通常在這個過程中我們要有發表情的需求。LZ當時遇到了這個需求,所以完成功能後,就將發表情這個功能封裝了一下。使用非常簡單,只需要三兩行程式碼,你就能在你的專案中實現發表情的功能啦。 效果圖展示

功能完成

對象 column aps war direct mar user .get als 編寫要求登錄的裝飾器 def loginFrist(func): @wraps(func) def wrapper(*args, **kwargs):

功能完成

rgs post app render class 數據 query user itl 編寫要求登錄的裝飾器 from functools import wraps def loginFirst(func): #參數是函數 @wraps(func) def

Android 表情功能的完整處理方案

概述1.原理和實現思路2.表情圖片顯示3.表情面板4.表情的輸入框插入和刪除5.表情新增指令碼Android中表情功能,一般都不是用ImageView去設定圖片實現的,表情一般會巢狀在文字之中,那麼如何實現呢,這裡就介紹一下其中的原理,此外還有相關功能的實現思路和具體程式碼

5分鐘整合即時通訊功能——環信Android

下載環信demo (Android) 什麼是環信demo 環信demo展示了怎樣使用環信SDK快速建立一個完整的類微信聊天APP。展示的功能包括:環信SDK初始化,登入,登出,註冊訊息接收listener, 傳送訊息。 環信demo原始碼已在github上開源供開發

Android呼叫系統的打電話和簡訊功能

一、打電話      1、新增打電話的許可權在manifast檔案中。            <uses-permission android:name="android.permission.CALL_PHONE"/>      2、使用Uri.parse(S

Android-使用Mob簡訊驗證碼SDK完成簡訊驗證功能

1.之所以選擇Mob簡訊驗證碼SDK,是因為它是完全免費的,所以很適合自己平時測試或者在個人的小專案中使用,但是有點小坑的是上線前每個手機號一天有次數限制、簡訊內容不能自定義。 2.首先開啟Mob

Android呼叫系統打電話和簡訊功能

一、打電話      1、新增打電話的許可權在manifast檔案中。            <uses-permission Android:name="android.permission.CALL_PHONE"/>      2、使用Uri.par

android sina 微博表情功能的實現

表情為本地表情,把所有的表情圖片裝載到gridview裡面。然後在gridview的點選事件裡做如下處理。 @Override public void onItemClick(AdapterView<?> arg0, View arg1, int inde

Log4j配置郵件功能

郵件功能 smtp eve gin java apach bsp ole message # 發送日誌到指定郵件log4j.appender.mail=org.apache.log4j.net.SMTPAppenderlog4j.appender.mail.Threshol

如何免費使用jrebel 和eclipse 項目配合完成熱部署功能

.dll 五步 使用 完成 tom start 一個 facebook advance 感謝王同學分享了熱部署插件,jrebel,說修改後臺代碼可以不用重啟tomcat,於是立即下載使用。。。。本來很簡單的一個事情,因為參照了網上各種帖子,結果坑的不行。。。。所以把自己的經

aNDROID文本自動連接功能

5% baidu 連接 lis 自動連接 androidl com 功能 roi aNDROIDLIsTITEM%E6%94%B9%E5%8F%98%E9%A2%9C%E8%89%B2 http://music.hao123.com/songlist/495610601

郵件功能開發

第三版 升級 離開 消息 pac 教授 數據 操作 性能 作為一名.Net開發,"郵件發送"功能的開發和使用是必須要掌握的,因為這個功能作為“消息推送”的一種手段經常出現在各種.Net系統中,所以本文將對.Net平臺下的“郵件發送”,做一個細致的分析! 一、who需要郵件功

[js高手之路]設計模式系列課程-委托模式實戰微博功能

i++ 發布 動態 use shee 內容 標題 cnblogs 文件 在實際開發中,經常需要為Dom元素綁定事件,如果頁面上有4個li元素,點擊對應的li,彈出對應的li內容,怎麽做呢?是不是很簡單? 大多數人的做法都是:獲取元素,綁定事件 1 <ul&

3分鐘完成MongoDB2.6升級3.0

mongodb 2.6升級3.0 3分鐘完成MongoDB2.6升級3.0前言Part1:寫在最前自從3.0版本起,MongoDB支持了WT存儲引擎,這個引擎相對老的MMAPv1存儲引擎來講,具有更高的壓縮比,且支持文檔級並發控制。也正因為WT的優良特性,在MongoDB3.2版本起,WT存儲引擎作為

完成登錄功能,用session記住用戶名

aps flask cto ati 數據庫 ldb 修改密碼 localhost ica from flask import Flask, render_template,request,redirect,url_for,session from flask_sqlalc

用正則表達式完成xpath的功能(強大的正則表達式)

atime quest fin tle clas 12px int time xpath 1 url = ‘http://money.163.com/special/pinglun‘ 2 response = requests.get(url) 3 # regex = r

Android中使用HttpClient送Get請求

roi borde 9.png cli src .com img image color 這裏要指定編碼,不然服務器接收到的會是亂碼的。Android中使用HttpClient發送Get請求

spring mvc+mybatis ios android整合cms內容布平臺

減少 連接 jquer 登錄 jdk版本 sso href com 分享圖片 開發語言: java、ios、android 部署平臺: linux、window jdk版本:JDK1.7以上版本 開發工具: eclipse、idea等 服務器中間件:Tomcat

Android自定義processor實現bindView功能

lis dds 定義 java代碼 cli 註冊 文章 type() mage 一、簡介 在現階段的Android開發中,註解越來越流行起來,比如ButterKnife,Retrofit,Dragger,EventBus等等都選擇使用註解來配置。按照處理時期,註解又分為兩