关闭

android 显示表情 (二)

743人阅读 评论(0) 收藏 举报

还有就是把图片插入到EditText中去。

代码如下:

    /**
     * 
     * 把表情插入到输入框中去
      * 
     * @param key
     * 
     *          点击头像真实代表的值
      *          
     * @see insertImage
     */
    public void insertImage(String key)
    {
        // 将随机获得的图像追加到EditText控件的最后
        int location = textEdit.getSelectionStart();
        //获取EditText的文字  
        Editable edit = textEdit.getEditableText();
        SpannableString spannable = getImageValue(key);
        if (location < 0 || location >= edit.length())
        {
            edit.append(spannable);
        }
        else
        {
            //光标所在位置插入文字   
            edit.insert(location, spannable);
        }
        layout_face.setVisibility(View.GONE);
        textEdit.clearFocus();
    }

getImageValue方法和上面插入到TextView中去的方法差不多,如下:

    /**
     * 
     * 把表情插入到输入框中去
      * 
     * @param key
     * 
     *          点击头像真实代表的值
      *          
     * @see getImageValue
     */
    public SpannableString getImageValue(String key)
    {
        try
        {
            String imageId = BootApp.getImageMap().get(key);
            //  根据随机产生的1至9的整数从R.drawable类中获得相应资源ID(静态变量)的Field对象
            Field field = R.drawable.class.getDeclaredField(imageId);
            //  获得资源ID的值,也就是静态变量的值
            int resourceId = Integer.parseInt(field.get(null).toString());
            //  根据资源ID获得资源图像的Bitmap对象
            Bitmap bitmap = BitmapFactory.decodeResource(Global.getContext().getResources(), resourceId);
            //  根据Bitmap对象创建ImageSpan对象
            ImageSpan imageSpan = new ImageSpan(Global.getContext(), bitmap);
            //  创建一个SpannableString对象,以便插入用ImageSpan对象封装的图像
            SpannableString spannableString = new SpannableString(key);
            //  用ImageSpan对象替换face
            spannableString.setSpan(imageSpan, 0, key.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            return spannableString;
        }
        catch (Exception e)
        {
            e.printStackTrace();
            Log.e("onClick_RandomFace", "Insert into image is error......");
        }
        return null;
    }
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场