android.view.View#draw ( )源码实例Demo

下面列出了android.view.View#draw ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: UltimateAndroid   文件: GrabIt.java
public static Bitmap takeScreenshot(View view, Bitmap.Config config) {
  int width = view.getWidth();
  int height = view.getHeight();

  if (view != null && width > 0 && height > 0) {
    Bitmap bitmap = Bitmap.createBitmap(width, height, config);
    Canvas canvas = new Canvas(bitmap);
    view.draw(canvas);

    //canvas.drawColor(Color.RED, PorterDuff.Mode.DARKEN); //NOTES: debug option

    if (AphidLog.ENABLE_DEBUG) {
      AphidLog.d("create bitmap %dx%d, format %s", width, height, config);
    }

    return bitmap;
  } else {
    return null;
  }
}
 
源代码2 项目: TidyDemo   文件: BlurUtils.java
public static Bitmap drawViewToBitmap(Bitmap dest, View view, int width, int height, int downSampling, Drawable drawable) {
	float scale = 1f / downSampling;
	int heightCopy = view.getHeight();
	view.layout(0, 0, width, height);
	int bmpWidth = (int) (width * scale);
	int bmpHeight = (int) (height * scale);
	if (dest == null || dest.getWidth() != bmpWidth || dest.getHeight() != bmpHeight) {
		dest = Bitmap.createBitmap(bmpWidth, bmpHeight, Bitmap.Config.ARGB_8888);
	}
	Canvas c = new Canvas(dest);
	drawable.setBounds(new Rect(0, 0, width, height));
	drawable.draw(c);
	if (downSampling > 1) {
		c.scale(scale, scale);
	}
	view.draw(c);
	view.layout(0, 0, width, heightCopy);
	// saveToSdCard(original, "original.png");
	return dest;
}
 
/**
 * Draws a header to a canvas, offsetting by some x and y amount
 *
 * @param recyclerView the parent recycler view for drawing the header into
 * @param canvas       the canvas on which to draw the header
 * @param header       the view to draw as the header
 * @param offset       a Rect used to define the x/y offset of the header. Specify x/y offset by setting
 *                     the {@link Rect#left} and {@link Rect#top} properties, respectively.
 */
public void drawHeader(RecyclerView recyclerView, Canvas canvas, View header, Rect offset) {
  canvas.save();

  if (recyclerView.getLayoutManager().getClipToPadding()) {
    // Clip drawing of headers to the padding of the RecyclerView. Avoids drawing in the padding
    initClipRectForHeader(mTempRect, recyclerView, header);
    canvas.clipRect(mTempRect);
  }

  canvas.translate(offset.left, offset.top);

  header.draw(canvas);
  canvas.restore();
}
 
源代码4 项目: OmniList   文件: DragSortRecycler.java
private BitmapDrawable createFloatingBitmap(View v) {
    floatingItemStatingBounds = new Rect(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
    floatingItemBounds = new Rect(floatingItemStatingBounds);

    Bitmap bitmap = Bitmap.createBitmap(floatingItemStatingBounds.width(),
            floatingItemStatingBounds.height(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    v.draw(canvas);

    BitmapDrawable retDrawable = new BitmapDrawable(v.getResources(), bitmap);
    retDrawable.setBounds(floatingItemBounds);

    return retDrawable;
}
 
源代码5 项目: UltimateAndroid   文件: ViewUtils.java
/**
 * change View to Bitmap Object
 * 
 * @param v
 * @return
 */
public static Bitmap loadBitmapFromView(View v) {
    if (v == null) {
        return null;
    }
    Bitmap screenshot;
    screenshot = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Config.ARGB_8888);
    Canvas c = new Canvas(screenshot);
    c.translate(-v.getScrollX(), -v.getScrollY());
    v.draw(c);
    return screenshot;
}
 
源代码6 项目: materialup   文件: PostActivity.java
@Override
public Parcelable onCaptureSharedElementSnapshot(View sharedElement,
                                                 Matrix viewToGlobalMatrix,
                                                 RectF screenBounds) {
    // store a snapshot of the fab to fade out when morphing to the login dialog
    int bitmapWidth = Math.round(screenBounds.width());
    int bitmapHeight = Math.round(screenBounds.height());
    Bitmap bitmap = null;
    if (bitmapWidth > 0 && bitmapHeight > 0) {
        bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888);
        sharedElement.draw(new Canvas(bitmap));
    }
    return bitmap;
}
 
源代码7 项目: AndroidTVWidget   文件: OpenEffectBridge.java
public void onDrawFocusView(Canvas canvas) {
	View view = mFocusView;
	canvas.save();
	float scaleX = (float) (getMainUpView().getWidth()) / (float) view.getWidth();
	float scaleY = (float) (getMainUpView().getHeight()) / (float) view.getHeight();
	canvas.scale(scaleX, scaleY);
	view.draw(canvas);
	canvas.restore();
}
 
源代码8 项目: Transitions-Everywhere   文件: Crossfade.java
private void captureValues(@NonNull TransitionValues transitionValues) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
        return;
    }
    View view = transitionValues.view;
    if (view.getWidth() <= 0 || view.getHeight() <= 0) {
        return;
    }
    Rect bounds = new Rect(0, 0, view.getWidth(), view.getHeight());
    if (mFadeBehavior != FADE_BEHAVIOR_REVEAL) {
        bounds.offset(view.getLeft(), view.getTop());
    }
    transitionValues.values.put(PROPNAME_BOUNDS, bounds);

    if (Transition.DBG) {
        Log.d(LOG_TAG, "Captured bounds " + transitionValues.values.get(PROPNAME_BOUNDS));
    }
    Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),
            Bitmap.Config.ARGB_8888);
    if (view instanceof TextureView) {
        bitmap = ((TextureView) view).getBitmap();
    } else {
        Canvas c = new Canvas(bitmap);
        view.draw(c);
    }
    transitionValues.values.put(PROPNAME_BITMAP, bitmap);
    BitmapDrawable drawable = new BitmapDrawable(view.getResources(), bitmap);
    // TODO: lrtb will be wrong if the view has transXY set
    drawable.setBounds(bounds);
    transitionValues.values.put(PROPNAME_DRAWABLE, drawable);
}
 
private Bitmap loadBitmapFromView(View mView) {
    Bitmap b = Bitmap.createBitmap(
            mView.getWidth(),
            mView.getHeight(),
            Bitmap.Config.ARGB_8888);

    Canvas c = new Canvas(b);

    // With the following, screen blinks
    //v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);

    mView.draw(c);

    return b;
}
 
源代码10 项目: DevUtils   文件: CapturePictureUtils.java
/**
 * 通过 View 绘制为 Bitmap
 * @param view   {@link View}
 * @param config {@link Bitmap.Config}
 * @return {@link Bitmap}
 */
public static Bitmap snapshotByView(final View view, final Bitmap.Config config) {
    if (view == null || config == null) return null;
    try {
        Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), config);
        Canvas canvas = new Canvas(bitmap);
        canvas.drawColor(BACKGROUND_COLOR);
        view.layout(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
        view.draw(canvas);
        return bitmap;
    } catch (Exception e) {
        LogPrintUtils.eTag(TAG, e, "snapshotByView");
    }
    return null;
}
 
private int getColorOfAPixel() {
    View view = runOnUiThreadBlocking(() -> mActivity.findViewById(android.R.id.content));
    Bitmap bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    view.draw(canvas);
    return bitmap.getPixel(0, 0);
}
 
源代码12 项目: Muzesto   文件: DragSortRecycler.java
private BitmapDrawable createFloatingBitmap(View v) {
    floatingItemStatingBounds = new Rect(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
    floatingItemBounds = new Rect(floatingItemStatingBounds);

    Bitmap bitmap = Bitmap.createBitmap(floatingItemStatingBounds.width(),
            floatingItemStatingBounds.height(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    v.draw(canvas);

    BitmapDrawable retDrawable = new BitmapDrawable(v.getResources(), bitmap);
    retDrawable.setBounds(floatingItemBounds);

    return retDrawable;
}
 
源代码13 项目: BoardView   文件: BoardView.java
private Bitmap getBitmapFromView(View v, float scale){
    double radians = 0.0523599f;
    double s = Math.abs(Math.sin(radians));
    double c = Math.abs(Math.cos(radians));
    int width = (int)(v.getHeight()*s + v.getWidth()*c);
    int height = (int)(v.getWidth()*s + v.getHeight()*c);
    Bitmap bitmap = Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    canvas.scale(scale,scale);
    v.draw(canvas);
    return bitmap;
}
 
源代码14 项目: toktok-android   文件: HeaderRenderer.java
/**
 * Draws a header to a canvas, offsetting by some x and y amount
 *
 * @param recyclerView the parent recycler view for drawing the header into
 * @param canvas       the canvas on which to draw the header
 * @param header       the view to draw as the header
 * @param offset       a Rect used to define the x/y offset of the header. Specify x/y offset by setting
 *                     the {@link Rect#left} and {@link Rect#top} properties, respectively.
 */
public void drawHeader(@NonNull RecyclerView recyclerView, @NonNull Canvas canvas, @NonNull View header, @NonNull Rect offset) {
    canvas.save();

    if (recyclerView.getLayoutManager().getClipToPadding()) {
        // Clip drawing of headers to the padding of the RecyclerView. Avoids drawing in the padding
        initClipRectForHeader(mTempRect, recyclerView, header);
        canvas.clipRect(mTempRect);
    }

    canvas.translate(offset.left, offset.top);

    header.draw(canvas);
    canvas.restore();
}
 
源代码15 项目: graphhopper-navigation-android   文件: ViewUtils.java
public static Bitmap loadBitmapFromView(View view) {
  if (view.getMeasuredHeight() <= 0) {
    view.measure(CoordinatorLayout.LayoutParams.WRAP_CONTENT, CoordinatorLayout.LayoutParams.WRAP_CONTENT);
    Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    view.layout(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
    view.draw(canvas);
    return bitmap;
  }
  return null;
}
 
源代码16 项目: BlurPopupWindow   文件: BlurPopupWindow.java
BlurTask(View sourceView, int statusBarHeight, int navigationBarheight, BlurPopupWindow popupWindow, BlurTaskCallback blurTaskCallback) {
    mContextRef = new WeakReference<>(sourceView.getContext());
    mPopupWindowRef = new WeakReference<>(popupWindow);
    mBlurTaskCallback = blurTaskCallback;

    int height = sourceView.getHeight() - statusBarHeight - navigationBarheight;
    if (height < 0) {
        height = sourceView.getHeight();
    }

    Drawable background = sourceView.getBackground();
    mSourceBitmap = Bitmap.createBitmap(sourceView.getWidth(), height, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(mSourceBitmap);
    int saveCount = 0;
    if (statusBarHeight != 0) {
        saveCount = canvas.save();
        canvas.translate(0, -statusBarHeight);
    }
    if (popupWindow.getBlurRadius() > 0) {
        if (background == null) {
            canvas.drawColor(0xffffffff);
        }
        sourceView.draw(canvas);
    }
    if (popupWindow.getTintColor() != 0) {
        canvas.drawColor(popupWindow.getTintColor());
    }
    if (statusBarHeight != 0 && saveCount != 0) {
        canvas.restoreToCount(saveCount);
    }
}
 
源代码17 项目: Trebuchet   文件: Workspace.java
/**
 * Draw the View v into the given Canvas.
 *
 * @param v the view to draw
 * @param destCanvas the canvas to draw on
 * @param padding the horizontal and vertical padding to use when drawing
 */
private static void drawDragView(View v, Canvas destCanvas, int padding) {
    final Rect clipRect = sTempRect;
    v.getDrawingRect(clipRect);

    boolean textVisible = false;

    destCanvas.save();
    if (v instanceof TextView) {
        Drawable d = getTextViewIcon((TextView) v);
        Rect bounds = getDrawableBounds(d);
        clipRect.set(0, 0, bounds.width() + padding, bounds.height() + padding);
        destCanvas.translate(padding / 2 - bounds.left, padding / 2 - bounds.top);
        d.draw(destCanvas);
    } else {
        if (v instanceof FolderIcon) {
            // For FolderIcons the text can bleed into the icon area, and so we need to
            // hide the text completely (which can't be achieved by clipping).
            if (((FolderIcon) v).getTextVisible()) {
                ((FolderIcon) v).setTextVisible(false);
                textVisible = true;
            }
        }
        destCanvas.translate(-v.getScrollX() + padding / 2, -v.getScrollY() + padding / 2);
        destCanvas.clipRect(clipRect, Op.REPLACE);
        v.draw(destCanvas);

        // Restore text visibility of FolderIcon if necessary
        if (textVisible) {
            ((FolderIcon) v).setTextVisible(true);
        }
    }
    destCanvas.restore();
}
 
源代码18 项目: PTVGlass   文件: ChronometerDrawer.java
/**
 * Draws the view in the SurfaceHolder's canvas.
 */
private void draw(View view) {
    Canvas canvas;
    try {
        canvas = mHolder.lockCanvas();
    } catch (Exception e) {
        Log.e(TAG, "Unable to lock canvas: " + e);
        return;
    }
    if (canvas != null) {
        view.draw(canvas);
        mHolder.unlockCanvasAndPost(canvas);
    }
}
 
源代码19 项目: RichEditor   文件: ViewUtil.java
/**
     * 通过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;
    }
 
源代码20 项目: SmartOrnament   文件: HintPopupWindow.java
/**
 * 得到bitmap位图, 传入View对象
 */
public static Bitmap getBitmapByView(View view) {

    Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
    view.draw(new Canvas(bitmap));
    return bitmap;
}
 
 方法所在类
 同类方法