Android源码下载:屏幕画笔Demo
创始人
2025-01-10 17:40:28
0次

功能分类:工具

支持平台:Android

运行环境:Eclipse

开发语言:Java

开发工具:Eclipse

源码大小:30.93KB

源码下载地址:http://down.51cto.com/data/1984802

源码简介

该Demo主要以当前桌面为背景,完成画笔的相关功能。

1、画笔的添加、移除等功能;

2、针对不同的生命周期,响应不同的桌面背景。

源码运行截图

桌面背景,进行涂鸦

返回键撤销画笔路径

home,切换背景后,继续涂鸦

画笔涂鸦

源码片段

  1. public ScreenPaintView(Context context, int w, int h) { 
  2.         super(context); 
  3.         screenWidth = w; 
  4.         screenHeight = h; 
  5.   
  6.         mBitmap = Bitmap.createBitmap(screenWidth, screenHeight, 
  7.                 Bitmap.Config.ARGB_8888); 
  8.         // 保存一次一次绘制出来的图形 
  9.         mCanvas = new Canvas(mBitmap); 
  10.   
  11.         mBitmapPaint = new Paint(Paint.DITHER_FLAG); 
  12.         mPaint = new Paint(); 
  13.         mPaint.setAntiAlias(true); 
  14.         mPaint.setStyle(Paint.Style.STROKE); 
  15.         mPaint.setStrokeJoin(Paint.Join.ROUND);// 设置外边缘 
  16.         mPaint.setStrokeCap(Paint.Cap.SQUARE);// 形状 
  17.         mPaint.setStrokeWidth(8);// 画笔宽度 
  18.         mPaint.setColor(0xFF2145FF);// 画笔颜色 
  19.         savePath = new ArrayList(); 
  20.     } 
  21.   
  22.     @Override 
  23.     public void onDraw(Canvas canvas) { 
  24.         canvas.drawColor(0x0FFFFFFF); 
  25.         // 将前面已经画过得显示出来 
  26.         canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint); 
  27.         if (mPath != null) { 
  28.             // 实时的显示 
  29.             canvas.drawPath(mPath, mPaint); 
  30.         } 
  31.     } 
  32.   
  33.     private void touch_start(float x, float y) { 
  34.         mPath.moveTo(x, y); 
  35.         mX = x; 
  36.         mY = y; 
  37.     } 
  38.   
  39.     private void touch_move(float x, float y) { 
  40.         float dx = Math.abs(x - mX); 
  41.         float dy = Math.abs(mY - y); 
  42.         if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) { 
  43.             // 从x1,y1到x2,y2画一条贝塞尔曲线,更平滑(直接用mPath.lineTo也是可以的) 
  44.             // 由此就可以制作各种画笔 
  45.             mPath.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2); 
  46.             mX = x; 
  47.             mY = y; 
  48.         } 
  49.     } 
  50.   
  51.     private void touch_up() { 
  52.         mPath.lineTo(mX, mY); 
  53.         mCanvas.drawPath(mPath, mPaint); 
  54.         // 将一条完整的路径保存下来(相当于入栈操作) 
  55.         savePath.add(dp); 
  56.         mPath = null;// 重新置空 
  57.     } 

源码下载地址:http://down.51cto.com/data/1984802

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何更省钱? 近期特价热门硒鼓... 如今激光打印设备已经成为商务或企业的绝对主力办公设备,但采购者往往忽视了激光打印设备所用的耗材,相对...