android开发 手写签名,Android实现手写签名
本文实例为大家分享了Android手写签名的实现方法,产品要求用户可以在app上签协议。。所以得弄个手写签名版,参考了一些资料自己写了个PaintView去继承View,实现签名功能。
package com.****.*****.widget;
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;
/**
* This view implements the drawing canvas.
*
* It handles all of the input events and drawing functions.
* 签名版
*/
public class PaintView extends View {
private Paint paint;
private Canvas cacheCanvas;
private Bitmap cachebBitmap;
private Path path;
private OnMoveLisener lisener;
public void setSize(int width,int height,OnMoveLisener lisener) {
this.lisener=lisener;
init(width,height);
}
public PaintView(Context context, AttributeSet attrs) {
super(context, attrs);
//init(0,0);
}
public Bitmap getCachebBitmap() {
return cachebBitmap;
}
private void init(int width,int height) {
paint = new Paint();
paint.setAntiAlias(true);
paint.setStrokeWidth(3);
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.BLACK);
path = new Path();
cachebBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
cacheCanvas = new Canvas(cachebBitmap);
cacheCanvas.drawColor(Color.WHITE);
}
public void clear() {
if (cacheCanvas != null) {
paint.setColor(Color.WHITE);
cacheCanvas.drawPaint(paint);
paint.setColor(Color.BLACK);
cacheCanvas.drawColor(Color.WHITE);
invalidate();
}
}
@Override
protected void onDraw(Canvas canvas) {
// canvas.drawColor(BRUSH_COLOR);
canvas.drawBitmap(cachebBitmap, 0, 0, null);
canvas.drawPath(path, paint);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
int curW = cachebBitmap != null ? cachebBitmap.getWidth() : 0;
int curH = cachebBitmap != null ? cachebBitmap.getHeight() : 0;
if (curW >= w && curH >= h) {
return;
}
if (curW < w)
curW = w;
if (curH < h)
curH = h;
Bitmap newBitmap = Bitmap.createBitmap(curW, curH, Bitmap.Config.ARGB_8888);
Canvas newCanvas = new Canvas();
newCanvas.setBitmap(newBitmap);
if (cachebBitmap != null) {
newCanvas.drawBitmap(cachebBitmap, 0, 0, null);
}
cachebBitmap = newBitmap;
cacheCanvas = newCanvas;
}
private float cur_x, cur_y;
@Override
public boolean onTouchEvent(MotionEvent event) {
getParent().requestDisallowInterceptTouchEvent(true);// 通知父控件勿拦截本控件touch事件
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
cur_x = x;
cur_y = y;
path.moveTo(cur_x, cur_y);
break;
}
case MotionEvent.ACTION_MOVE: {
path.quadTo(cur_x, cur_y, x, y);
cur_x = x;
cur_y = y;
lisener.hideWords();//隐藏提醒的文字
break;
}
case MotionEvent.ACTION_UP: {
cacheCanvas.drawPath(path, paint);
path.reset();
break;
}
}
invalidate();
return true;
}
public interface OnMoveLisener{
void hideWords();//主界面回调后隐藏提示文字
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助。
android开发 手写签名,Android实现手写签名相关推荐
- android studio开发工具介绍,Android应用开发之Android开发工具介绍、Android Studio配置...
本文将带你了解Android应用开发之Android开发工具介绍.Android Studio配置,希望本文对大家学Android有所帮助. 2.1 Android Studio配置 2.1.1 ...
- Android开发介绍(基于Android Studio软件)
Android开发介绍(基于Android Studio软件) 关于Android开发,笔者走过一些弯路,因此今天总计了有关Android开发的一些内容和心得,希望对大家有所帮助.首先来一张安卓开发者 ...
- Android开发之生成自己的签名文件及App签名打包
首先,要想生成Android App的签名文件必须先配好Android开发环境,因为签名文件的生成需要进入jdk中的bin目录,如果还未配好开发环境,请自行百度. 下面,我们开始生成自己的签名文件, ...
- android开发面试准备!Android黑科技保活实现原理揭秘,内容太过真实
开头 年前面试了一些公司,目前已经拿到了阿里跟头条的 offer.去年我也出去找工作了,面试五家拿到了四家公司的 offer.所以在面试方面我应该可以提供一些愚见吧.本篇会讲解一些常见题目以及一些答题 ...
- Android开发技巧!高级Android晋升之View渲染机制,Android篇
前言 众所周知,Xamarin应该是.net下的跨平台开发工具.2016年之前还处于收费状态,后被微软收购后开源.但似乎有个现象,开源后的Xamarin发展似乎有些停滞,而且维护Xamarin的团队又 ...
- Android开发所需的Android SDK、开发中用到的工具、Android开发教程、Android设计规范,免费的设计素材
AndroidDevTools AndroidSDK在线更新镜像服务器 中国科学院开源协会镜像站地址: IPV4/IPV6:mirrors.opencas.cn端口:80 IPV4/IPV6:mirr ...
- Android开发自学笔记(基于Android Studio1.3.1)—1.环境搭建(转)
一.引言 本套学习笔记的开发环境是Windows 10 专业版和Android Studio 的最新版1.3.1. Android Studio 是一个Android开发环境,基于Intelli ...
- Android开发之获取常用android设备参数信息
如下图: 查看工具类:下载apk的方法缺少xutils库,可以自己添加xutils库 package com.mchsdk.paysdk.utils;import android.Manifest; ...
- android开发 方式有哪些,Android开发从入门到精通
摘要: 本书循序渐进地详细讲解了Android技术的基本知识, 并通过实例的方式讲解了Android在各个领域的具体应用和实现过程.全书分为20个章节, 第1章讲解了Android操作系统概述的基本知 ...
- android开发论坛!关于Android开发的面试经验总结,含爱奇艺,小米,腾讯,阿里
前言 近期被两则消息刷屏,[字节跳动持续大规模招聘,全年校招超过1万人][腾讯有史以来最大规模的校招启动]当然Android岗位也包含在内,因此Android还是有很多机会的.结合往期面试的同学(主要 ...
最新文章
- (0031) iOS 开发之图片压缩
- 《大话数据结构》第9章 排序 9.8 归并排序(上)
- SAP Spartacus的登录页面的用户名显示逻辑
- php文件怎么阅读器,Vue文件阅读器组件FileReader API
- 'ADB server didn't ACK'的解决办法
- mysql分组之后统计数量
- 歪枣网Mysql优化总结
- 利用Github搭建免费图床
- Kafka 源码分析之网络层(一)
- XP建立隐藏的超级用户
- 原价399,限时1元!7天人工智能入门训练营:带你从0掌握机器学习算法!
- 二、JAVA第一行代码
- C语言中的 pow 函数 使用方法及注意事项,和常见报错原因,且分享实战中的使用
- echarts 横向柱状图
- python .txt文件转.csv文件-ok
- 传感器模组:手机摄像头模组-1亿像素是如何实现的?
- 微信小程序电商实战-首页(上)
- Python011: Python大作业之移动的小火车动画(四)代码实现
- uniapp 微信小程序 swiper修改指示点的位置和样式
- 【八月英语----照亮我心】
热门文章
- SpringCloud微服务实战—翟永超 读书笔记
- 十大排序算法Java版
- 【续篇】再次调戏勒索软件大黑客
- vue-pdf 字体不显示
- 花两个月吃透京东T8推荐的178页京东基础架构建设之路,入职定T5
- Linux ——vi / vim 新建文件vi abc.txt 、编辑文件 i、退出编辑 esc、保存文件:wq、打开文件所在目录 open . 、使用命令打开文件 open ./abc.txt。
- 漏洞复现永恒之蓝MS-17010+修复
- Python爬取网易云音乐评论
- 【3dmax千千问】初学3dmax插件神器第18课|VRAY渲染教程|疯狂模渲大师用3dmax插件神器的扫描线渲染器该怎么表现效果图的写实效果?
- Python 数据恢复实战 - 恢复U盘中的chk文件,以及误删的文件