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; }
private void updateShadowBounds() { NinePatchDrawable shadow = mShadow; if (shadow == null) { return; } int width = getWidth(); int height = getHeight(); Rect paddings = mShadowPaddings; if (width != 0 && height != 0) { shadow.setBounds(-paddings.left, -paddings.top, width + paddings.right, height + paddings.bottom); } }
@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); } }
private void updateNinePatchBounds(NinePatchDrawable ninePatch, int childLeft, int childTop, int childRight, int childBottom) { if (ninePatch == null) { return; } final Rect t = mTempRect; ninePatch.getPadding(t); ninePatch.setBounds( childLeft - t.left, childTop - t.top, childRight + t.right, childBottom + t.bottom); }
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 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.setBounds(0, 0, width, height); mMaskDrawable.draw(canvas); } else if (mMaskBmp != null) {
protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); mMask.setBounds(0, 0, w, h);
mSpaceBackground.setBounds(key.x, key.y, key.x + key.width, key.y + key.height); mSpaceBackground.draw(canvas); if (Variables.isCtrl()) { if (key.codes[0] == -113) { mPressedBackground.setBounds(key.x, key.y, key.x + key.width, key.y + key.height); mPressedBackground.draw(canvas); mPressedBackground.setBounds(key.x, key.y, key.x + key.width, key.y + key.height); mPressedBackground.draw(canvas);
Config.ARGB_8888); Canvas canvas1 = new Canvas(b); drawable.setBounds(0, 0, canvas1.getWidth(), canvas1.getHeight()); drawable.draw(canvas1);