前几篇都涉及到了Canvas,Paint,Bitmap的结合使用,这里就不多说了~

现在我要写的是画画板这个项目~

项目效果:

1.画笔的颜色的随意更改

2.画笔的大小也可以随着拖动条的拖动而改变

3.橡皮擦清除画的效果

4.画板的清空

效果图:

布局文件很简单:

<LinearLayout xmlns: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"android:orientation="vertical"><LinearLayout android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><Viewandroid:layout_width="50dp"android:layout_height="50dp"android:background="#ff0000" android:id="@+id/red"/><Viewandroid:layout_width="50dp"android:layout_height="50dp"android:background="#00ff00" android:id="@+id/green"/><Viewandroid:layout_width="50dp"android:layout_height="50dp"android:background="#0000ff"android:id="@+id/blue"/><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="橡皮擦"android:onClick="click"/><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="清空"android:onClick="clear"/></LinearLayout><SeekBar android:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/seek"/><ImageView android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/iv"android:background="@drawable/bg"/></LinearLayout>

MainActivity:

public class MainActivity extends Activity implements OnClickListener{private View red,green,blue;private SeekBar seek;private ImageView iv;private Bitmap baseBitmap,copyBitmap;private Canvas canvas;private Paint paint;private int startX,startY;public void click(View view){paint.setColor(Color.BLACK);paint.setStrokeWidth(40);}public void clear(View view){canvas.drawColor(Color.BLACK);paint.setColor(Color.BLACK);/*baseBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.bg);iv.setImageBitmap(baseBitmap);*/}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);red=(View)findViewById(R.id.red);green=(View)findViewById(R.id.green);blue=(View)findViewById(R.id.blue);iv=(ImageView) findViewById(R.id.iv);seek=(SeekBar) findViewById(R.id.seek);red.setOnClickListener(this);blue.setOnClickListener(this);green.setOnClickListener(this);baseBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.bg);copyBitmap=Bitmap.createBitmap(baseBitmap.getWidth(), baseBitmap.getHeight(), baseBitmap.getConfig());canvas=new Canvas(copyBitmap);//画板的颜色canvas.drawColor(Color.BLACK);paint=new Paint();//画笔的颜色paint.setColor(Color.RED);iv.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubswitch (event.getAction()) {case MotionEvent.ACTION_DOWN://落下startX=(int)event.getX();startY=(int)event.getY();break;case MotionEvent.ACTION_MOVE://移动int stopX=(int)event.getX();int stopY=(int)event.getY();canvas.drawLine(startX, startY, stopX, stopY, paint);startX=(int)event.getX();startY=(int)event.getY();iv.setImageBitmap(copyBitmap);break;case MotionEvent.ACTION_UP://离开default:break;}return true;}});seek.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {// TODO Auto-generated method stubint progress=seekBar.getProgress();//使拖动条的取值为0f-2f,满足我们的取值要求float count=progress/50f;paint.setStrokeWidth(progress);}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {// TODO Auto-generated method stub}@Overridepublic void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {// TODO Auto-generated method stub}});}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.red:paint.setColor(Color.RED);break;case R.id.green:paint.setColor(Color.GREEN);break;case R.id.blue:paint.setColor(Color.BLUE);break;default:break;}}}

因为代码不是很麻烦,所以现在不上传源码

有想要源码的可以联系我,到时候传上来~

Android之Canvas画画板相关推荐

  1. Android可滑动画板,Android 利用 Canvas 画画板

    首先新建一个项目工程,建立文件,如下图所示 首先配置页面布局文件activity_main.xml,如下图所示: xmlns:tools="http://schemas.android.co ...

  2. Android 实现图片画画板

    本文主要讲述了Android 实现图片画画板 设计项目布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk ...

  3. android图片_画画板

    一.项目目录结构 二.activity_main.xml界面 三.activity_main.xml代码 <RelativeLayout xmlns:android="http://s ...

  4. 小程序canvas画画板签字版,touchmove时卡顿的问题(根本原因是因为vue语法中page.data导致视图层和逻辑层的频繁通讯导致)

    起因 因为要做一个画画板的功能,所以使用了canvas组件,一开始好多人说小程序canvas性能特别差,也没太注意,做出来之后确实有点卡,而且每一笔touchmove时间越长越卡,最终导致页面卡到无法 ...

  5. android 画字体并换行,android 使用canvas画字符时换行(用TextPaint实现,Paint不易实现)...

    使用canvas画字符时,常常遇到字符很长,不会换行的问题. 解决办法: 使用StaticLayout这个类. mCurrentPaint=newTextPaint(); mCurrentPaint. ...

  6. Android利用canvas画各种图形

    为什么80%的码农都做不了架构师?>>>    1.首先说一下canvas类: Class Overview The Canvas class holds the "dra ...

  7. Android心电数据分析,Android SurfaceView+Canvas画脉搏/心电数据图-Go语言中文社区

    实际演示效果: Canvas 画图基本步骤: 1.布局添加一个SurfaceView<?xml version="1.0" encoding="utf-8" ...

  8. Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)

    1.首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, ...

  9. Android利用canvas画各种图形(点、直线、弧、圆、扁圆、文字、矩形、多边形、曲线、圆角矩形)

    1.首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, ...

最新文章

  1. MinkowskiEngine基准测试
  2. 量子纠缠为什么不能用于瞬时通讯?
  3. 【赠书】21世纪科技竞争的核心是超级智能的控制权
  4. Node.js Express 框架 GET方法
  5. 014 怪物过滤的设计和实现
  6. Fastai-竞赛实战
  7. 互联网时代的应用设计,互联网营销
  8. java 枚举可以循环吗_(转载)java 枚举 循环遍历以及一些简单常见的使用
  9. sublime安装与使用
  10. 我的内核学习笔记2:platform设备模型
  11. vs2013创建c++控制台应用程序
  12. go中的make和new的区别
  13. android在标准linux基础上对休眠唤醒的实现,Android在标准linux基础上对休眠唤醒的实现(三)...
  14. 用AB对Webservice做压力测试
  15. 完全免费的公众号文章批量下载器
  16. python快乐数,快乐数
  17. 中文转自定义英文存储
  18. 从Windows到Bios的桥梁:Windbg跟踪Win7开启ACPI
  19. css两选择器间隔符
  20. 端对端加密通讯协议Signal protocol 学习(转)

热门文章

  1. 计算机设计大赛国奖作品_6. 测试报告
  2. 【Android的从零单排开发日记】之入门篇(十六)——Android的动画效果
  3. 设计模式:依赖倒转原则(记录一)
  4. AR实战-基于Krpano的多场景融合及热点自定义
  5. JVM 菜鸟进阶高手之路六(JVM每隔一小时执行一次Full GC)
  6. 十进制、二进制补码、16进制补码的转换
  7. 云服务器怎么搬砖,逆水寒,预约五个新区 , 新区如何搬砖,来看看你该如何搞...
  8. python pop3_python通过pop3方式登录邮箱(qq,新浪,网易)
  9. fiddler抓包过程以及fiddler抓包手机添加代理后连不上网解决办法
  10. 连续性、间断点以及介值定理、最值定理和零点定理