android 画布图片,Android
布局文件:
xmlns:tools=""
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
android:id="@+id/iv"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
android:id="@+id/btn"
android:layout_weight="6"
android:onClick="save"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="保存图片"
/>
MainActivity:public class MainActivity extends Activity {
private Button button;
private ImageView p_w_picpathView;
private Bitmap baseBitmap;
private Canvas canvas;
private Paint paint;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
p_w_picpathView=(ImageView) findViewById(R.id.iv);
paint=new Paint();
paint.setColor(Color.BLUE);
//创建一个可修改的Bitmap
baseBitmap=Bitmap.createBitmap(480, 320, Bitmap.Config.ARGB_8888);
canvas=new Canvas(baseBitmap);
canvas.drawColor(Color.WHITE);
p_w_picpathView.setOnTouchListener(new OnTouchListener() {
//定义手指坐标
int startx;
int starty;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startx=(int) event.getX();
starty=(int) event.getY();
break;
case MotionEvent.ACTION_MOVE:
int newx=(int) event.getX();
int newy=(int) event.getY();
canvas.drawLine(startx, starty, newx, newy, paint);
//跟新画笔的开始位置
startx=(int) event.getX();
starty=(int) event.getY();
p_w_picpathView.setImageBitmap(baseBitmap);
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
});
}
public void save(View v) {
try {
File file=new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+".jpg");
FileOutputStream fos=new FileOutputStream(file);
baseBitmappress(CompressFormat.JPEG, 100, fos);//第一个参数为图片格式
fos.close();
Toast.makeText(this, "保存图片成功", 2000).show();
//模拟消息:SD卡被重新挂载了
Intent intent=new Intent();
intent.setAction(intent.ACTION_MEDIA_MOUNTED);
intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));
sendBroadcast(intent);
} catch (FileNotFoundException e) {
Toast.makeText(this, "保存图片失败", 2000).show();
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
因为要存入SD中,所以还要加一个权限:
运行结果:
android 画布图片,Android
布局文件:
xmlns:tools=""
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
android:id="@+id/iv"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
android:id="@+id/btn"
android:layout_weight="6"
android:onClick="save"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="保存图片"
/>
MainActivity:public class MainActivity extends Activity {
private Button button;
private ImageView p_w_picpathView;
private Bitmap baseBitmap;
private Canvas canvas;
private Paint paint;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
p_w_picpathView=(ImageView) findViewById(R.id.iv);
paint=new Paint();
paint.setColor(Color.BLUE);
//创建一个可修改的Bitmap
baseBitmap=Bitmap.createBitmap(480, 320, Bitmap.Config.ARGB_8888);
canvas=new Canvas(baseBitmap);
canvas.drawColor(Color.WHITE);
p_w_picpathView.setOnTouchListener(new OnTouchListener() {
//定义手指坐标
int startx;
int starty;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startx=(int) event.getX();
starty=(int) event.getY();
break;
case MotionEvent.ACTION_MOVE:
int newx=(int) event.getX();
int newy=(int) event.getY();
canvas.drawLine(startx, starty, newx, newy, paint);
//跟新画笔的开始位置
startx=(int) event.getX();
starty=(int) event.getY();
p_w_picpathView.setImageBitmap(baseBitmap);
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
});
}
public void save(View v) {
try {
File file=new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+".jpg");
FileOutputStream fos=new FileOutputStream(file);
baseBitmappress(CompressFormat.JPEG, 100, fos);//第一个参数为图片格式
fos.close();
Toast.makeText(this, "保存图片成功", 2000).show();
//模拟消息:SD卡被重新挂载了
Intent intent=new Intent();
intent.setAction(intent.ACTION_MEDIA_MOUNTED);
intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));
sendBroadcast(intent);
} catch (FileNotFoundException e) {
Toast.makeText(this, "保存图片失败", 2000).show();
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
因为要存入SD中,所以还要加一个权限:
运行结果: