Вдохновленный XhsEmoticonsKeyboard, фреймворк был переработан и добавлена функция динамического обновления смайлов. Используя EmoticonPacksAdapter, вы можете легко добавлять или удалять смайлы.
Новый код разработан с использованием Kotlin.
allprojects {
repositories {
jcenter()
}
}
и:
dependencies {
compile 'im.ll:emoticonsboard:1.0.0'
}
EmoticonsBoard отображает смайлы, устанавливая EmoticonPacksAdapter. EmoticonPacksAdapter содержит список пакетов EmoticonPacks, используемых для переноса данных смайлов. Каждый EmoticonPack представляет собой коллекцию смайлов. PageFactory используется для создания представлений, отображающих выражения, а выражения отображаются в форме страниц. Настраивая разные PageFactory, вы можете отображать смайлы по-разному.
< github .ll.emotionboard.EmoticonsBoard xmlns : android = " http://schemas.android.com/apk/res/android "
xmlns : app = " http://schemas.android.com/apk/res-auto "
android : layout_width = " match_parent "
android : layout_height = " match_parent "
android : orientation = " vertical " >
< LinearLayout
android : layout_width = " match_parent "
android : layout_height = " match_parent "
android : orientation = " vertical " >
< ListView
android : layout_width = " match_parent "
android : layout_height = " match_parent " />
</ LinearLayout >
</ github .ll.emotionboard.EmoticonsBoard>
EmoticonsBoard может иметь только одно дочернее представление.
Java-код:
EmoticonsBoard ekBar;
List<EmoticonPack> packs = new ArrayList<EmoticonPack>;
init packs...
EmoticonPacksAdapter adapter = new EmoticonPacksAdapter(packs);
ekBar.setAdapter(adapter);
Подробности смотрите в демо-исходнике.
Котлин-код:
private var adapter: EmoticonPacksAdapter? = null
private lateinit var mEmojiPack: EmoticonPack<Emoticon>
...
val emoticon = Emoticon()
emoticon.code = "new emoji"
emoticon.uri = "xxx"
mEmojiPack.emoticons.add(emoticon)
mEmojiPack.emoticons.add(emoticon)
mEmojiPack.isDataChanged = true
adapter?.notifyDataSetChanged()
Очень важно сделать измененный параметр isDataChanged emoticonPack равным true.