Android之Canvas画画板
前几篇都涉及到了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画画板相关推荐
- Android可滑动画板,Android 利用 Canvas 画画板
首先新建一个项目工程,建立文件,如下图所示 首先配置页面布局文件activity_main.xml,如下图所示: xmlns:tools="http://schemas.android.co ...
- Android 实现图片画画板
本文主要讲述了Android 实现图片画画板 设计项目布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk ...
- android图片_画画板
一.项目目录结构 二.activity_main.xml界面 三.activity_main.xml代码 <RelativeLayout xmlns:android="http://s ...
- 小程序canvas画画板签字版,touchmove时卡顿的问题(根本原因是因为vue语法中page.data导致视图层和逻辑层的频繁通讯导致)
起因 因为要做一个画画板的功能,所以使用了canvas组件,一开始好多人说小程序canvas性能特别差,也没太注意,做出来之后确实有点卡,而且每一笔touchmove时间越长越卡,最终导致页面卡到无法 ...
- android 画字体并换行,android 使用canvas画字符时换行(用TextPaint实现,Paint不易实现)...
使用canvas画字符时,常常遇到字符很长,不会换行的问题. 解决办法: 使用StaticLayout这个类. mCurrentPaint=newTextPaint(); mCurrentPaint. ...
- Android利用canvas画各种图形
为什么80%的码农都做不了架构师?>>> 1.首先说一下canvas类: Class Overview The Canvas class holds the "dra ...
- Android心电数据分析,Android SurfaceView+Canvas画脉搏/心电数据图-Go语言中文社区
实际演示效果: Canvas 画图基本步骤: 1.布局添加一个SurfaceView<?xml version="1.0" encoding="utf-8" ...
- Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)
1.首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, ...
- Android利用canvas画各种图形(点、直线、弧、圆、扁圆、文字、矩形、多边形、曲线、圆角矩形)
1.首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, ...
最新文章
- MinkowskiEngine基准测试
- 量子纠缠为什么不能用于瞬时通讯?
- 【赠书】21世纪科技竞争的核心是超级智能的控制权
- Node.js Express 框架 GET方法
- 014 怪物过滤的设计和实现
- Fastai-竞赛实战
- 互联网时代的应用设计,互联网营销
- java 枚举可以循环吗_(转载)java 枚举 循环遍历以及一些简单常见的使用
- sublime安装与使用
- 我的内核学习笔记2:platform设备模型
- vs2013创建c++控制台应用程序
- go中的make和new的区别
- android在标准linux基础上对休眠唤醒的实现,Android在标准linux基础上对休眠唤醒的实现(三)...
- 用AB对Webservice做压力测试
- 完全免费的公众号文章批量下载器
- python快乐数,快乐数
- 中文转自定义英文存储
- 从Windows到Bios的桥梁:Windbg跟踪Win7开启ACPI
- css两选择器间隔符
- 端对端加密通讯协议Signal protocol 学习(转)
热门文章
- 计算机设计大赛国奖作品_6. 测试报告
- 【Android的从零单排开发日记】之入门篇(十六)——Android的动画效果
- 设计模式:依赖倒转原则(记录一)
- AR实战-基于Krpano的多场景融合及热点自定义
- JVM 菜鸟进阶高手之路六(JVM每隔一小时执行一次Full GC)
- 十进制、二进制补码、16进制补码的转换
- 云服务器怎么搬砖,逆水寒,预约五个新区 , 新区如何搬砖,来看看你该如何搞...
- python pop3_python通过pop3方式登录邮箱(qq,新浪,网易)
- fiddler抓包过程以及fiddler抓包手机添加代理后连不上网解决办法
- 连续性、间断点以及介值定理、最值定理和零点定理