diff options
Diffstat (limited to 'libs/emojicon/src/main/java/com/rockerhieu/emojicon/EmojiconTextView.java')
-rw-r--r-- | libs/emojicon/src/main/java/com/rockerhieu/emojicon/EmojiconTextView.java | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/libs/emojicon/src/main/java/com/rockerhieu/emojicon/EmojiconTextView.java b/libs/emojicon/src/main/java/com/rockerhieu/emojicon/EmojiconTextView.java new file mode 100644 index 00000000..3e502aef --- /dev/null +++ b/libs/emojicon/src/main/java/com/rockerhieu/emojicon/EmojiconTextView.java @@ -0,0 +1,93 @@ +/* + * Copyright 2014 Hieu Rocker + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.rockerhieu.emojicon; + +import android.content.Context; +import android.content.res.TypedArray; +import android.text.SpannableStringBuilder; +import android.text.TextUtils; +import android.text.style.DynamicDrawableSpan; +import android.util.AttributeSet; +import android.widget.TextView; + +/** + * @author Hieu Rocker (rockerhieu@gmail.com). + */ +public class EmojiconTextView extends TextView { + private int mEmojiconSize; + private int mEmojiconAlignment; + private int mEmojiconTextSize; + private int mTextStart = 0; + private int mTextLength = -1; + private boolean mUseSystemDefault = false; + + public EmojiconTextView(Context context) { + super(context); + init(null); + } + + public EmojiconTextView(Context context, AttributeSet attrs) { + super(context, attrs); + init(attrs); + } + + public EmojiconTextView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + init(attrs); + } + + private void init(AttributeSet attrs) { + mEmojiconTextSize = (int) getTextSize(); + if (attrs == null) { + mEmojiconSize = (int) getTextSize(); + } else { + TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.Emojicon); + mEmojiconSize = (int) a.getDimension(R.styleable.Emojicon_emojiconSize, getTextSize()); + mEmojiconAlignment = a.getInt(R.styleable.Emojicon_emojiconAlignment, DynamicDrawableSpan.ALIGN_BASELINE); + mTextStart = a.getInteger(R.styleable.Emojicon_emojiconTextStart, 0); + mTextLength = a.getInteger(R.styleable.Emojicon_emojiconTextLength, -1); + mUseSystemDefault = a.getBoolean(R.styleable.Emojicon_emojiconUseSystemDefault, false); + a.recycle(); + } + setText(getText()); + } + + @Override + public void setText(CharSequence text, BufferType type) { + if (!TextUtils.isEmpty(text)) { + SpannableStringBuilder builder = new SpannableStringBuilder(text); + EmojiconHandler.addEmojis(getContext(), builder, mEmojiconSize, mEmojiconAlignment, mEmojiconTextSize, mTextStart, mTextLength, mUseSystemDefault); + text = builder; + } + super.setText(text, type); + } + + /** + * Set the size of emojicon in pixels. + */ + public void setEmojiconSize(int pixels) { + mEmojiconSize = pixels; + super.setText(getText()); + } + + /** + * Set whether to use system default emojicon + */ + public void setUseSystemDefault(boolean useSystemDefault) { + mUseSystemDefault = useSystemDefault; + } +} |