package com.yuruiyin.richeditor.sample.utils;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.view.View;

/**
 * Title:
 * Description:
 *
 * @author yuruiyin
 * @version 2019-05-08
 */
public class ViewUtil {

    /**
     * 设置指定view的实际大小
     * @param view 指定控件
     * @param width view的实际宽
     * @param height view的实际高
     */
    public static void layoutView(View view, int width, int height) {
        // 指定整个View的大小 参数是左上角 和右下角的坐标
        view.layout(0, 0, width, height);
        int measuredWidth = View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY);
        int measuredHeight = View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.AT_MOST);
        // 当然,measure完后,并不会实际改变View的尺寸,需要调用View.layout方法去进行布局。
        view.measure(measuredWidth, measuredHeight);
        view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
    }

    /**
     * 通过canvas将view转化为bitmap
     * @param view 指定view
     * @return bitmap
     */
    public static Bitmap getViewBitmapByCanvas(View view) {
        if (view == null) {
            return null;
        }
        Bitmap bmp = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bmp);

        // 如果不设置canvas画布为白色,则生成透明
//        c.drawColor(Color.WHITE);
//        view.layout(0, 0, w, h);

        view.draw(canvas);
        return bmp;
    }

}