@Override public void draw(@NonNull Canvas canvas) { if (mShadow != null) { mShadow.draw(canvas); } super.draw(canvas); } }
private Bitmap createDraggingItemImage(View v, NinePatchDrawable shadow) { int viewTop = v.getTop(); int viewLeft = v.getLeft(); int viewWidth = v.getWidth(); int viewHeight = v.getHeight(); int canvasWidth = viewWidth + mShadowPadding.left + mShadowPadding.right; int canvasHeight = viewHeight + mShadowPadding.top + mShadowPadding.bottom; v.measure( View.MeasureSpec.makeMeasureSpec(viewWidth, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(viewHeight, View.MeasureSpec.EXACTLY)); v.layout(viewLeft, viewTop, viewLeft + viewWidth, viewTop + viewHeight); final Bitmap bitmap = Bitmap.createBitmap(canvasWidth, canvasHeight, Bitmap.Config.ARGB_8888); final Canvas canvas = new Canvas(bitmap); if (shadow != null) { shadow.setBounds(0, 0, canvasWidth, canvasHeight); shadow.draw(canvas); } final int savedCount = canvas.save(); // NOTE: Explicitly set clipping rect. This is required on Gingerbread. canvas.clipRect(mShadowPadding.left, mShadowPadding.top, canvasWidth - mShadowPadding.right, canvasHeight - mShadowPadding.bottom); canvas.translate(mShadowPadding.left, mShadowPadding.top); v.draw(canvas); canvas.restoreToCount(savedCount); return bitmap; }
@Override public void onDraw(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { final int childCount = parent.getChildCount(); if (childCount == 0) { return; } for (int i = 0; i < childCount; i++) { final View child = parent.getChildAt(i); if (!shouldDrawDropShadow(child)) { continue; } final int tx = (int) (child.getTranslationX() + 0.5f); final int ty = (int) (child.getTranslationY() + 0.5f); final int left = child.getLeft() - mShadowPadding.left; final int right = child.getRight() + mShadowPadding.right; final int top = child.getTop() - mShadowPadding.top; final int bottom = child.getBottom() + mShadowPadding.bottom; mShadowDrawable.setBounds(left + tx, top + ty, right + tx, bottom + ty); mShadowDrawable.draw(c); } }
ImageView imageView = (ImageView) findViewById(R.id.mimage); NinePatchDrawable mask = (NinePatchDrawable) getResources().getDrawable(R.drawable.balloon); Bitmap original = BitmapFactory.decodeResource(getResources(), R.drawable.pomba); Bitmap result = Bitmap.createBitmap(original.getWidth(), original.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(result); canvas.drawBitmap(original, 0, 0, null); mask.getPaint().setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); mask.setBounds(new Rect(0, 0, original.getWidth(), original.getHeight())); mask.draw(canvas); imageView.setImageBitmap(result);
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if ((getChildCount() > 0) && (getChildAt(0).getVisibility() == View.VISIBLE)) { if (mUseAmbientShadow) { if (mCurrentAmbientShadowDrawable1 != null) { mCurrentAmbientShadowDrawable1.draw(canvas); } if (mCurrentAmbientShadowDrawable2 != null) { mCurrentAmbientShadowDrawable2.draw(canvas); } } if (mUseSpotShadow && (mCurrentSpotShadowDrawable1 != null || mCurrentSpotShadowDrawable2 != null)) { final int savedCount = canvas.save(); canvas.translate(mSpotShadowTranslationX, mSpotShadowTranslationY); if (mCurrentSpotShadowDrawable1 != null) { mCurrentSpotShadowDrawable1.draw(canvas); } if (mCurrentSpotShadowDrawable2 != null) { mCurrentSpotShadowDrawable2.draw(canvas); } canvas.restoreToCount(savedCount); } } }
@Override public void onChildDraw(Canvas canvas, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) { if (viewHolder instanceof SwipeableViewHolder) { if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) { // Get RecyclerView item from the ViewHolder View itemView = viewHolder.itemView; //x offset // dX is negative value int xToDraw = (int) (itemView.getRight() + dX); //view, which is moved Rect outer = new Rect(xToDraw, itemView.getTop(), itemView.getRight(), itemView.getBottom()); drawable.setBounds(outer); drawable.draw(canvas); } super.onChildDraw(canvas, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive); } } });
private void drawWorkspaceBackground(Canvas canvas) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Rect rect = new Rect(0, 0, getWidth(), getHeight()); mWorkspaceBackgroundDrawable.setBounds(rect); mWorkspaceBackgroundDrawable.draw(canvas); } }
mMaskDrawable.getPaint().setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); mMaskDrawable.setBounds(0, 0, width, height); mMaskDrawable.draw(canvas); } else if (mMaskBmp != null) { if (mMaskPaint == null) {
canvas.saveLayer(null, null, Canvas.ALL_SAVE_FLAG); super.draw(canvas); mMask.draw(canvas); canvas.restore();
@Override public void draw(Canvas canvas) { super.draw(canvas); if (TextUtils.isEmpty(mStr)) { return; } float textHeight = mPaint.descent() - mPaint.ascent(); float textWidth = mPaint.measureText(mStr); float offsetX = textWidth / 2; float offsetY = textHeight / 2; float disY = getIntrinsicHeight() / 2 - offsetY; float disX = getIntrinsicWidth() / 2 - offsetX; canvas.drawText(mStr, this.getBounds().right - getIntrinsicWidth() + disX, this.getBounds().bottom - getIntrinsicHeight() + textHeight, mPaint); } }
if (key.codes[0] == 32) { mSpaceBackground.setBounds(key.x, key.y, key.x + key.width, key.y + key.height); mSpaceBackground.draw(canvas); if (key.codes[0] == -113) { mPressedBackground.setBounds(key.x, key.y, key.x + key.width, key.y + key.height); mPressedBackground.draw(canvas); if (key.codes[0] == -114) { mPressedBackground.setBounds(key.x, key.y, key.x + key.width, key.y + key.height); mPressedBackground.draw(canvas);