抖音短視頻系統開發Android將佈局內容生成圖片

  @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
    public Bitmap getBitmap(View view) {

        if (null == view) {
            return null;
        }

        Bitmap bitmap = null;

        // 步驟一:獲取視圖的寬和高
        int width = view.getRight() - view.getLeft();
        int height = view.getBottom() - view.getTop();

        // 判斷背景是否爲不透明
        final boolean opaque = view.getDrawingCacheBackgroundColor() != 0 || view.isOpaque();
        Bitmap.Config quality;

        if (!opaque) {
            switch (view.getDrawingCacheQuality()) {
                case DRAWING_CACHE_QUALITY_AUTO:
                case DRAWING_CACHE_QUALITY_LOW:
                case DRAWING_CACHE_QUALITY_HIGH:
                default:
                    quality = Bitmap.Config.ARGB_8888;
                    break;
            }
        } else {
            quality = Bitmap.Config.RGB_565;
        }

        // 步驟二:生成bitmap
        bitmap = Bitmap.createBitmap(getResources().getDisplayMetrics(), width, height, quality);
        bitmap.setDensity(getResources().getDisplayMetrics().densityDpi);

        if (opaque){
            bitmap.setHasAlpha(false);
        }

        boolean clear = view.getDrawingCacheBackgroundColor() != 0;

        // 步驟三:繪製canvas
        Canvas canvas = new Canvas(bitmap);
        if (clear) {
            bitmap.eraseColor(view.getDrawingCacheBackgroundColor());
        }

        view.computeScroll();
        final int restoreCount = canvas.save();
        canvas.translate(-view.getScrollX(), -view.getScrollY());
        view.draw(canvas);
        canvas.restoreToCount(restoreCount);
        canvas.setBitmap(null);

        return bitmap;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章