1. 程式人生 > >QQ/微信 聊天表情顯示原理

QQ/微信 聊天表情顯示原理

以前一直好奇QQ的輸入框裡面是如何出現表情的,今天看了下這個,心中發出“原來是這樣啊”的感嘆。

通常情況下,我們都是使用字串型別的變數,直接放置在TextView.setText()的引數裡面的。這樣只能單純的輸出字串。如果要給TextView加上特殊的文字效果,就要使用SpannableString這個類了。

用法如下:

new一個SpannableString物件,將要顯示的字串作為構造方法的引數傳入。

呼叫SpannableString.setSpan(Object, int, int, int)方法進行設定。第一個引數為需要設定的樣式,有很多個類可以選擇,都在這裡啦:http://developer.android.com/reference/android/text/style/CharacterStyle.html

官方文件上面那裡的直接子類和間接子類都是可以用的樣式。

第二引數是開始的位置,0表示第一個字元

第三個引數是結束的位置

第四個引數是一個表示替換的位置是否會影響開頭和結尾,誒……我試了下發現沒什麼變化呢……

然後就是把這個SpannableString物件傳給TextView.setText()方法的引數就好了。

程式碼如下:

 public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView t=(TextView) findViewById(R.id.textview);
        SpannableString ss=new SpannableString("abcdefg");
        ImageSpan s=new ImageSpan(this,R.drawable.ic_launcher);
        ss.setSpan(s, 0, 5,  Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        t.setText(ss);
    }


}