diff options
author | lookshe <github@lookshe.org> | 2015-04-12 17:22:42 +0200 |
---|---|---|
committer | lookshe <github@lookshe.org> | 2015-04-12 17:22:53 +0200 |
commit | cae106e3106d26742d94e74f96c0295270c1620e (patch) | |
tree | d1c251ffe6a8162efca5082056f93a91ce8c5bef /libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconTextView.java | |
parent | 972c65b775b2191ee5b54472e24958f3c87dbb21 (diff) |
whatsapp-like smiley implementation
Diffstat (limited to 'libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconTextView.java')
-rw-r--r-- | libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconTextView.java | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconTextView.java b/libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconTextView.java new file mode 100644 index 00000000..5822e478 --- /dev/null +++ b/libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconTextView.java @@ -0,0 +1,76 @@ +/* + * Copyright 2014 Ankush Sachdeva + * + * 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 github.ankushsachdeva.emojicon; + +import github.ankushsachdeva.emojicon.R; + +import android.content.Context; +import android.content.res.TypedArray; +import android.text.SpannableStringBuilder; +import android.util.AttributeSet; +import android.widget.TextView; + +/** + * @author Hieu Rocker (rockerhieu@gmail.com). + */ +public class EmojiconTextView extends TextView { + private int mEmojiconSize; + private int mTextStart = 0; + private int mTextLength = -1; + + 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) { + if (attrs == null) { + mEmojiconSize = (int) getTextSize(); + } else { + TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.Emojicon); + mEmojiconSize = (int) a.getDimension(R.styleable.Emojicon_emojiconSize, getTextSize()); + mTextStart = a.getInteger(R.styleable.Emojicon_emojiconTextStart, 0); + mTextLength = a.getInteger(R.styleable.Emojicon_emojiconTextLength, -1); + a.recycle(); + } + setText(getText()); + } + + @Override + public void setText(CharSequence text, BufferType type) { + SpannableStringBuilder builder = new SpannableStringBuilder(text); + EmojiconHandler.addEmojis(getContext(), builder, mEmojiconSize, mTextStart, mTextLength); + super.setText(builder, type); + } + + /** + * Set the size of emojicon in pixels. + */ + public void setEmojiconSize(int pixels) { + mEmojiconSize = pixels; + } +} |