In some of the application we draw image, text and line on Canvas object in Android. Canvas is the basic component in android for drawing objects on it.
#1 Create Canvas and display it in ImageView.
Now we create a Canvas and display its content in ImageView.
public class MyCanvas extends View {
public MyCanvas(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Paint pBackground = new Paint();
pBackground.setColor(Color.WHITE);
canvas.drawRect(0, 0, 512, 512, pBackground);
Paint pText = new Paint();
pText.setColor(Color.BLACK);
pText.setTextSize(20);
canvas.drawText("Sample Text", 100, 100, pText);
}
}
Now set this canvas to your ImageView using following code.
View v = new MyCanvas(getApplicationContext()); Bitmap bitmap = Bitmap.createBitmap(500/*width*/, 500/*height*/, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); v.draw(canvas); ImageView iv = (ImageView) findViewById(R.id.iv); iv.setImageBitmap(bitmap);
You can see “Sample Text” in ImageView.
#2 Save canvas bitmap to sdcard.
We will save this bitmap to sdcard so all your drawing on canvas will be stored as image.
Bitmap b = null;
//create directory if not exist
File dir = new File("/sdcard/tempfolder/");
if (!dir.exists()) {
dir.mkdirs();
}
File output = new File(dir, "tempfile.jpg");
OutputStream os = null;
try {
os = new FileOutputStream(output);
b.compress(Bitmap.CompressFormat.JPEG, 100, os);
os.flush();
os.close();
//this code will scan the image so that it will appear in your gallery when you open next time
MediaScannerConnection.scanFile(this, new String[] { output.toString() }, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.d("appname", "image is saved in gallery and gallery is refreshed.");
}
}
);
} catch (Exception e) {
}
If you find any problem or doubt, please mention in comments. Do not forget to share!
Download Source Code: https://github.com/dakshbhatt21/a-computer-engineer