Android触摸事件进行画图简单实现
首先先说两个类:canva与paint;这两个类在·Android中绘图用途非常广;后续还会继续更新关于这两个类的一些用法;
下面先进行一个简单的实现;(这里需要实现的是下面4个按钮,最后把自己画的图存入SD卡)
首先是布局:比较简单(不写布局,直接上图)
现在直接开始写代码:(注释比较详细,利于新手学习)
@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //先加载原图 bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bg); //创建白纸,宽 高,图片的参数 bitmap1 = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig()); //创建画板 canvas = new Canvas(bitmap1); //创建画笔 paint = new Paint(); //在纸上作画 canvas.drawBitmap(bitmap,new Matrix(),paint); iv= (ImageView) findViewById(R.id.iv); ///手势识别器和画笔结合的知识/ //给控件设置手势适配器,可以得到用户在这个控件上所做的手势; iv.setOnTouchListener(new View.OnTouchListener() {//当用户的手在这个控件时,自动回调 @Override public boolean onTouch(View view, MotionEvent motionEvent) {switch (motionEvent.getAction()){//获取用户的行动 case MotionEvent.ACTION_DOWN://按下时回调 Log.d("PY","按下"); //获取用户手指按下时的坐标 startx = motionEvent.getX(); starty = motionEvent.getY(); Toast.makeText(MainActivity.this,startx+""+starty,Toast.LENGTH_SHORT).show(); break; case MotionEvent.ACTION_MOVE://手指滑动时调用 Log.d("PY","正在滑动"); newx = motionEvent.getX(); newy = motionEvent.getY(); //在背景图画线 canvas.drawLine(startx,starty,newx,newy,paint); startx=newx; starty=newy; iv.setImageBitmap(bitmap1); break; case MotionEvent.ACTION_UP://松开(抬起)的调用 Log.d("PY","松开"); break; }//事件分发机制 //true:iv处理该触摸事件 //false:iv不处理触摸事件,事件传递给上一级 return true; }}); }//点击改变颜色(红色) public void red(View view){paint.setColor(Color.RED); }//点击改变颜色(绿色) public void green(View view){paint.setColor(Color.GREEN); }//点击刷子(及变粗) public void brush(View view){paint.setStrokeWidth(10); }//点击保存并存储到SD卡中 public void save(View view){canvas.save(Canvas.ALL_SAVE_FLAG); String sdpath= Environment.getExternalStorageDirectory()+"/temp.png"; File file=new File(sdpath); try {file.createNewFile(); FileOutputStream fos=new FileOutputStream(file); if (bitmap1!=null){bitmap1.compress(Bitmap.CompressFormat.PNG,100,fos); }fos.flush(); fos.close(); } catch (IOException e) {e.printStackTrace(); }} }
Android触摸事件进行画图简单实现相关推荐
- android触摸事件分发,Android 事件分发机制
Android 事件分发机制一直让人头痛,之前也是面向 GitHub 编程得过且过.今天下定决心了解一下,以便后面自己定制 View 效果.Android 触摸事件有三个基本类型:ACTION_DOW ...
- 为了讲清楚Android触摸事件,我“拆了部手机”
Android 是一个有用户界面(GUI)的操作系统,在它诞生之初,就是为带有触摸屏的手持设备准备的.作为提供给用户最重要的交互方式之一,了解触摸系统是怎么工作的,对于实际的项目开发有着非常大的帮助. ...
- Android触摸事件传递分析与实践
设计UI时,亲爱的交互设计师们总会有一些天马行空的想法,大多数情况下原生的控件已不能支持这些"看似简单"的交互逻辑,需要继承ListView.ViewPager.ScrollVie ...
- Android触摸事件分发
Android的触摸分发机制和如何实现拦截 Android的触摸分发机制和如何实现拦截 前言 触摸事件的分发 情景分析 总结 前言 在自定义ViewGroup中,有时候需要实现触摸事件拦截,比如Lis ...
- Android触摸事件实现笔触画布
任何View都有触摸事件,经常在自定义控件时重写setOnTouchListener 本篇通过手绘图片来讲述这个知识点 本篇分为三个等级:一览图: 直线 曲线 笔触 LEVEL1.png LEVEL2 ...
- 【知识梳理1】Android触摸事件机制
前言 随着科学技术的发展,智能手机早已成为我们当代人身边不可缺少的"伙伴"之中的一个,堪比对象女友.每天我们对着手机反复的做着点击.滑动操作,而手机则随着我们的操作给我们展示她的精 ...
- android方向触摸事件,Android触摸事件传递机制,这一篇就够了
整个触摸事件牵涉到的是,Activity,View,ViewGroup三者的传递机制. 这个触摸事件就是从外层往内层一层层的传递. 整个传递机制,分为3个步骤:分发,拦截,和消费. 1. 触摸事件的类 ...
- android 触摸事件 取消,如何禁用/重新启用Android中的触摸事件?
快速,可能很简单,问题.我有一个视图,其背景是动画,在那段时间,我想禁止用户与视图交互.我的视图是一个FrameLayout,我用onTouchEvent()捕获触摸事件.我试过的解决方案:如何禁用/ ...
- 【源码分析】Android触摸事件的分发拦截
Android中View的分发拦截机制是一块重要的内容,网上也有很多大神进行过相关的分析. 在这篇文章里我将以自己的理解尽量全面地分析整个流程,有些分析结果是很多文章没有提及的. 整个分析过程将通过d ...
最新文章
- php利用openssl实现RSA非对称加密签名
- 关于PChar(@string)的疑惑
- MySql允许被远程访问
- 堆、栈及静态数据区详解 转
- 饥荒进地洞服务器无响应,饥荒联机洞穴设置及常见问题的解决方法
- python list sort by,python中List的sort方法指南
- 毕业设计一周一记02
- Linux: Shared MIME
- mysql 中文字符 函数_MySQL基础之字符函数-Go语言中文社区
- 丢弃法(基于MXNet)
- nupkg 本地安装_使用Nuget安装离线包nupkg
- PHP strtotime 将时间转换为时间戳
- 谷歌安装ntko跨浏览器插件_Chrome浏览器不能安装WebEx扩展插件的解决方案
- 支持向量机(SVM)原理小结(3)支持向量回归SVR
- SQLMAP参数中文详解(看过来)!
- 中文代码示例视频演示Python入门教程第五章 数据结构
- 高德定位,只能定位一次,导航图标就消失
- 酷炫cmd命令行工具——windows terminal的详细配置
- 【找不到与请求 URI匹配的 HTTP 资源】(转)
- Three.js - 图形界面工具(lil-gui)(四)