最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Android中顯示圖釋

在Android中顯示圖釋

我的IM應(yīng)用必須支持表情符號。它們是GIF并具有文本表示形式,如果用戶選擇其中之一,則會在輸入框中使用它們。但是我想在發(fā)送后將它們顯示為圖像。當(dāng)前,我的自定義數(shù)組適配器在一行的TextView中顯示已發(fā)送的消息。有什么合適的方法可以根據(jù)文本表示形式動態(tài)顯示圖像?我是否必須搜索表情符號文本,如果找到了,請從布局中刪除TextView(relativeLayout最適合嗎?),然后在IM的開頭添加一個TextView,一個帶有表情符號的ImageView和另一個TextView。如果同時發(fā)送更多表情符號,可能會造成混亂。有沒有更簡單,更合乎邏輯的方法?
查看完整描述

3 回答

?
www說

TA貢獻1775條經(jīng)驗 獲得超8個贊

我會嘗試使用正則表達式用<img>標(biāo)簽替換每個表情符號的所有出現(xiàn)。然后,將該HTML轉(zhuǎn)換為SpannedString viaHtml.fromHtml()。這SpannedString可以被用在setText()呼叫TextView。


查看完整回答
反對 回復(fù) 2019-12-09
?
蕪湖不蕪

TA貢獻1796條經(jīng)驗 獲得超7個贊

我認為構(gòu)建會更有用Spannable。


private static final Factory spannableFactory = Spannable.Factory

        .getInstance();


private static final Map<Pattern, Integer> emoticons = new HashMap<Pattern, Integer>();


static {

    addPattern(emoticons, ":)", R.drawable.emo_im_happy);

    addPattern(emoticons, ":-)", R.drawable.emo_im_happy);

    // ...

}


private static void addPattern(Map<Pattern, Integer> map, String smile,

        int resource) {

    map.put(Pattern.compile(Pattern.quote(smile)), resource);

}


public static boolean addSmiles(Context context, Spannable spannable) {

    boolean hasChanges = false;

    for (Entry<Pattern, Integer> entry : emoticons.entrySet()) {

        Matcher matcher = entry.getKey().matcher(spannable);

        while (matcher.find()) {

            boolean set = true;

            for (ImageSpan span : spannable.getSpans(matcher.start(),

                    matcher.end(), ImageSpan.class))

                if (spannable.getSpanStart(span) >= matcher.start()

                        && spannable.getSpanEnd(span) <= matcher.end())

                    spannable.removeSpan(span);

                else {

                    set = false;

                    break;

                }

            if (set) {

                hasChanges = true;

                spannable.setSpan(new ImageSpan(context, entry.getValue()),

                        matcher.start(), matcher.end(),

                        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

            }

        }

    }

    return hasChanges;

}


public static Spannable getSmiledText(Context context, CharSequence text) {

    Spannable spannable = spannableFactory.newSpannable(text);

    addSmiles(context, spannable);

    return spannable;

}

實際上,此代碼基于本機Html類的源代碼。


查看完整回答
反對 回復(fù) 2019-12-09
?
慕標(biāo)琳琳

TA貢獻1830條經(jīng)驗 獲得超9個贊

如果您使用而不是使用來獲取可繪制對象的每個外觀的克隆,則似乎不需要整個內(nèi)部for循環(huán)和刪除先前的跨度。entry.getValue()entry.getValue().getConstantState().newDrawable()

查看完整回答
反對 回復(fù) 2019-12-09
  • 3 回答
  • 0 關(guān)注
  • 478 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號