天天看點

Android 儲存畫圖

原文:http://blog.csdn.net/lessu/archive/2010/04/28/5539748.aspx

很多人在做畫圖軟體的時候找不到儲存畫好圖檔的方法。。

其實可以在bitmap上面畫,然後儲存bitmap就可以了,而不需要找螢幕截圖的函數了。。。

package com.android.drawtest;

import java.io.file;

import java.io.filenotfoundexception;

import java.io.fileoutputstream;

import java.io.ioexception;

import android.app.activity;

import android.content.res.resources;

import android.graphics.bitmap;

import android.graphics.bitmapfactory;

import android.graphics.canvas;

import android.graphics.color;

import android.graphics.paint;

import android.graphics.bitmap.config;

import android.os.bundle;

import android.view.motionevent;

import android.view.surfaceholder;

import android.view.window;

import android.view.windowmanager;

public class drawtest extends activity {

private drawview dv;

private bitmap mybitmap;

canvas canvas; //用于在bitmap上面畫圖

private file file;

private fileoutputstream out;

@override

public void oncreate(bundle savedinstancestate) {

super.oncreate(savedinstancestate);

requestwindowfeature(window.feature_no_title);

getwindow().setflags(windowmanager.layoutparams.flag_fullscreen, windowmanager.layoutparams.flag_fullscreen);

setcontentview(r.layout.main);

dv=(drawview)findviewbyid(r.id.drawview);

mybitmap=bitmap.createbitmap(400, 400, config.argb_8888);

canvas=new canvas(mybitmap);

canvas.drawcolor(color.white);

file =new file("//sdcard//","test.jpg");//輸出路徑

try {

out=new fileoutputstream(file);//設定輸出流

} catch (filenotfoundexception e) {

e.printstacktrace();

}

public boolean ontouchevent(motionevent me){

paint paint;

paint=new paint();

paint.setcolor(color.red);

switch(me.getaction())

{

case motionevent.action_down:

//畫點

canvas.drawcircle(me.getx(), me.gety(), 10, paint);

dv.draw(mybitmap);

break;

return false;

public void ondestroy(){

//退出時儲存

mybitmap.compress(bitmap.compressformat.jpeg, 100, out);

out.flush();

out.close();

} catch (ioexception e) {

super.ondestroy();

surfaceview

import android.content.context;

import android.util.attributeset;

import android.view.surfaceview;

public class drawview extends surfaceview implements surfaceholder.callback{

private surfaceholder msurfaceholder;

private context mcontext;

public drawview(context context, attributeset attrs) {

super(context, attrs);

// todo auto-generated constructor stub

msurfaceholder=getholder();

mcontext=context;

public void surfacechanged(surfaceholder holder, int format, int width,

int height) {

// todo auto-generated method stub

public void surfacecreated(surfaceholder holder) {

public void surfacedestroyed(surfaceholder holder) {

public void draw(bitmap bitmap){

canvas c=msurfaceholder.lockcanvas();

c.drawbitmap(bitmap, 0,0, null);

msurfaceholder.unlockcanvasandpost(c);

繼續閱讀