美文网首页
画画板功能实现

画画板功能实现

作者: 萱生活 | 来源:发表于2016-12-10 02:28 被阅读0次

1 获取一张背景图片 BitmpFactory.decodeResource

2 创建一个副本

3 设置imageview的onTouch事件 判断事件的类型, 根据事件的 类型获取 开始和结束的位置 划线 重新设置给imagevie

4 获取imageview被操作的事件类型 event.getAction

5 鼠标按下 抬起 移动操作

6 将图片保存至图库

public classMainActivityextendsAppCompatActivityimplementsView.OnClickListener{

privateBitmapbitmap_copy;//原图 副本

private  floatstartX;

private  floatstartY;

privatePaintpaint;

@Override

protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

}

private voidinitView() {

findViewById(R.id.bt_save).setOnClickListener(this);

findViewById(R.id.bt_strong).setOnClickListener(this);

findViewById(R.id.bt_white).setOnClickListener(this);

finalImageView iv_imageview = (ImageView) findViewById(R.id.iv_imageview);

//将图片资源文件 转化成bitmap

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.mipmap.bg1);//原图

//将原图cope一份作为 作画的 白纸

bitmap_copy= bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(),bitmap.getConfig());

//创建画笔

paint=newPaint();

paint.setColor(Color.RED);

//创建画板 将白纸铺到 画板上

finalCanvas canvas =newCanvas(bitmap_copy);

//将 原图 画在画板上

canvas.drawBitmap(bitmap,newMatrix(),paint);

//将图片的副本 设置给imageview、

iv_imageview.setImageBitmap(bitmap_copy);

//设置imageview的ontouchevent时间

iv_imageview.setOnTouchListener(newView.OnTouchListener() {

@Override

public booleanonTouch(View v,MotionEvent event) {

switch(event.getAction()){

caseMotionEvent.ACTION_DOWN://按下

//获取按下时的x,y轴

startX= event.getX();

startY= event.getY();

break;

caseMotionEvent.ACTION_UP://抬起

break;

caseMotionEvent.ACTION_MOVE://移动

//获取移动后的x,y轴

floatstopX = event.getX();

floatstopY = event.getY();

for(inti =0;i<3;i++){

canvas.drawLine(startX+i,startY+i,stopX+i,stopY+i,paint);

}

//将结束的 位置 赋值 给开始的位置

startX= stopX;

startY= stopY;

iv_imageview.setImageBitmap(bitmap_copy);

break;

}

//返回false代表 上一个 事件未消耗不能执行事件  例如:返回false时  只能执行按下事件  返回true时则 可以执行下面的事件

return true;

}

});

}

@Override

public voidonClick(View v) {

switch(v.getId()){

caseR.id.bt_save://保存

saveImageToGallery(this,bitmap_copy);

break;

caseR.id.bt_strong://加粗

paint.setStrokeWidth(15);

break;

caseR.id.bt_white://白色

paint.setColor(Color.WHITE);

break;

}

}

public  voidsaveImageToGallery(Context context,Bitmap bmp) {

if(bmp ==null){

Toast.makeText(this,"保存出错了",Toast.LENGTH_LONG).show();

return;

}

//首先保存图片

File appDir =newFile(Environment.getExternalStorageDirectory(),"lishuai");

if(!appDir.exists()) {

appDir.mkdir();

}

String fileName = System.currentTimeMillis() +".jpg";

File file =newFile(appDir,fileName);

try{

FileOutputStream fos =newFileOutputStream(file);

bmp.compress(Bitmap.CompressFormat.JPEG,100,fos);

fos.flush();

fos.close();

}catch(FileNotFoundException e) {

Toast.makeText(this,"文件未发现",Toast.LENGTH_LONG).show();

e.printStackTrace();

}catch(IOException e) {

Toast.makeText(this,"保存出错了",Toast.LENGTH_LONG).show();

e.printStackTrace();

}catch(Exception e){

Toast.makeText(this,"保存出错了",Toast.LENGTH_LONG).show();

e.printStackTrace();

}

//最后通知图库更新

try{

MediaStore.Images.Media.insertImage(context.getContentResolver(),file.getAbsolutePath(),fileName, null);

}catch(FileNotFoundException e) {

e.printStackTrace();

}

Intent intent =newIntent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);

Uri uri = Uri.fromFile(file);

intent.setData(uri);

context.sendBroadcast(intent);

Toast.makeText(this,"保存成功了",Toast.LENGTH_LONG).show();

}

}

相关文章

  • ios开发实现画板功能

    ios开发实现画板功能 ios开发实现画板功能

  • unity实现画板功能

    如题、公司想做早教方面的小游戏、文档中有连线需求 找了几个帖子、直接复制粘贴、运行、不是自己想要的功能、于是尝试改...

  • 画画板功能实现

    1 获取一张背景图片 BitmpFactory.decodeResource 2 创建一个副本 3 设置image...

  • 画板功能的实现

    最近项目中用到了一个客户签字的功能,具体步骤就是客户签字确认,App把客户的签字生成一张PNG图片上传到服务器,服...

  • android实现画板功能

    这两天闲来无事做了一个简易的画板程序,和大家分享一下。效果图: 这是一个灰常简单的画板,不过麻雀虽小,五脏俱全: ...

  • iOS 画板--UIBezierPath和CAShapeLaye

    iOS 画板--UIBezierPath和CAShapeLayer实现 最近在做的项目中,用到画板的功能,现在项目...

  • android各种效果库

    可能是最优雅的切换布局的方法 动态切换布局控件android 实现画板功能 本例详细分析了一个画板功能的实现过程,...

  • 02Canvas 画板

    1.功能描述 实现画画功能,并可切换画笔颜色、细条粗细。可保存、清空画板。 2.思路 创建画板——》监听鼠标(触屏...

  • ios开发实现画板功能

    最近看了一些网上的画板demo,这些demo的实现方式基本上是使用CGContextRef或者UIBezierPa...

  • 前端实现画板功能

    ```javascript 画板 body,html{ width: 1...

网友评论

      本文标题:画画板功能实现

      本文链接:https://www.haomeiwen.com/subject/emvymttx.html