iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android怎么实现手写板功能
    今天小编给大家分享一下Android怎么实现手写板功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。具体代码如下:packa...
    99+
    2023-07-02
  • Android实现手写板功能
    本文实例为大家分享了Android实现手写板功能的具体代码,供大家参考,具体内容如下 自定义个一个手写板的重点: 笔画为一次down-move-up的集合 撤销笔画并非一次path的...
    99+
    2024-04-02
  • Android实现画板功能(一)
    本文实例为大家分享了Android实现画板功能的具体代码,供大家参考,具体内容如下 前言 最近看到了一些Android手写相关的功能,比如说: 钉钉手写签名功能,输入法手写功能,笔记...
    99+
    2024-04-02
  • Android实现画板功能(二)
    本文实例为大家分享了Android实现画板功能的具体代码,讲解使用imageView,bitmap的方式实现画板功能,供大家参考,具体内容如下 前言 在上一篇Android实现画板功...
    99+
    2024-04-02
  • Android实现绘画板功能
    目录实现流程:实现步骤:一、预期效果二、设置横竖屏切换三、确定布局四、自定义滑动条五、绘画区域六、MainActivity实现流程:     ...
    99+
    2024-04-02
  • android实现NFC读写功能
    一、NFC是什么? 近距离无线通讯技术,这个技术由非接触式射频识别(RFID)演变而来,由飞利浦半导体(现恩智浦半导体公司)、诺基亚和索尼共同研制开发,其基础是RFID及互连技术。近...
    99+
    2024-04-02
  • Android如何实现绘画板功能
    这篇文章主要介绍了Android如何实现绘画板功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。实现流程:     &nbs...
    99+
    2023-06-15
  • java实现画图板功能的代码怎么写
    要实现一个简单的画图板功能,你可以使用Java的Swing库来实现。下面是一个简单的示例代码,可以实现画图板的基本功能:```jav...
    99+
    2023-08-24
    java
  • Android怎么自定义View实现简易画板功能
    这篇文章主要介绍“Android怎么自定义View实现简易画板功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android怎么自定义View实现简易画板功能”文章能帮助大家解决问题。自定义VIe...
    99+
    2023-06-30
  • 怎么自定义视图view使用Canvas实现手写板和涂鸦功能
    本文小编为大家详细介绍“怎么自定义视图view使用Canvas实现手写板和涂鸦功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么自定义视图view使用Canvas实现手写板和涂鸦功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
    99+
    2023-07-05
  • 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
  • 自定义视图view使用Canvas实现手写板和涂鸦功能
    目录预览图一、xml布局二、MainActivity代码三、我们自定义view的类预览图 一、xml布局 <xml version="1.0" encoding="utf-8...
    99+
    2023-05-14
    自定义视图 自定义view 自定义视图使用Canvas Canvas实现手写板 Canvas涂鸦功能
  • Android实现绘画板功能的示例分析
    这篇文章主要介绍Android实现绘画板功能的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!实现流程:        一、预期效果&nbs...
    99+
    2023-06-15
  • Android自定义View实现简易画板功能
    本文实例为大家分享了Android自定义View实现简易画板的具体代码,供大家参考,具体内容如下 自定义VIew实现简易画板效果,功能包括清空、选择颜色,选择大小,效果如下 画板布...
    99+
    2024-04-02
  • Android怎么实现聊天功能
    要实现聊天功能,可以使用 Android 提供的 Socket 和网络通信技术。以下是一个简单的实现聊天功能的步骤:1. 创建一个服...
    99+
    2023-10-09
    Android
  • android筛选功能怎么实现
    要实现Android筛选功能,可以按照以下步骤进行: 创建一个包含所有筛选选项的界面,可以是一个弹出窗口、抽屉式菜单或者单独的筛...
    99+
    2024-03-01
    android
  • Android怎么实现点击功能
    Android中实现点击功能的方法有多种。以下是几种常用的实现方式:1. 使用Button控件:在布局文件中添加Button控件,然...
    99+
    2023-08-18
    Android
  • android辅助功能怎么实现
    Android系统提供了一些辅助功能的API,可以帮助开发者实现辅助功能的功能。 使用辅助功能服务:开发者可以创建一个辅助功能服...
    99+
    2023-10-23
    android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作