最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

android 画布图片,Android

互联网 admin 45浏览 0评论

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中,所以还要加一个权限:

运行结果:

发布评论

评论列表 (0)

  1. 暂无评论