How to set a bitmap in the canvas of my user view?

I have a Bitmap object in my main class. I need to send this bitmap to my custom view class in order to set it as a background for further processing on the canvas.

For example, there is a method called setPicture that takes a bitmap as a parameter. So, how can I draw this bitmap on canvas?

See code below:

public class TouchView extends View { final int MIN_WIDTH = 75; final int MIN_HEIGHT = 75; final int DEFAULT_COLOR = Color.RED; int _color; final int STROKE_WIDTH = 2; private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); private float x, y; private boolean touching = false; public TouchView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub init(); } public TouchView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub init(); } public TouchView(Context context) { super(context); // TODO Auto-generated constructor stub init(); } private void init() { setMinimumWidth(MIN_WIDTH); setMinimumHeight(MIN_HEIGHT); _color = DEFAULT_COLOR; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // TODO Auto-generated method stub setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.getSize(heightMeasureSpec)); } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); if (touching) { paint.setStrokeWidth(STROKE_WIDTH); paint.setColor(_color); paint.setStyle(Paint.Style.FILL); canvas.drawCircle(x, y, 75f, paint); } } public void setPicture (Bitmap bitmap) { /////// This method must receive my bitmap to draw it on canvas!!!!!!!!!!!!!!! /////// } public void setColor(int color) { _color = color; } @Override public boolean onTouchEvent(MotionEvent motionEvent) { // TODO Auto-generated method stub switch (motionEvent.getAction()) { case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_DOWN: x = motionEvent.getX(); y = motionEvent.getY(); touching = true; break; default: touching = false; } invalidate(); return true; } 

}

How to send this bitmap to onDraw?

+6
source share
2 answers

Inside your onDraw() method

just

 canvas.drawBitmap(myBitmap, 0, 0, null); 

myBitmap is your bitmap variable.

0,0 refers to the coordinates that need to be drawn, for example, in the upper left corner.

There are other Apis available to draw in certain areas, etc.

More information can be found here in the api docs.

Alternatively: increase the ImageView instead and use the setImageBitmap(Bitmap src); method setImageBitmap(Bitmap src); to achieve this.

+6
source

Convert the bitmap to drawable and use the setBackgroundDrawable method of the View class.

 public void setPicture (Bitmap bitmap) { setBackgroundDrawable(new BitmapDrawable(bitmap)); } 
0
source

All Articles