android 顯示錶情 (二)

還有就是把圖片插入到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;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章