Android 端如何新增自定義表情
Android 端如何新增自定義表情
##實現步驟
1.新建 RongEmoticonTab 類繼承 IEmoticonTab 。
public class RongEmoticonTab implements IEmoticonTab {
public RongEmoticonTab() {
}
@Override
public Drawable obtainTabDrawable(final Context context) {
return context.getResources().getDrawable(R.drawable.u1f603);
}
@Override
public View obtainTabPager(Context context) {
return view;
}
@Override
public void onTableSelected(int i) {
}
}
2.在 obtainTabPager 中新增您想要展示在表情皮膚上的 view 。
@Override
public View obtainTabPager(Context context) {
View view = LayoutInflater.from(context).inflate(R.layout.view_emoji, null);
RecyclerView rv = view.findViewById(R.id.recycler_view);
//LinearLayoutManager是用來做列表佈局,也就是單列的列表
GridLayoutManager mLayoutManager = new GridLayoutManager(context, 5, OrientationHelper.VERTICAL, false);
rv.setLayoutManager(mLayoutManager);
//谷歌提供了一個預設的item刪除新增的動畫
rv.setItemAnimator(new DefaultItemAnimator());
rv.setHasFixedSize(true);
//模擬列表資料
ArrayList newsList = new ArrayList<>();
TypedArray array = context.getResources().obtainTypedArray(context.getResources().getIdentifier("rc_emoji_res", "array", context.getPackageName()));
int i = -1;
while (++i < array.length()) {
newsList.add(array.getResourceId(i, -1));
}
rv.setAdapter(new NewsAdapter(newsList));
return view;
}
3.Adapter 和佈局檔案可以參考GitHub
4.自定義一個 ExtensionModule 繼承自 DefaultExtensionModule,複寫其中的 getEmoticonTabs() 方法,返回需要展示的 EmoticonTab 列表。
public class MyExtensionModule extends DefaultExtensionModule {
private RongEmoticonTab rongEmoticon;
@Override
public List<IEmoticonTab> getEmoticonTabs() {
List<IEmoticonTab> emoticonTabs = super.getEmoticonTabs();
RongEmoticonTab emojiTab=new RongEmoticonTab();
emoticonTabs.add(myEmoticon);
return emoticonTabs;
}
}
5.在初始化之後,取消 SDK 預設的 ExtensionModule,註冊自定義的 ExtensionModule, 如下:
public void setMyExtensionModule() {
List<IExtensionModule> moduleList = RongExtensionManager.getInstance().getExtensionModules();
IExtensionModule defaultModule = null;
if (moduleList != null) {
for (IExtensionModule module : moduleList) {
if (module instanceof DefaultExtensionModule) {
defaultModule = module;
break;
}
}
if (defaultModule != null) {
RongExtensionManager.getInstance().unregisterExtensionModule(defaultModule);
RongExtensionManager.getInstance().registerExtensionModule(new MyExtensionModule());
}
}
}
6.如果需要網路下載表情需要下載並持久化表情資料,需要在新增 EmoticonTab 前下載好表情資料。
相關文章
- js自定義Android端手勢事件JSAndroid事件
- Swift自定義表情鍵盤+錄音Swift
- 如何在React Native中新增自定義字型React Native自定義字型
- SOLIDWORKS如何新增自定義標準件庫Solid
- bili-emoji自定義表情包設定
- 在Android Studio 中新增自定義活動模版(Live templates)Android
- 如何自定義終端顯示配置
- android自定義view(自定義數字鍵盤)AndroidView
- 如何在Kubernetes 裡新增自定義的 API 物件(一)API物件
- Android自定義View整合AndroidView
- Android自定義遮罩層Android遮罩
- 自定義Android鍵盤Android
- Android自定義OnTouch事件Android事件
- Android 自定義UI元件AndroidUI元件
- android 自定義鍵盤Android
- 如何給 SAP Fiori Elements 應用新增自定義按鈕
- Laravel 新增自定義助手函式Laravel函式
- AUTOCAD——新增自定義填充圖案
- Azure AD(六)新增自定義域名
- 給Product新增自定義屬性
- VirtualView Android 實現詳解(三)—— 新增一個自定義控制元件ViewAndroid控制元件
- Android 自定義View:深入理解自定義屬性(七)AndroidView
- 重拾Android自定義ViewAndroidView
- Android自定義View:ViewGroup(三)AndroidView
- Android自定義View:View(二)AndroidView
- Android 自定義 View 之 LeavesLoadingAndroidView
- Android自定義拍照實現Android
- Android 自定義Toast及BUGAndroidAST
- robotframework appiumLibrary新增自定義關鍵字FrameworkAPP
- Google Cloud IAM中新增自定義域名GoCloud
- ubuntu下OpenLDAP新增自定義屬性UbuntuLDA
- 公眾號新增自定義連結
- Android自定義View之分貝儀AndroidView
- Android自定義View之捲尺AndroidView
- Android 自定義優雅的BezierSeekBarAndroid
- 自定義Android Studio程式碼模板Android
- Android自定義View注意事項AndroidView
- Android自定義View-卷軸AndroidView