Android开发:一个简单的画板

思路:

通过View.setOnTouchListener()提供的Api获取到手指触摸屏幕的坐标,然后通过Canvas.drawLine()在 bitmap 上画出手指经过的路径。
建议先参阅 Android开发:对图片进行简单的编辑


第一步:
  1. 向 drawable 文件夹中添加一个背景图,以作画板背景。假设文件名为 bg.jpg
  2. 往布局文件中添加一个ImageView以作画板。假设其 id 为:iv_pad

第二步:

声明这些成员变量

private ImageView iv_pad; //画板
private int startX,startY;//手指触摸起始位置

//用于绘制路径
private Canvas canvas;
private Paint paint;

private Bitmap bmp;//用于编辑的 Bitmap .

onCreate()方法中将上文声明的变量实例化。

iv_pad = (ImageView) findViewById(R.id.iv_pad);

paint = new Paint();

//不理解的话请先看思路中提到的参阅博客
Bitmap bmSrc = BitmapFactory.decodeResource(getResources(), R.drawable.background);
bmp = Bitmap.createBitmap(bmSrc.getWidth(), bmSrc.getHeight(), bmSrc.getConfig());

canvas = new Canvas(bmCopy);

canvas.drawBitmap(bmSrc, new Matrix(), paint);//此时的 bmp 就是背景图。

第三步:

实现 ImageView 的触摸监听。

iv_pad.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    startX = (int) event.getX();
                    startY = (int) event.getY();
                    break;
                case MotionEvent.ACTION_MOVE:
                    int x = (int) event.getX();
                    int y = (int) event.getY();
                    canvas.drawLine(startX, startY, x, y, paint);
                    startX = x;
                    startY = y;
                    break;
                case MotionEvent.ACTION_UP:
                    break;
                }
                pad.setImageBitmap(bmp);//在触摸的过程中将 bmp 显示到画板上,达到不断刷新的效果。
                return true;
            }
        });

第四步

运行。


添加修改画笔颜色、宽度及保存图片的功能。

  • 修改画笔颜色:paint.setColor(int color);
  • 修改画笔宽度:paint.setStrokeWidth(float width);
  • 保存图片到sd卡:

    //不要忘了申请权限。
        public void save() throws IOException{
            File file = new File("sdcard/myPaint.png");
            FileOutputStream fos = new FileOutputStream(file);
    
            //对 Bitmap 进行压缩,中间的 100 为质量,从 0 到 100 图片质量由低到高。
            bmCopy.compress(CompressFormat.PNG, 100, fos);
            fos.close();
    }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android带笔锋的签名画板开发是一项有趣和有挑战的任务。首先,我们需要在Android平台上创建一个用户界面,包括一个画布、颜色选择器、笔刷大小调整器等元素。用户可以使用手指或者配备笔锋的触控笔在画布上进行绘画。 在绘画过程中,我们需要实现笔锋效果。笔锋是指线条的端点在形状和宽度上有所变化,就像用真实的笔在纸上书写一样。为了实现这一效果,我们需要根据绘画路径上的速度和压力来调整路径的宽度和形状。例如,当用户以较大的压力快速绘制笔触时,线条会变粗、边缘模糊,而当用户以较小的压力慢慢移动笔触时,线条则会变细、边缘清晰。为了实现这一效果,我们可以使用贝塞尔曲线来计算路径上每个点的宽度和形状。 另一个考虑因素是性能优化。由于绘制笔锋效果需要实时计算和更新路径的形状和宽度,所以在绘画过程中可能会出现卡顿或延迟。为了提高性能,我们可以使用缓存技术来存储和重用路径的形状和宽度。我们还可以使用多线程来分离计算和绘制的任务,提高绘画的流畅度。 最后,我们还可以添加一些额外的功能来增强用户体验。比如,可以实现保存绘画作品为图片,分享绘画作品至社交媒体,或者撤销和重做绘画操作等等。这些功能可以通过与Android系统的其他组件和API的交互来实现。 总的来说,Android带笔锋的签名画板开发是一项有技术含量的任务,它涉及到绘图算法、用户界面设计、性能优化和与其它系统组件的交互。通过合理的设计和开发,我们可以为用户提供一个功能强大、性能优越的签名画板应用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值