tangxinhai11 2023-06-07 08:15 采纳率: 100%
浏览 39
已结题

如何在android studio中录入手动签名的编码

如何在android studio中录入手动签名的编码?

使用edittext这个控件,如何实现点击后实现手动签名。如下图:

img

  • 写回答

4条回答 默认 最新

  • 不良使 Python领域潜力新星 2023-06-07 09:33
    关注

    在 Android Studio 中实现手动签名可以通过使用 Canvas 绘制手写图形,并保存为图片,最终将其转化为签名字符串保存到数据库中。

    下面是一个简单的实现过程:

    1. 在布局文件中,添加一个 View 控件用于绘制签名:
    <RelativeLayout
        android:id="@+id/signature_view"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
    
        <View
            android:id="@+id/signature_canvas"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/white"
            android:padding="10dp" />
    </RelativeLayout>
    
    1. 在代码中,给 Canvas 设置颜色,线宽等参数,并添加监听器,获取手写签名的图形:
    public class MainActivity extends AppCompatActivity {
    
        private Canvas canvas;
        private Paint paint;
        private Bitmap bitmap;
        private View canvasView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            // 获取签名绘制的 View
            canvasView = findViewById(R.id.signature_canvas);
            canvasView.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    switch (event.getActionMasked()) {
                        case MotionEvent.ACTION_DOWN:
                            drawStart(event.getX(), event.getY());
                            break;
                        case MotionEvent.ACTION_MOVE:
                            drawMove(event.getX(), event.getY());
                            break;
                        case MotionEvent.ACTION_UP:
                            drawEnd();
                            break;
                    }
                    return true;
                }
            });
        }
    
        // 开始画线
        private void drawStart(float x, float y) {
            bitmap = Bitmap.createBitmap(canvasView.getWidth(), canvasView.getHeight(),
                    Bitmap.Config.ARGB_8888);
            canvas = new Canvas(bitmap);
            canvas.drawColor(Color.WHITE);
            paint = new Paint();
            paint.setColor(Color.BLACK);
            paint.setStrokeWidth(5f);
            paint.setStyle(Paint.Style.STROKE);
            paint.setAntiAlias(true);
            canvas.drawPoint(x, y, paint);
        }
    
        // 继续画线
        private void drawMove(float x, float y) {
            canvas.drawPoint(x, y, paint);
            canvasView.invalidate();
        }
    
        // 结束画线
        private void drawEnd() {
            canvas.save();
            canvas.restore();
            canvasView.invalidate();
            String signature = bitmapToString(bitmap);
            // 保存签名字符串到数据库中
        }
    
        // 将 Bitmap 转为字符串
        private String bitmapToString(Bitmap bitmap) {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.PNG,100,baos);
            byte[] bytes = baos.toByteArray();
            return Base64.encodeToString(bytes, Base64.DEFAULT);
        }
    }
    
    1. 可以将签名保存在数据库中,也可以将签名保存在本地文件中。

    这样可以实现手写签名的功能,但建议还是使用数字签名,以确保签名的真实性和安全性。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月19日
  • 已采纳回答 6月11日
  • 创建了问题 6月7日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表