标签:android简单的画板
一个简单的画板,可以绘制,可以选择颜色,可以保存。 当然了这种工具一般常用的通讯软件都是会有的,比如QQ, 飞秋等
其中我们必须监听手指的触摸事件,手指的触摸事件就分为3种: 按下,抬起,移动。 通常我们只需要关系按下的时候,然后就是整个手指滑动的过程。然后将手指滑动的过程绘制为不同的直线。当然也可以设置绘制的颜色,绘制直线的宽度等。
public class MainActivity extends Activity { private int TouchX; private int TouchY; private Paint paint; private Canvas canvas; Bitmap bitmapCopy; ImageView lView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //1: 先创建一个画板的背景图片,这时候这图片需要修改,就需要创建该图片的副本 Bitmap bitmapSrc = BitmapFactory.decodeResource(getResources(), R.drawable.bg); bitmapCopy = Bitmap.createBitmap(bitmapSrc.getWidth(), bitmapSrc.getHeight(), bitmapSrc.getConfig()); paint = new Paint(); canvas = new Canvas(bitmapCopy); canvas.drawBitmap(bitmapSrc, new Matrix(), paint); lView = (ImageView) findViewById(R.id.lv); lView.setImageBitmap(bitmapCopy); //2: 就需要监听手指的触摸事件 lView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { //手指触摸分三种: 按下, 抬起,移动 int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: //首先是按下,当按下时,需要记录第一次按下的位置 TouchX = (int) event.getX(); TouchY = (int) event.getY(); break; case MotionEvent.ACTION_MOVE: //只要每次移动,都会产生移动事件的,得到当前的坐标 int x = (int)event.getX(); int y = (int)event.getY(); //画线 canvas.drawLine(TouchX, TouchY, x, y, paint); //更改下次绘制的起始坐标 TouchX = x; TouchY = y; lView.setImageBitmap(bitmapCopy); break; case MotionEvent.ACTION_UP: break; } //true:告诉系统,这个触摸事件由我来处理 //false:告诉系统,这个触摸事件我不处理,这时系统会把触摸事件传递给imageview的父节点 return true; } }); } //设置画笔的颜色为红色 public void red(View v) { paint.setColor(Color.RED); } //设置画笔的颜色为绿色 public void green(View v) { paint.setColor(Color.GREEN); } //设置刷子的宽度 public void brush(View v) { paint.setStrokeWidth(7); } //保存 public void save(View v) { File file = new File("sdcard/tupian.png"); FileOutputStream fStream = null; try { fStream = new FileOutputStream(file); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } //保存为png格式,100代表最高质量 bitmapCopy.compress(CompressFormat.PNG, 100, fStream); } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:android简单的画板
原文地址:http://blog.csdn.net/longwang155069/article/details/47155807