Android屏幕上涂鸦画笔标记的实现
来源:互联网 发布:spss数据拟合曲线 编辑:程序博客网 时间:2024/05/23 15:05
呃,这个名字取得很诡异,大概意思就是Android程序,以当前界面作为背景,用手触控作为一个画笔来进行涂鸦,标记等,和PPT里的画笔差不多一个意思吧。
根据这个需求,做出了以下的思路:首先是要获取一个屏幕大小的bitmap作为底图,设置为透明色。然后将一个canvas放在bitmap上,触控点击事件作为paint,然后就可以实现了。
操作步骤如下:
1.获取当前屏幕的长宽,获取布局和button,写出点击事件.
Display display = getWindowManager().getDefaultDisplay();Point size = new Point();display.getSize(size);windowHeight = size.y;windowWidth = size.x;rl=(RelativeLayout)findViewById(R.id.relative) ;Btn=(Button)findViewById(R.id.button);Btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { draw(); }});2.设置画图相关的bitmap,canvas,paint等3.写点击事件。mBitmap = Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_4444);mBitmap.eraseColor(0);mBitmapPaint = new Paint(Paint.DITHER_FLAG);mCanvas=new Canvas(mBitmap);mPaint = new Paint();//设置绘制方式mPaint.setAntiAlias(true); //抗锯齿状mPaint.setDither(true);mPaint.setColor(0xff00ff00);mPaint.setStyle(Paint.Style.STROKE);mPaint.setStrokeJoin(Paint.Join.ROUND);mPaint.setStrokeCap(Paint.Cap.ROUND);mPaint.setStrokeWidth(5);public boolean onTouchEvent(MotionEvent event){ float x = event.getX(); float y = event.getY(); switch(event.getAction()){ case MotionEvent.ACTION_DOWN: touch_start(x, y); invalidate(); //刷新ui界面 break; case MotionEvent.ACTION_MOVE: touch_move(x, y); invalidate(); break; case MotionEvent.ACTION_UP: touch_up(x,y); invalidate(); break; } return true;}4.加载view,并再加上一个新的button,点击取消标记。private float mX,mY;private static final float TOUCH_TOLERANCE = 4;private void touch_start(float x,float y){ mX = x; mY = y;}private void touch_move(float x,float y){ float dx = Math.abs(x - mX); float dy = Math.abs(y - mY); if(dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE){ mCanvas.drawLine(mX,mY,x,y,mPaint); // mPath.quadTo(mX, mY, (x+mX)/2, (y+mY)/2); mX = x; mY= y; }}private void touch_up(float x,float y){ mCanvas.drawPoint(x,y,mPaint);}drawView=new DrawView(this,windowHeight,windowWidth);//通知view组件重绘drawView.invalidate();rl.addView(drawView);btnn=new Button(this);btnn.setText("new button");RelativeLayout.LayoutParams btnpara=new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);btnpara.addRule(RelativeLayout.CENTER_HORIZONTAL);btnpara.addRule(RelativeLayout.CENTER_VERTICAL);rl.addView(btnn,btnpara);btnn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { rl.removeView(drawView); rl.removeView(btnn); }});demo效果图如下(demo做的有点粗糙,比如可以用新的button放在原来的button位置上,这样更好点):附上实际运用的效果图吧:
0 0
- Android屏幕上涂鸦画笔标记的实现
- Android中在屏幕上涂鸦的例子
- Android中在屏幕上涂鸦的例子
- Android中在屏幕上涂鸦的例子
- Android中在屏幕上涂鸦的例子
- Android涂鸦的实现
- android图片涂鸦(标记)
- 【Android】自定义View、画家(画布)Canvas与画笔Paint的应用——画图、涂鸦板app的实现
- android 实现在照片上涂鸦
- android实现涂鸦,保存涂鸦后的图片,清屏
- android实现涂鸦,保存涂鸦后的图片,清屏
- Android 画笔演示功能的实现
- Android高级画笔效果实现的探索
- canvas画笔(涂鸦)
- 屏幕上做标记
- Android实现涂鸦功能
- android涂鸦实现
- iOS涂鸦-自由画笔可以用到的代码
- pdo类
- grep常用用法
- Android C端双向配置证书
- Java网络编程中的TCP,UDP通信方式详解
- Mesos 安装
- Android屏幕上涂鸦画笔标记的实现
- Performing a deep fetch of the `master` specs repo to improve future performance
- redis学习之redis3.0.x集群搭建
- 三分_2
- Android之富有动感的底部弹窗效果
- 《昨日歌》
- 进阶之路:MVP+Retrofit+RxJava组合使用
- 精彩---rtl8139网卡驱动程序分析
- Java 内存模型及GC原理