第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在Android中顯示圖釋

在Android中顯示圖釋

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

3 回答

?
www說

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊

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


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

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊

我認(rèn)為構(gòu)建會(huì)更有用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;

}

實(shí)際上,此代碼基于本機(jī)Html類的源代碼。


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

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊

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

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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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