LQREmojiLibrary
Это очень крутой набор эмодзи, который позволяет использовать эмодзи и стикеры. Он удобен в использовании и предоставляет возможность абстрагировать интерфейс загрузки изображений, что позволяет разработчику самостоятельно выбирать инструмент для загрузки.
Этот набор очень крут и удобен. Этот набор очень крут и удобен. Этот набор очень крут и удобен. Хорошо, теперь давайте перейдём к демонстрационным изображениям:
compile 'com.lqr.emoji:library:1.0.2'
Для использования этой библиотеки необходимо инициализировать LQREmotionKit в пользовательском Application. LQREmotionKit предоставляет четыре метода инициализации, которые можно выбрать в соответствии с вашими потребностями.
Обратите внимание на следующие моменты перед использованием:
public static void init(Context context)
public static void init(Context context, String stickerPath)
public static void init(Context context, IImageLoader imageLoader)
public static void init(Context context, String stickerPath, IImageLoader imageLoader)
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
LQREmotionKit.init(this, new IImageLoader() {
@Override
public void displayImage(Context context, String path, ImageView imageView) {
Glide.with(context).load(path).centerCrop().diskCacheStrategy(DiskCacheStrategy.SOURCE).into(imageView);
}
});
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!--Содержание-->
<LinearLayout
android:id="@+id/llContent"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical">
...
Здесь обычно размещаются список сообщений, поле ввода текста и другие элементы управления
...
</LinearLayout>
<!--Область эмодзи-->
<com.lqr.emoji.EmotionLayout
android:id="@+id/elEmotion"
android:layout_width="match_parent"
android:layout_height="270dp"
android:visibility="gone"/>
</LinearLayout>
mElEmotion.attachEditText(mEtContent);
mElEmoji.setEmotionSelectedListener(new IEmotionSelectedListener() {
@Override
public void onEmojiSelected(String key) {
if (mEtContent == null)
return;
Editable editable = mEtContent.getText();
if (key.equals("/DEL")) {
mEtContent.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL));
} else {
int start = mEtContent.getSelectionStart();
int end = mEtContent.getSelectionEnd();
start = (start < 0 ? 0 : start);
end = (start < 0 ? 0 : end);
editable.replace(start, end, key);
int editEnd = mEtContent.getSelectionEnd();
MoonUtils.replaceEmoticons(LQREmotionKit.getContext(), editable, 0, editable.toString().length());
mEtContent.setSelection(editEnd);
}
}
@Override
public void onStickerSelected(String categoryName, String stickerName, String stickerBitmapPath) {
}
});
private EmotionKeyboard mEmotionKeyboard;
private void initEmotionKeyboard() {
mEmotionKeyboard = EmotionKeyboard.with(this);
mEmotionKeyboard.bindToContent(mLlContent);
mEmotionKeyboard.bindToEmotionButton(mIvEmo);
mEmotionKeyboard.bindToEditText(mEtContent);
mEmotionKeyboard.setEmotionLayout(mElEmotion);
}
После выполнения вышеуказанных шагов можно достичь следующего эффекта:
Эту часть можно пропустить, если не устанавливать, то по умолчанию стикеры будут храниться в каталоге /data/data/имя пакета/files/stikers. Получение пути к стикеру через LQREmotionKit.getStickerPath()
Расположение, где хранятся стикеры, можно задать только через init() в LQREmotionKit:
LQREmotionKit.init(this, Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator+"sticker");
LQREmotionKit.init(this, Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "sticker", new IImageLoader() {
@Override
public void displayImage(Context context, String path, ImageView imageView) {
Glide.with(context).load(path).centerCrop().diskCacheStrategy(DiskCacheStrategy.SOURCE).into(imageView);
}
});
Эта библиотека поддерживает интеграцию стандартных стикеров. Можно разместить стикеры по правилам в каталоге sticker в assets. Когда программа запускается, все стикеры из каталога sticker в assets будут автоматически скопированы в место хранения стикеров.
// Получить путь к месту хранения стикера String stickerPath = LQREmotionKit.getStickerPath(); ... Загрузить из сети (способ реализации этой части кода может отличаться в разных проектах) ...
mElEmotion.setEmotionSelectedListener(new IEmotionSelectedListener() { @Override public void onEmojiSelected(String key) {
}
@Override
public void onStickerSelected(String categoryName, String stickerName, String stickerBitmapPath) {
String stickerPath = stickerBitmapPath;
...
Отправить изображение
...
});
После выполнения предыдущих шагов можно реализовать следующий эффект:
По умолчанию в нижней части вкладки эмодзи не отображаются кнопки «Добавить» и «Настройки». Если необходимо, это можно контролировать с помощью следующего кода.
mElEmotion.setEmotionAddVisiable(true); mElEmotion.setEmotionSettingVisiable(true); mElEmotion.setEmotionExtClickListener(new IEmotionExtClickListener() { @Override public void onEmotionAddClick(View view) { Toast.makeText(getApplicationContext(), "add", Toast.LENGTH_SHORT).show(); }
@Override
public void onEmotionSettingClick(View view) {
Toast.makeText(getApplicationContext(), "setting", Toast.LENGTH_SHORT).show();
}
});
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )