歡迎你們訪問個人我的博客android
主要仍是最近作了一個emoji鍵盤的需求,感受能夠簡單封裝一下順便整理下emoji相關的知識ios
有關Android中emoji的文章有不少了,我就不簡單羅列相關內容了,在這記錄一下開發過程當中遇到的一些坑...git
(詳情能夠參考https://github.com/googlesamples/android-EmojiCompat) ,上圖中能夠看到其中兩個Textview的emoji顏色偏淺,可是EditView中就不會出現這個問題...github
解決方法的話暫時有兩種,一是針對不能引入EmojiCompat的項目,能夠考慮針對textview屢次繪製,可是對此Textview設置background的時候會失效... 二是能夠針對能夠引入EmojiCompat的項目,可是簡單的直接設置EmojiCompat仍然很差用...經過自定義View即demo中的Custom TextView即刻解決這個問題工具
不一樣版本的系統中適配的emoji是不一樣的,通常來講高版本兼容低版本的emoji.開發工具
另外一個就是國產rom的問題,部分rom中會將android的emoji圖標替換成ios的emoji.會給人一種也沒什麼差異的錯覺...可是,好歹都適配了啊,部分圖標仍是android的emoji風格,就很迷優化
emoji的大小...是跟隨TextView的textSize,因此要想調整emoji的大小,須要更改textView的textSize值.動畫
鍵盤嘛,須要對editText進行操做,其中就包括了刪除的操做,然而,emoji有的佔兩個字節,有的佔一個本身.因此再刪除的時候須要驗證內容再刪除對應的字節google
簡單來講,及時更新設備或者開發工具的話emoji展現並非什麼問題,願望是美好的,現實卻老是不進如人意.(只有我以爲Android的果凍人emoji看着還能夠麼...)設計
先展現效果圖,
一個emoji鍵盤的主要功能都實現了,包括了emoji的輸入及刪除,多個emoji標籤頁之間的切換及底部滑動指示器的更改.須要展現底部標籤頁超過屏幕範圍的效果,因此展現的部分數據是重複的.
最初的設計中是沒有底部多個emoji標籤頁的,感受功能有點單薄,因此後期加入了底部過個item切換的功能
整個View設計以下,
主要是針對頂部ViewPager的Adapter處理
再將EditText綁定到view中後,對view進行操做後會更改EditText的內容
須要注意的是再刪除的時候是要先驗證後兩位是不是一個完整emoji,若是是則刪除後兩個字節,反之則只刪除一個字節.
簡單的一個LinearLayout來展現指示器,沒有切換的動畫效果,能夠優化一波.
經過一個RecycleView來實現的底部標籤選擇器
添加ViewPager的addOnPageChangeListener方法來監聽滑動及底部標籤選擇的點擊回調
相關代碼能夠訪問個人GitHub來獲取,歡迎你們start或者提供建議.