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

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

比較Android中的兩個(gè)drawables

比較Android中的兩個(gè)drawables

阿晨1998 2019-11-14 14:33:41
如何比較兩個(gè)可繪制對(duì)象,我這樣做卻沒(méi)有成功public void MyClick(View view){ Drawable fDraw = view.getBackground(); Drawable sDraw = getResources().getDrawable(R.drawable.twt_hover);  if(fDraw.equals(sDraw))  {   //Not coming  }}
查看完整描述

3 回答

?
暮色呼如

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

依靠getConstantState()單獨(dú)可導(dǎo)致假陰性。


我采用的方法是嘗試在第一個(gè)實(shí)例中比較ConstantState,但是如果該檢查失敗,則退回到Bitmap比較中。


這在所有情況下都應(yīng)適用(包括不是資源的圖像),但請(qǐng)注意,這會(huì)占用大量?jī)?nèi)存。


public static boolean areDrawablesIdentical(Drawable drawableA, Drawable drawableB) {

    Drawable.ConstantState stateA = drawableA.getConstantState();

    Drawable.ConstantState stateB = drawableB.getConstantState();

    // If the constant state is identical, they are using the same drawable resource.

    // However, the opposite is not necessarily true.

    return (stateA != null && stateB != null && stateA.equals(stateB))

            || getBitmap(drawableA).sameAs(getBitmap(drawableB));

}


public static Bitmap getBitmap(Drawable drawable) {

    Bitmap result;

    if (drawable instanceof BitmapDrawable) {

        result = ((BitmapDrawable) drawable).getBitmap();

    } else {

        int width = drawable.getIntrinsicWidth();

        int height = drawable.getIntrinsicHeight();

        // Some drawables have no intrinsic width - e.g. solid colours.

        if (width <= 0) {

            width = 1;

        }

        if (height <= 0) {

            height = 1;

        }


        result = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

        Canvas canvas = new Canvas(result);

        drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());

        drawable.draw(canvas);

    }

    return result;

}


查看完整回答
反對(duì) 回復(fù) 2019-11-14
?
德瑪西亞99

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

我的問(wèn)題是僅比較兩個(gè)可繪制對(duì)象,我嘗試但無(wú)法獲得直接比較兩個(gè)可繪制對(duì)象的任何方法,但是對(duì)于我的解決方案,我將可繪制對(duì)象更改為位圖,然后比較兩個(gè)位圖,此方法是可行的。


Bitmap bitmap = ((BitmapDrawable)fDraw).getBitmap();

Bitmap bitmap2 = ((BitmapDrawable)sDraw).getBitmap();


if(bitmap == bitmap2)

    {

        //Code blcok

    }


查看完整回答
反對(duì) 回復(fù) 2019-11-14
  • 3 回答
  • 0 關(guān)注
  • 430 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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