Search in sources :

Example 1 with EmojiBean

use of com.sj.emoji.EmojiBean in project XhsEmoticonsKeyboard by w446108264.

the class SimpleCommonUtils method addEmojiPageSetEntity.

/**
     * 插入emoji表情集
     *
     * @param pageSetAdapter
     * @param context
     * @param emoticonClickListener
     */
public static void addEmojiPageSetEntity(PageSetAdapter pageSetAdapter, Context context, final EmoticonClickListener emoticonClickListener) {
    ArrayList<EmojiBean> emojiArray = new ArrayList<>();
    Collections.addAll(emojiArray, DefEmoticons.sEmojiArray);
    EmoticonPageSetEntity emojiPageSetEntity = new EmoticonPageSetEntity.Builder().setLine(3).setRow(7).setEmoticonList(emojiArray).setIPageViewInstantiateItem(getDefaultEmoticonPageViewInstantiateItem(new EmoticonDisplayListener<Object>() {

        @Override
        public void onBindView(int position, ViewGroup parent, EmoticonsAdapter.ViewHolder viewHolder, Object object, final boolean isDelBtn) {
            final EmojiBean emojiBean = (EmojiBean) object;
            if (emojiBean == null && !isDelBtn) {
                return;
            }
            viewHolder.ly_root.setBackgroundResource(com.keyboard.view.R.drawable.bg_emoticon);
            if (isDelBtn) {
                viewHolder.iv_emoticon.setImageResource(R.mipmap.icon_del);
            } else {
                viewHolder.iv_emoticon.setImageResource(emojiBean.icon);
            }
            viewHolder.rootView.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    if (emoticonClickListener != null) {
                        emoticonClickListener.onEmoticonClick(emojiBean, Constants.EMOTICON_CLICK_TEXT, isDelBtn);
                    }
                }
            });
        }
    })).setShowDelBtn(EmoticonPageEntity.DelBtnStatus.LAST).setIconUri(ImageBase.Scheme.DRAWABLE.toUri("icon_emoji")).build();
    pageSetAdapter.add(emojiPageSetEntity);
}
Also used : EmoticonsAdapter(sj.keyboard.adpater.EmoticonsAdapter) BigEmoticonsAdapter(com.xhsemoticonskeyboard.common.adapter.emoticonadapter.BigEmoticonsAdapter) TextEmoticonsAdapter(com.xhsemoticonskeyboard.common.adapter.emoticonadapter.TextEmoticonsAdapter) ViewGroup(android.view.ViewGroup) ArrayList(java.util.ArrayList) EmoticonPageSetEntity(sj.keyboard.data.EmoticonPageSetEntity) View(android.view.View) TextView(android.widget.TextView) SimpleAppsGridView(com.xhsemoticonskeyboard.common.widget.SimpleAppsGridView) EmoticonPageView(sj.keyboard.widget.EmoticonPageView) EmojiBean(com.sj.emoji.EmojiBean)

Example 2 with EmojiBean

use of com.sj.emoji.EmojiBean in project XhsEmoticonsKeyboard by w446108264.

the class SimpleCommonUtils method getCommonEmoticonClickListener.

public static EmoticonClickListener getCommonEmoticonClickListener(final EditText editText) {
    return new EmoticonClickListener() {

        @Override
        public void onEmoticonClick(Object o, int actionType, boolean isDelBtn) {
            if (isDelBtn) {
                SimpleCommonUtils.delClick(editText);
            } else {
                if (o == null) {
                    return;
                }
                if (actionType == Constants.EMOTICON_CLICK_TEXT) {
                    String content = null;
                    if (o instanceof EmojiBean) {
                        content = ((EmojiBean) o).emoji;
                    } else if (o instanceof EmoticonEntity) {
                        content = ((EmoticonEntity) o).getContent();
                    }
                    if (TextUtils.isEmpty(content)) {
                        return;
                    }
                    int index = editText.getSelectionStart();
                    Editable editable = editText.getText();
                    editable.insert(index, content);
                }
            }
        }
    };
}
Also used : EmoticonClickListener(sj.keyboard.interfaces.EmoticonClickListener) EmojiBean(com.sj.emoji.EmojiBean) EmoticonEntity(sj.keyboard.data.EmoticonEntity) Editable(android.text.Editable)

Example 3 with EmojiBean

use of com.sj.emoji.EmojiBean in project XhsEmoticonsKeyboard by w446108264.

the class QqUtils method getCommonEmoticonClickListener.

public static EmoticonClickListener getCommonEmoticonClickListener(final EditText editText) {
    return new EmoticonClickListener() {

        @Override
        public void onEmoticonClick(Object o, int actionType, boolean isDelBtn) {
            if (isDelBtn) {
                QqUtils.delClick(editText);
            } else {
                if (o == null) {
                    return;
                }
                if (actionType == Constants.EMOTICON_CLICK_TEXT) {
                    String content = null;
                    if (o instanceof EmojiBean) {
                        content = ((EmojiBean) o).emoji;
                    } else if (o instanceof EmoticonEntity) {
                        content = ((EmoticonEntity) o).getContent();
                    }
                    if (TextUtils.isEmpty(content)) {
                        return;
                    }
                    int index = editText.getSelectionStart();
                    Editable editable = editText.getText();
                    editable.insert(index, content);
                }
            }
        }
    };
}
Also used : EmoticonClickListener(sj.keyboard.interfaces.EmoticonClickListener) EmojiBean(com.sj.emoji.EmojiBean) EmoticonEntity(sj.keyboard.data.EmoticonEntity) Editable(android.text.Editable)

Example 4 with EmojiBean

use of com.sj.emoji.EmojiBean in project XhsEmoticonsKeyboard by w446108264.

the class MainActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final XhsEmoticonsKeyBoard ek_bar = (XhsEmoticonsKeyBoard) findViewById(R.id.ek_bar);
    // source data
    ArrayList<EmojiBean> emojiArray = new ArrayList<>();
    Collections.addAll(emojiArray, DefEmoticons.getDefEmojiArray());
    // emoticon click
    final EmoticonClickListener emoticonClickListener = new EmoticonClickListener() {

        @Override
        public void onEmoticonClick(Object o, int actionType, boolean isDelBtn) {
            if (isDelBtn) {
                int action = KeyEvent.ACTION_DOWN;
                int code = KeyEvent.KEYCODE_DEL;
                KeyEvent event = new KeyEvent(action, code);
                ek_bar.getEtChat().onKeyDown(KeyEvent.KEYCODE_DEL, event);
            } else {
                if (o == null) {
                    return;
                }
                String content = null;
                if (o instanceof EmojiBean) {
                    content = ((EmojiBean) o).emoji;
                }
                int index = ek_bar.getEtChat().getSelectionStart();
                Editable editable = ek_bar.getEtChat().getText();
                editable.insert(index, content);
            }
        }
    };
    // emoticon instantiate
    final EmoticonDisplayListener emoticonDisplayListener = new EmoticonDisplayListener() {

        @Override
        public void onBindView(int i, ViewGroup viewGroup, EmoticonsAdapter.ViewHolder viewHolder, Object object, final boolean isDelBtn) {
            final EmojiBean emojiBean = (EmojiBean) object;
            if (emojiBean == null && !isDelBtn) {
                return;
            }
            viewHolder.ly_root.setBackgroundResource(com.keyboard.view.R.drawable.bg_emoticon);
            if (isDelBtn) {
                viewHolder.iv_emoticon.setImageResource(R.mipmap.icon_del);
            } else {
                viewHolder.iv_emoticon.setImageResource(emojiBean.icon);
            }
            viewHolder.rootView.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    emoticonClickListener.onEmoticonClick(emojiBean, 0, isDelBtn);
                }
            });
        }
    };
    //  page instantiate
    PageViewInstantiateListener pageViewInstantiateListener = new PageViewInstantiateListener<EmoticonPageEntity>() {

        @Override
        public View instantiateItem(ViewGroup viewGroup, int i, EmoticonPageEntity pageEntity) {
            if (pageEntity.getRootView() == null) {
                EmoticonPageView pageView = new EmoticonPageView(viewGroup.getContext());
                pageView.setNumColumns(pageEntity.getRow());
                pageEntity.setRootView(pageView);
                try {
                    EmoticonsAdapter adapter = new EmoticonsAdapter(viewGroup.getContext(), pageEntity, null);
                    // emoticon instantiate
                    adapter.setOnDisPlayListener(emoticonDisplayListener);
                    pageView.getEmoticonsGridView().setAdapter(adapter);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return pageEntity.getRootView();
        }
    };
    // build
    EmoticonPageSetEntity xhsPageSetEntity = new EmoticonPageSetEntity.Builder().setLine(3).setRow(7).setEmoticonList(emojiArray).setIPageViewInstantiateItem(pageViewInstantiateListener).setShowDelBtn(EmoticonPageEntity.DelBtnStatus.LAST).setIconUri(R.mipmap.ic_launcher).build();
    PageSetAdapter pageSetAdapter = new PageSetAdapter();
    pageSetAdapter.add(xhsPageSetEntity);
    ek_bar.setAdapter(pageSetAdapter);
    class EmojiFilter extends EmoticonFilter {

        private int emojiSize = -1;

        @Override
        public void filter(EditText editText, CharSequence text, int start, int lengthBefore, int lengthAfter) {
            emojiSize = emojiSize == -1 ? EmoticonsKeyboardUtils.getFontHeight(editText) : emojiSize;
            clearSpan(editText.getText(), start, text.toString().length());
            Matcher m = EmojiDisplay.getMatcher(text.toString().substring(start, text.toString().length()));
            if (m != null) {
                while (m.find()) {
                    String emojiHex = Integer.toHexString(Character.codePointAt(m.group(), 0));
                    Drawable drawable = getDrawable(editText.getContext(), EmojiDisplay.HEAD_NAME + emojiHex);
                    if (drawable != null) {
                        int itemHeight;
                        int itemWidth;
                        if (emojiSize == EmojiDisplay.WRAP_DRAWABLE) {
                            itemHeight = drawable.getIntrinsicHeight();
                            itemWidth = drawable.getIntrinsicWidth();
                        } else {
                            itemHeight = emojiSize;
                            itemWidth = emojiSize;
                        }
                        drawable.setBounds(0, 0, itemHeight, itemWidth);
                        EmojiSpan imageSpan = new EmojiSpan(drawable);
                        editText.getText().setSpan(imageSpan, start + m.start(), start + m.end(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
                    }
                }
            }
        }

        private void clearSpan(Spannable spannable, int start, int end) {
            if (start == end) {
                return;
            }
            EmojiSpan[] oldSpans = spannable.getSpans(start, end, EmojiSpan.class);
            for (int i = 0; i < oldSpans.length; i++) {
                spannable.removeSpan(oldSpans[i]);
            }
        }
    }
    // add a filter
    ek_bar.getEtChat().addEmoticonFilter(new EmojiFilter());
}
Also used : PageViewInstantiateListener(sj.keyboard.interfaces.PageViewInstantiateListener) Matcher(java.util.regex.Matcher) ArrayList(java.util.ArrayList) EmoticonPageEntity(sj.keyboard.data.EmoticonPageEntity) KeyEvent(android.view.KeyEvent) EmoticonClickListener(sj.keyboard.interfaces.EmoticonClickListener) EmojiBean(com.sj.emoji.EmojiBean) Editable(android.text.Editable) XhsEmoticonsKeyBoard(sj.keyboard.XhsEmoticonsKeyBoard) EditText(android.widget.EditText) EmoticonsAdapter(sj.keyboard.adpater.EmoticonsAdapter) ViewGroup(android.view.ViewGroup) EmojiSpan(com.sj.emoji.EmojiSpan) Drawable(android.graphics.drawable.Drawable) View(android.view.View) EmoticonPageView(sj.keyboard.widget.EmoticonPageView) EmoticonPageSetEntity(sj.keyboard.data.EmoticonPageSetEntity) EmoticonFilter(sj.keyboard.interfaces.EmoticonFilter) EmoticonPageView(sj.keyboard.widget.EmoticonPageView) PageSetAdapter(sj.keyboard.adpater.PageSetAdapter) EmoticonDisplayListener(sj.keyboard.interfaces.EmoticonDisplayListener) Spannable(android.text.Spannable)

Aggregations

EmojiBean (com.sj.emoji.EmojiBean)4 Editable (android.text.Editable)3 EmoticonClickListener (sj.keyboard.interfaces.EmoticonClickListener)3 View (android.view.View)2 ViewGroup (android.view.ViewGroup)2 ArrayList (java.util.ArrayList)2 EmoticonsAdapter (sj.keyboard.adpater.EmoticonsAdapter)2 EmoticonEntity (sj.keyboard.data.EmoticonEntity)2 EmoticonPageSetEntity (sj.keyboard.data.EmoticonPageSetEntity)2 EmoticonPageView (sj.keyboard.widget.EmoticonPageView)2 Drawable (android.graphics.drawable.Drawable)1 Spannable (android.text.Spannable)1 KeyEvent (android.view.KeyEvent)1 EditText (android.widget.EditText)1 TextView (android.widget.TextView)1 EmojiSpan (com.sj.emoji.EmojiSpan)1 BigEmoticonsAdapter (com.xhsemoticonskeyboard.common.adapter.emoticonadapter.BigEmoticonsAdapter)1 TextEmoticonsAdapter (com.xhsemoticonskeyboard.common.adapter.emoticonadapter.TextEmoticonsAdapter)1 SimpleAppsGridView (com.xhsemoticonskeyboard.common.widget.SimpleAppsGridView)1 Matcher (java.util.regex.Matcher)1