Android將一個View轉(zhuǎn)為Bitmap的兩種方式

方式一:新建Bitmap,將View中內(nèi)容繪制到Bitmap上

public static Bitmap createBitmapFromView(View view) {
      //是ImageView直接獲取
        if (view instanceof ImageView) {
            Drawable drawable = ((ImageView) view).getDrawable();
            if (drawable instanceof BitmapDrawable) {
                return ((BitmapDrawable) drawable).getBitmap();
            }
        }
        view.clearFocus();
        Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
        if (bitmap != null) {
            Canvas canvas = new Canvas(bitmap);
            view.draw(canvas);
            canvas.setBitmap(null);
        }
        return bitmap;
}

方式二:直接從View緩存cache中取

/**
   * 該方式原理主要是:View組件顯示的內(nèi)容可以通過cache機制保存為bitmap
     */
    public static Bitmap createBitmapFromView(View view) {
        Bitmap bitmap = null;
        //開啟view緩存bitmap
        view.setDrawingCacheEnabled(true);
        //設(shè)置view緩存Bitmap質(zhì)量
        view.setDrawingCacheQuality(DRAWING_CACHE_QUALITY_HIGH);
        //獲取緩存的bitmap
        Bitmap cache = view.getDrawingCache();
        if (cache != null && !cache.isRecycled()) {
            bitmap = Bitmap.createBitmap(cache);
        }
        //銷毀view緩存bitmap
        view.destroyDrawingCache();
        //關(guān)閉view緩存bitmap
        view.setDrawingCacheEnabled(false);
        return bitmap;
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容