Android触摸事件进行画图简单实现
来源:互联网 发布:网络打鱼软件 编辑:程序博客网 时间:2024/06/05 11:51
首先先说两个类: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(); } }}
阅读全文
0 0
- Android触摸事件进行画图简单实现
- Android-实现简单画图画板
- android实现简单画图功能
- Android触摸事件传递的简单理解
- HTML5-简单触摸事件
- 采用事件相应实现的简单画图程序
- 《初学cocos2d-x》- 简单的触摸事件实现(5)
- Android:处理触摸事件
- android 触摸事件
- Android Touch 触摸事件
- android触摸事件传递
- Android 触摸事件大全
- android触摸语音事件
- android的触摸事件
- Android 手势&触摸事件
- Android 手势&触摸事件
- Android触摸事件传递
- Android 手势&触摸事件
- ACM暑假集训日记 17.8.4
- 8月4日集训
- sudoku-------九宫格
- 【WEB】百度前端学院笔记(二)
- php向数据库中导入.sql文件
- Android触摸事件进行画图简单实现
- EnumChildWindows枚举所有子窗口
- 关于2017年全国大学生电子设计竞赛组委会给出的元器件清单的推测(仪器仪表类)
- 线段树练习4
- B
- (2)sql 学习 : CONCAT ,SQL JOIN,union 与 union all,SELECT INTO
- Linux中的通配符
- THINKPHP安装XDEBUG
- 51nod1107(斜率小于0的连线个数)