欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

edittext显示表情,edittext表情,原理是将gif先解码成一

来源: javaer 分享于  点击 29280 次 点评:103

edittext显示表情,edittext表情,原理是将gif先解码成一


原理是将gif先解码成一张张图片存在内存中 ,然后利用animationDrawable一帧一帧播放。

gHelper.read(getResources().openRawResource(R.drawable.f009));// 得到第一张图片BitmapDrawable bd = new BitmapDrawable(gHelper.getImage());mSmile.addFrame(bd, gHelper.getDelay(0));for (int i = 1; i < gHelper.getFrameCount(); i++) {    mSmile.addFrame(new BitmapDrawable(gHelper.nextBitmap()), gHelper.getDelay(i));}mSmile.setBounds(0, 0, bd.getIntrinsicWidth(), bd.getIntrinsicHeight());mSmile.setOneShot(false);bd.setBounds(0, 0, bd.getIntrinsicWidth(), bd.getIntrinsicHeight());// 需要处理的文本,[smile]是需要被替代的文本final SpannableString spannable = new SpannableString(edittext.getText().toString()+ "[smile]");// 要让图片替代指定的文字就要用ImageSpanImageSpan span = new ImageSpan(mSmile, ImageSpan.ALIGN_BASELINE);// 开始替换,注意第2和第3个参数表示从哪里开始替换到哪里替换结束(start和end)// 最后一个参数类似数学中的集合,[5,12)表示从5到12,包括5但不包括12spannable.setSpan(span, edittext.getText().length(), edittext.getText().length()+ "[smile]".length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);edittext.setText(spannable);mSmile.invalidateSelf(); new Thread(new Runnable() {    @Override    public void run() {        while (mRunning) {            mSmile.selectDrawable(mFrame++);            if (mFrame == mSmile.getNumberOfFrames()) {                mFrame = 0;            }            edittext.postInvalidate();            KT.out(mSmile.isRunning());            try {                Thread.sleep(500);            } catch (InterruptedException e) {                e.printStackTrace();            }        }    }}).start();//该片段来自于http://byrx.net
相关栏目:

用户点评