前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 多媒体开发学习之制作一个简单的画板

Android 多媒体开发学习之制作一个简单的画板

作者头像
DragonKingZhu
发布2022-05-08 16:32:23
4490
发布2022-05-08 16:32:23
举报
文章被收录于专栏:Linux内核深入分析

一个简单的画板,可以绘制,可以选择颜色,可以保存。 当然了这种工具一般常用的通讯软件都是会有的,比如QQ, 飞秋等

其中我们必须监听手指的触摸事件,手指的触摸事件就分为3种: 按下,抬起,移动。 通常我们只需要关系按下的时候,然后就是整个手指滑动的过程。然后将手指滑动的过程绘制为不同的直线。当然也可以设置绘制的颜色,绘制直线的宽度等。

代码语言:javascript
复制
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);
    }
}

以上就是一个简单的画板,可以绘制简单的图片,可以实现保存。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档