在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    你居然不懂Bitmap和Drawable?相關(guān)知識(shí)大掃盲

    Bitmap是什么

    Bitmap的基本思想就是用一個(gè)bit位來標(biāo)記某個(gè)元素對(duì)應(yīng)的Value,而Key即是該元素。由于采用了Bit為單位來存儲(chǔ)數(shù)據(jù),因此在存儲(chǔ)空間方面,可以大大節(jié)省。

    Bitmap 是位圖信息的存儲(chǔ),即 個(gè)矩形圖像每個(gè)像素的顏 信息的存儲(chǔ)器。

    Android從基礎(chǔ)底層到架構(gòu)成長(zhǎng)的全套筆記,有需要完整版的朋友,可留言【Android】領(lǐng)?。?/p>

    Drawable是什么

    Drawable是一種可以在Canvas上進(jìn)行繪制的抽象的概念,顏色、圖片等都可以是一個(gè)Drawable。Drawable可以通過XML定義,或者通過代碼創(chuàng)建。Android中Drawable是一個(gè)抽象類,每個(gè)具體的Drawable都是其子類。簡(jiǎn)單來講,其可以理解為:圖像。

    Drawable 內(nèi)部存儲(chǔ)的是繪制規(guī)則,這個(gè)規(guī)則可以是 個(gè)具體的 Bitmap,也可以是 個(gè)純粹的顏 ,甚 可以是 個(gè)抽象的、靈活的描述。Drawable 可以不含有具體的像素信息,只要它含有的信息 以在 draw(Canvas) 法被調(diào) 時(shí)進(jìn) 繪制就夠了。由于 Drawable 存儲(chǔ)的只是繪制規(guī)則,因此在它的 draw() 法被調(diào) 前,需要先調(diào) Drawable.setBounds() 來為它設(shè)置繪制邊界。

    Drawable的優(yōu)點(diǎn):

    • 使用簡(jiǎn)單,比自定義View成本低
    • 非圖片類的drawable所占空間小,能減小apk大小

    Bitmap和Drawable的相互轉(zhuǎn)換

    //drawable convert bitmap public static Bitmap drawableToBitmap(Drawable drawable) { Bitmap bitmap = null; if (drawable instanceof BitmapDrawable) { BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; if (bitmapDrawable.getBitmap() != null) { return bitmapDrawable.getBitmap(); } } if ((drawable.getIntrinsicWidth() <= 0) || (drawable.getIntrinsicHeight() <= 0)) { bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); } else { bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); } Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); drawable.draw(canvas); return bitmap; } //bitmap convert drawable public static Drawable bitmapToDrawable(Context context, Bitmap bitmap) { return new BitmapDrawable(context.getResources(), bitmap); }

    事實(shí)上,由于 Bitmap 和 Drawable 是兩個(gè)不同的概念,因此確切地說它們并不是互相「轉(zhuǎn)換」, 是從其中 個(gè)獲得另 個(gè)的對(duì)象:

    • Bitmap -> Drawable:創(chuàng)建 個(gè) BitmapDrawable。
    • Drawable -> Bitmap:如果是 BitmapDrawable,使 BitmapDrawable.getBitmap() 直接獲??;如果不是,創(chuàng)建 個(gè) Bitmap和 個(gè) Canvas,使 Drawable 通過 Canvas 把內(nèi)容繪制到 Bitmap 中。

    作者:Arrom轉(zhuǎn)載平臺(tái):掘金鏈接:https://juejin.cn/post/7126798240573292558

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年8月2日 12:16
    下一篇 2022年8月2日 12:17

    相關(guān)推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息