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 前下載好表情資料。
相關文章
- Android自定義View 屬性新增AndroidView
- 如何在Android TV 桌面新增自定義頻道/節目Android
- Swift自定義表情鍵盤+錄音Swift
- android framework中新增自定義許可權AndroidFramework
- js自定義Android端手勢事件JSAndroid事件
- jQuery如何實現新增自定義函式jQuery函式
- 如何自定義終端顯示配置
- 如何在React Native中新增自定義字型React Native自定義字型
- Android動畫效果之自定義ViewGroup新增布局動畫Android動畫View
- SOLIDWORKS如何新增自定義標準件庫Solid
- 在Android Studio 中新增自定義活動模版(Live templates)Android
- 如何給 SAP Fiori Elements 應用新增自定義按鈕
- Laravel 新增自定義助手函式Laravel函式
- Azure AD(六)新增自定義域名
- 自定義UICollectionViewLayout並新增UIDynamicUIView
- 如何使用Android自定義複合檢視Android
- Android自定義弧形[方形加弧形]IamgeView並新增高斯模糊AndroidView
- Android自定義ImageView 在圖片上新增一個圖層AndroidView
- Android 自定義viewAndroidView
- Android 自定義 TabLayoutAndroidTabLayout
- Android: 自定義ViewAndroidView
- Android自定義ToastAndroidAST
- Android 自定義 DrawableAndroid
- android自定義view(自定義數字鍵盤)AndroidView
- android自定義View&自定義ViewGroup(下)AndroidView
- android自定義View&自定義ViewGroup(上)AndroidView
- Android自定義控制元件——自定義屬性Android控制元件
- 如何在Kubernetes 裡新增自定義的 API 物件(一)API物件
- ubuntu下OpenLDAP新增自定義屬性UbuntuLDA
- AUTOCAD——新增自定義填充圖案
- Google Cloud IAM中新增自定義域名GoCloud
- 公眾號新增自定義連結
- 給自定義View新增xml屬性ViewXML
- 在Python中新增自定義模組Python
- 為bootstrap新增更多自定義圖示boot
- Appfuse:新增自定義頁面元件APP元件
- 為Autodesk Viewer新增自定義工具條View
- android自定義鍵盤 自定義身份證鍵盤Android