最新消息

Android实现简单画图画板

乐鱼网教程 2021-04-03 12:18

本文实例为大家分享了Android实现简单画图画板的具体代码,供大家参考,具体内容如下

效果如图:

Android实现简单画图画板

布局文件:

<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity">

<ImageView

android:id="@+id/iv"

android:layout_width="600px"

android:layout_height="900px"

android:layout_alignParentLeft="true"

android:layout_alignParentRight="true"

android:layout_alignParentStart="true"/>

<LinearLayout

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_gravity="center_horizontal"

android:orientation="horizontal">

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:onClick="red"

android:text="红色"/>

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:onClick="green"

android:text="绿色"

/>

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:onClick="brush"

android:text="刷子"

/>

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:onClick="eraser"

android:text="橡皮擦"

/>

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:onClick="save"

android:text="保存"/>

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:onClick="cancel"

android:text="取消"/>

</LinearLayout>

</RelativeLayout>

MainActivity.java


packagecom.example.yulongji.android10;

importandroid.app.Activity;

importandroid.content.Intent;

importandroid.graphics.Bitmap;

importandroid.graphics.BitmapFactory;

importandroid.graphics.Canvas;

importandroid.graphics.Color;

importandroid.graphics.Matrix;

importandroid.graphics.Paint;

importandroid.net.Uri;

importandroid.os.Bundle;

importandroid.os.Environment;

importandroid.view.MotionEvent;

importandroid.view.View;

importandroid.widget.ImageView;

importjava.io.File;

importjava.io.FileNotFoundException;

importjava.io.FileOutputStream;

publicclassMainActivityextendsActivity{

privateImageViewiv;

//原图

privateBitmapbitsrc;

//拷贝图

privateBitmapbitcopy;

privateCanvascanvas;

privatePaintpaint;

privateintstartX;

privateintstartY;

@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

iv=(ImageView)findViewById(R.id.iv);

setBitmap();

//设置触摸侦听

iv.setOnTouchListener(newView.OnTouchListener(){

//触摸屏幕时,触摸事件产生时,此方法调用

@Override

publicbooleanonTouch(Viewv,MotionEventevent){

intaction=event.getAction();

switch(action){

//用户手指摸到屏幕

caseMotionEvent.ACTION_DOWN:

startX=(int)event.getX();

startY=(int)event.getY();

break;

//用户手指正在滑动

caseMotionEvent.ACTION_MOVE:

intx=(int)event.getX();

inty=(int)event.getY();

canvas.drawLine(startX,startY,x,y,paint);

//每次绘制完毕之后,本次绘制的结束坐标变成下一次绘制的初始坐标

startX=x;

startY=y;

iv.setImageBitmap(bitcopy);

break;

//用户手指离开屏幕

caseMotionEvent.ACTION_UP:

break;

}

//true:告诉系统,这个触摸事件由我来处理

//false:告诉系统,这个触摸事件我不处理,这时系统会把触摸事件传递给imageview的父节点

returntrue;

}

});

}

publicvoidsetBitmap(){

//加载画画板的背景图

bitsrc=BitmapFactory.decodeResource(getResources(),R.drawable.bg);

//创建图片副本

//1.在内存中创建一个与原图一模一样大小的bitmap对象,创建与原图大小一致的白纸

bitcopy=Bitmap.createBitmap(bitsrc.getWidth(),bitsrc.getHeight(),

bitsrc.getConfig());

//2.创建画笔对象

paint=newPaint();

//3.创建画板对象,把白纸铺在画板上

canvas=newCanvas(bitcopy);

//4.开始作画,把原图的内容绘制在白纸上

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

//5.将绘制的图放入imageview中

iv.setImageBitmap(bitcopy);

}

publicvoidred(Viewview){

paint.setColor(Color.RED);

}

publicvoidgreen(Viewview){

paint.setColor(Color.GREEN);

}

publicvoidbrush(Viewview){

paint.setStrokeWidth(8);

}

publicvoidcancel(Viewview){

setBitmap();

}

publicvoideraser(Viewview){

paint.setColor(Color.rgb(243,243,243));

paint.setStrokeWidth(30);

}

publicvoidsave(Viewview){

Stringpath=Environment.getExternalStorageDirectory()+"/"+"2.png";

Filefile=newFile(path);

try{

FileOutputStreamfos=newFileOutputStream(file);

bitcopy.compress(Bitmap.CompressFormat.PNG,100,fos);

}catch(FileNotFoundExceptione){

e.printStackTrace();

}

//发送sd卡就绪广播

Intentintent=newIntent();

intent.setAction(Intent.ACTION_MEDIA_MOUNTED);

intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));

sendBroadcast(intent);

}

}

您可能感兴趣的文章:Android自定义view之画图板实现方法Android画图之抗锯齿paint和Canvas两种方式实例Androidcanvas画图操作之切割画布实现方法(clipRect)Android简单实现画图功能Android编程画图之抗锯齿解决方法Android入门之画图详解Android画图并保存图片的具体实现代码android实现简单的画画板实例代码Android实现画板、写字板功能(附源码下载)Android自定义SurfaceView实现画板功能

退出