返回顶部
首页 > 资讯 > 精选 >Android怎么实现手写板功能
  • 872
分享到

Android怎么实现手写板功能

2023-07-02 13:07:47 872人浏览 安东尼
摘要

今天小编给大家分享一下Android怎么实现手写板功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。具体代码如下:packa

今天小编给大家分享一下Android怎么实现手写板功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

具体代码如下:

package com.kyli.base.view;import android.content.Context;import android.graphics.Bitmap;import android.graphics.canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import androidx.annotation.Nullable;import java.util.ArrayList;import java.util.List;public class SignBoradView extends View {        private int beierThreshold = 4;    private float x = 0;    private float y = 0;        private Paint mPaint;        private int strokeWidth = 10;        private int color = Color.BLACK;        private Path path;    private int state = State.CLEAR;    private interface State {                int START = 0;                int STOP = 1;                int CLEAR = 2;    }    private List<EveryPenPath> everyPenPaths = new ArrayList<>();        private static class EveryPenPath {        public Path path;    }    public SignBoradView(Context context) {        super(context);    }    public SignBoradView(Context context, @Nullable AttributeSet attrs) {        super(context, attrs);    }    public SignBoradView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    private void initPaint() {        if (mPaint == null) {            mPaint = new Paint();            mPaint.setStrokeWidth(strokeWidth);            mPaint.setColor(color);            mPaint.setStyle(Paint.Style.STROKE);            mPaint.setAntiAlias(true);            mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);        }    }    public void start() {        state = State.START;        initPaint();    }        public void stop() {        state = State.STOP;    }        public void clear() {        state = State.CLEAR;        for (int i = everyPenPaths.size() - 1; i >= 0; i--) {            EveryPenPath everyPenPath = everyPenPaths.get(i);            everyPenPath.path.reset();            everyPenPath.path.close();            everyPenPath.path = null;        }        everyPenPaths.clear();        invalidate();    }    public void back() {        int count = everyPenPaths.size();        if (count < 1)            return;        EveryPenPath everyPenPath = everyPenPaths.get(count - 1);        everyPenPath.path.reset();        everyPenPath.path.close();        everyPenPath.path = null;        everyPenPaths.remove(count - 1);        invalidate();    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        if (state == State.START) {                        for (EveryPenPath e : everyPenPaths) {                canvas.drawPath(e.path, mPaint);            }            //当前进行中的  path!=null            if (path != null) {                canvas.drawPath(path, mPaint);            }        }    }    @Override    public boolean onTouchEvent(MotionEvent event) {        if (state == State.START) {            if (event.getAction() == MotionEvent.ACTION_UP) {                actionUp(event);                invalidate();                return true;            }            if (event.getAction() == MotionEvent.ACTION_MOVE) {                actionMove(event);                invalidate();                return true;            }            if (event.getAction() == MotionEvent.ACTION_DOWN) {                actionDown(event);                invalidate();                return true;            }        }        return super.onTouchEvent(event);    }    private void actionUp(MotionEvent event) {        actionMove(event);                EveryPenPath everyPenPath = new EveryPenPath();        everyPenPath.path = path;        everyPenPaths.add(everyPenPath);        //将当前画笔置位null;        path = null;    }        private void actionMove(MotionEvent event) {                float cX = event.getX();        float cY = event.getY();        float dX = Math.abs(cX - x);//变化量        float dY = Math.abs(cY - y);        if (dX >= beierThreshold || dY >= beierThreshold) {            float rX = x + (cX - x) / 2;            float rY = y + (cY - y) / 2;            path.quadTo(rX, rY, cX, cY);            //下次的x 域y 将重新计算            x = cX;            y = cY;        }    }        private void actionDown(MotionEvent event) {        path = new Path();        x = event.getX();        y = event.getY();        path.moveTo(x, y);    }    public void setBeierThreshold(int beierThreshold) {        this.beierThreshold = beierThreshold;    }    public void setStrokeWidth(int strokeWidth) {        this.strokeWidth = strokeWidth;    }    public void setColor(int color) {        this.color = color;    }    public Bitmap getResult(int bGColor) {        if (everyPenPaths.size() == 0)            return null;        Bitmap bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);        Canvas canvas = new Canvas(bitmap);        canvas.drawColor(bgColor);        for (int i = 0; i < everyPenPaths.size(); i++) {            if (mPaint == null) {                initPaint();            }            canvas.drawPath(everyPenPaths.get(i).path, mPaint);        }        return bitmap;    }    public Bitmap getResult() {        return getResult(Color.WHITE);    }}

以上就是“Android怎么实现手写板功能”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: Android怎么实现手写板功能

本文链接: https://www.lsjlt.com/news/342310.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android怎么实现手写板功能
    今天小编给大家分享一下Android怎么实现手写板功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。具体代码如下:packa...
    99+
    2023-07-02
  • Android实现手写板功能
    本文实例为大家分享了Android实现手写板功能的具体代码,供大家参考,具体内容如下 自定义个一个手写板的重点: 笔画为一次down-move-up的集合 撤销笔画并非一次path的...
    99+
    2024-04-02
  • Android实现画板、写字板功能(附源码下载)
    前言 本文给大家分享一个使用Android开发写字板功能Dem、简单操作内存中的图像、对图像进行简单的处理、绘制直线、以达到写字板的效果 效果图如下 XML布局代码 &...
    99+
    2022-06-06
    源码下载 写字板 画板 源码 Android
  • Android实现画板功能(一)
    本文实例为大家分享了Android实现画板功能的具体代码,供大家参考,具体内容如下 前言 最近看到了一些Android手写相关的功能,比如说: 钉钉手写签名功能,输入法手写功能,笔记...
    99+
    2024-04-02
  • Android实现画板功能(二)
    本文实例为大家分享了Android实现画板功能的具体代码,讲解使用imageView,bitmap的方式实现画板功能,供大家参考,具体内容如下 前言 在上一篇Android实现画板功...
    99+
    2024-04-02
  • Android实现绘画板功能
    目录实现流程:实现步骤:一、预期效果二、设置横竖屏切换三、确定布局四、自定义滑动条五、绘画区域六、MainActivity实现流程:     ...
    99+
    2024-04-02
  • Android自定义控件实现简单写字板功能
    先来看看效果图 就是简单的根据手指写下的轨迹去画出内容 一、实现 之前一篇文章里提到了android官方给出的自定义控件需要考虑以下几点: 创建View 处理View的布局...
    99+
    2022-06-06
    写字板 Android
  • java实现画图板功能的代码怎么写
    要实现一个简单的画图板功能,你可以使用Java的Swing库来实现。下面是一个简单的示例代码,可以实现画图板的基本功能:```jav...
    99+
    2023-08-24
    java
  • android实现NFC读写功能
    一、NFC是什么? 近距离无线通讯技术,这个技术由非接触式射频识别(RFID)演变而来,由飞利浦半导体(现恩智浦半导体公司)、诺基亚和索尼共同研制开发,其基础是RFID及互连技术。近...
    99+
    2024-04-02
  • Android如何实现绘画板功能
    这篇文章主要介绍了Android如何实现绘画板功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。实现流程:     &nbs...
    99+
    2023-06-15
  • 怎么自定义视图view使用Canvas实现手写板和涂鸦功能
    本文小编为大家详细介绍“怎么自定义视图view使用Canvas实现手写板和涂鸦功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么自定义视图view使用Canvas实现手写板和涂鸦功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
    99+
    2023-07-05
  • Android怎么自定义View实现简易画板功能
    这篇文章主要介绍“Android怎么自定义View实现简易画板功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android怎么自定义View实现简易画板功能”文章能帮助大家解决问题。自定义VIe...
    99+
    2023-06-30
  • Android自定义SurfaceView实现画板功能
    接触了这么久的View,总不能一直停留在View里,现在开始呢,就要学习一个新的知识点:SurfaceView,实际上SurfaceView与View的原理都差不多,只是效率和...
    99+
    2022-06-06
    surfaceview 画板 Android
  • JS怎么实现粘贴板功能
    小编给大家分享一下JS怎么实现粘贴板功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用剪贴板是一项基本技能。作为码农都应知道...
    99+
    2024-04-02
  • asp留言板功能怎么实现
    ASP留言板功能可以通过以下步骤实现:1. 创建数据库:使用SQL Server或MySQL等数据库软件创建一个数据库,用于存储留言...
    99+
    2023-06-14
    asp留言板
  • php怎么实现留言板功能
    要实现留言板功能,可以使用PHP语言结合数据库操作来实现。以下是一个简单的实现留言板功能的示例:1. 创建数据库表格:创建一个名为&...
    99+
    2023-09-07
    php
  • Android实现手机拍照功能
    本文实例为大家讲解如何轻松实现Android手机拍照功能,分享给大家供大家参考。具体如下: 一、布局文件main.xml <?xml version="1.0...
    99+
    2022-06-06
    手机 Android
  • 自定义视图view使用Canvas实现手写板和涂鸦功能
    目录预览图一、xml布局二、MainActivity代码三、我们自定义view的类预览图 一、xml布局 <xml version="1.0" encoding="utf-8...
    99+
    2023-05-14
    自定义视图 自定义view 自定义视图使用Canvas Canvas实现手写板 Canvas涂鸦功能
  • 怎么用python实现老板键功能
    这篇文章主要介绍了怎么用python实现老板键功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.获取所有顶层窗口import win32guihwnd_titl...
    99+
    2023-06-14
  • 使用vue实现手写签名功能
     个人实现截图: 安装: npm install vue-esign --save 使用: 1.在main.js中引入 import vueEsign from ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作