当前位置: 首页 > news >正文

建设银行手机查询网站西安广告公司排名

建设银行手机查询网站,西安广告公司排名,欧美视频在线电影,wordpress如何加入备案许可证编号Android 手写签名功能详解 1. 引言2. 手写签名核心实现#xff1a;SignatureView 类3. 交互层实现#xff1a;MainActivity 类4. 布局与配置5. 性能优化与扩展方向 1. 引言 在电子政务、金融服务等移动应用场景中#xff0c;手写签名功能已成为提升用户体验与业务合规性的关… Android 手写签名功能详解 1. 引言2. 手写签名核心实现SignatureView 类3. 交互层实现MainActivity 类4. 布局与配置5. 性能优化与扩展方向 1. 引言 在电子政务、金融服务等移动应用场景中手写签名功能已成为提升用户体验与业务合规性的关键需求。实现一个流畅、安全且符合用户习惯的签名功能需要在交互设计、性能优化和存储方案等方面进行综合考量。本文将围绕核心需求结合关键代码解析其实现方案。 2. 手写签名核心实现SignatureView 类 1初始化绘图设置 private void setupDrawing() {drawPaint new Paint();drawPaint.setColor(paintColor);drawPaint.setAntiAlias(true);drawPaint.setStrokeWidth(20);drawPaint.setStyle(Paint.Style.STROKE);drawPaint.setStrokeJoin(Paint.Join.ROUND);drawPaint.setStrokeCap(Paint.Cap.ROUND);canvasPaint new Paint(Paint.DITHER_FLAG); }技术原理 抗锯齿技术setAntiAlias(true) 通过边缘像素的灰度处理消除锯齿提升线条平滑度。在高分辨率屏幕上效果尤为明显其原理是在边缘区域生成半透明像素通过颜色混合实现视觉上的平滑过渡。笔触优化ROUND 类型的 Join 和 Cap 使线条连接自然避免尖锐棱角。这对于模拟真实书写体验至关重要特别是在书写速度较快时能有效避免线条断裂感。抖动处理Paint.DITHER_FLAG 通过随机噪声算法优化色彩显示在低精度屏幕上减少色彩断层现象。当图像色彩深度高于显示设备时抖动技术能通过图案化的方式模拟更多颜色。 2 视图大小变化处理 Override protected void onSizeChanged(int w, int h, int oldw, int oldh) {canvasBitmap Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);drawCanvas new Canvas(canvasBitmap); }内存管理机制 ARGB_8888 配置每个像素占用 4 字节32 位支持完整的 24 位色彩和 8 位透明度。这对于需要保留签名细节和背景透明度的场景至关重要但同时也意味着较大的内存占用例如 1080x1920 分辨率的 Bitmap 占用约 8MB 内存。动态调整当屏幕旋转或布局变化时系统会调用 onSizeChanged 方法此时需重新创建 Bitmap 以匹配新尺寸。为避免频繁创建导致的内存抖动可考虑添加尺寸阈值判断仅在尺寸变化超过一定比例时重新创建。 3触摸事件处理 Override public boolean onTouchEvent(MotionEvent event) {float touchX event.getX();float touchY event.getY();switch (event.getAction()) {case MotionEvent.ACTION_DOWN:drawPath.moveTo(touchX, touchY);break;case MotionEvent.ACTION_MOVE:drawPath.lineTo(touchX, touchY);break;case MotionEvent.ACTION_UP:drawCanvas.drawPath(drawPath, drawPaint);drawPath.reset();break;default:return false;}invalidate();return true; }事件处理流程 ACTION_DOWN记录触摸起点初始化 Path 对象ACTION_MOVE持续追踪手指轨迹通过 lineTo() 方法连接路径点ACTION_UP将最终路径绘制到 Bitmap 上并重置 Path 准备下一次绘制invalidate()触发 onDraw() 方法重绘视图确保用户能实时看到绘制结果 性能优化点 事件过滤在 ACTION_MOVE 中添加距离阈值判断如 dx 4 || dy 4过滤微小抖动减少不必要的绘制操作批量处理对于高频触摸事件如 120Hz 屏幕可采用采样策略每 N 个事件处理一次平衡响应速度与绘制性能 3. 交互层实现MainActivity 类 1按钮事件绑定 Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);signatureView findViewById(R.id.signature_view);clearButton findViewById(R.id.clear_button);saveButton findViewById(R.id.save_button);shareButton findViewById(R.id.share_button);clearButton.setOnClickListener(v - signatureView.clear());saveButton.setOnClickListener(v - saveSignature());shareButton.setOnClickListener(v - shareSignature()); }架构设计 MVC 模式Activity 作为控制器负责处理用户交互并调用 ModelSignatureView的方法单一职责将签名绘制逻辑封装在 SignatureView 中Activity 专注于业务流程控制事件驱动通过接口回调机制实现组件间通信保持代码松耦合 2保存签名功能 private void saveSignature() {Bitmap signatureBitmap signatureView.getSignatureBitmap();if (isBitmapEmpty(signatureBitmap)) {Toast.makeText(this, 签名为空无法保存, Toast.LENGTH_SHORT).show();return;}try {File photoFile createImageFile();try (FileOutputStream fos new FileOutputStream(photoFile)) {signatureBitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);Toast.makeText(this, 签名已保存至相册, Toast.LENGTH_SHORT).show();}} catch (IOException e) {e.printStackTrace();Toast.makeText(this, 保存失败请稍后再试, Toast.LENGTH_SHORT).show();} }文件存储技术 PNG 格式选择无损压缩格式支持透明度适合保存精细的签名图像质量参数compress() 方法的第二个参数0-100对 PNG 无效因其为无损格式但对 JPEG 有效异常处理使用 try-with-resources 自动关闭流防止资源泄漏捕获 IOException 处理文件操作失败场景 存储路径选择 内部存储getFilesDir() 返回的路径其他应用无法访问适合存储敏感数据外部存储getExternalFilesDir() 返回的路径应用卸载时会被删除公共目录需申请 WRITE_EXTERNAL_STORAGE 权限适合保存需要共享的文件 4. 布局与配置 1布局文件设计 ?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalandroid:padding16dpcom.example.signatureapp.SignatureViewandroid:idid/signature_viewandroid:layout_widthmatch_parentandroid:layout_height0dpandroid:layout_weight1android:backgroundandroid:color/whiteandroid:layout_marginBottom16dp/LinearLayoutandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationhorizontalandroid:weightSum3Buttonandroid:idid/clear_buttonandroid:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_weight1android:text清除android:layout_marginRight8dp/Buttonandroid:idid/save_buttonandroid:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_weight1android:text保存android:layout_marginRight8dp/Buttonandroid:idid/share_buttonandroid:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_weight1android:text分享//LinearLayout /LinearLayout响应式设计 权重系统通过 layout_weight 属性动态分配空间确保签名区域占据主要屏幕空间边距优化layout_marginRight 设置按钮间距提升触控友好性Android 推荐最小触控区域为 48dp×48dp背景处理白色背景提供清晰的签名对比同时减少眼睛疲劳 2应用清单配置 ?xml version1.0 encodingutf-8? paths xmlns:androidhttp://schemas.android.com/apk/res/androidexternal-files-path namemy_images pathPictures / /paths安全配置解析 FileProviderAndroid 7.0 强制要求通过 ContentProvider 分享文件避免直接暴露文件路径路径映射external-files-path 将应用外部存储目录映射为 content URI格式为 content://authority/my_images/filename.png权限控制通过 grantUriPermissions 动态授予临时访问权限避免静态声明危险权限 5. 性能优化与扩展方向 1内存优化 Bitmap 复用在不需要透明度时使用 Bitmap.Config.RGB_565每个像素 2 字节减少内存占用缓存策略使用 LruCache 缓存最近使用的 Bitmap避免重复创建内存泄漏检测通过 LeakCanary 等工具检测 Bitmap 未释放问题 2绘制优化 双缓冲技术通过内存画布Bitmap Canvas减少 UI 刷新频率避免屏幕闪烁硬件加速通过 setLayerType(LAYER_TYPE_HARDWARE, null) 启用 GPU 加速复杂绘制操作离屏渲染对于频繁重绘区域使用 setWillNotCacheDrawing(false) 开启离屏缓存 3扩展功能实现 压力感应float pressure event.getPressure(); drawPaint.setStrokeWidth(BASE_WIDTH pressure * PRESSURE_FACTOR);撤销/重做使用两个栈分别保存历史状态和撤销操作缩放平移通过 Matrix 实现签名区域的缩放和平移功能 4 数据安全 加密存储SecretKey secretKey KeyGenerator.getInstance(AES).generateKey(); Cipher cipher Cipher.getInstance(AES/GCM/NoPadding); cipher.init(Cipher.ENCRYPT_MODE, secretKey); try (CipherOutputStream cos new CipherOutputStream(fos, cipher)) {bitmap.compress(Bitmap.CompressFormat.PNG, 100, cos); }文件完整性校验保存签名时计算并存储 SHA-256 哈希值验证时重新计算比对水印技术在签名图像中嵌入不可见水印防止篡改 Android手写签名功能通过自定义SignatureView基于Canvas和Path捕捉绘制轨迹利用双缓冲技术优化渲染性能结合FileProvider实现安全存储与分享。开发中需注重抗锯齿、压力感应等体验优化控制Bitmap内存占用以避免溢出并通过加密存储、动态权限适配满足安全合规需求模块化设计还可扩展撤销/重做等功能适用于金融、医疗等多场景的数字化签名需求。
http://www.pierceye.com/news/581145/

相关文章:

  • 三亚网站建设平台查数据的权威网站
  • html网站制作答辩ppt网站备份和备案的区别
  • 网站开发需要工具免费的ps软件
  • 常州网站建设优质商家重庆互联网怎么样
  • 做网站发广告动漫网页设计报告
  • 求职招聘网站建设投标书沈阳网站建设的公司哪家好
  • 做导航网站有发展吗南京企业网站制作哪家好
  • 千万pv网站开发成本招聘网站数建设
  • 吐鲁番大型网站建设平台找客户去哪个平台
  • 权威网站有哪些给个网站可以在线
  • 优化网站专题北京海淀网站建设公司
  • 广州网站快速排名网站维护正常要多久
  • 建网站 选安全甘肃做网站价格
  • 微信公众管理平台有必要买优化大师会员吗
  • 家居网站建设素材腾讯adq广告平台
  • 响应式网站 图片居中门户网站样式
  • 潍坊网站排名推广北京建设高端网站的
  • 广东省住房和建设网站鹤壁市建设局网站
  • 北京网站建设报价明细手机网站网站开发流程
  • 三合一网站模板如何看网站是html几代做的
  • 如何设置自己的网站网站建设的常用词
  • 甘肃网站开发冷色调网站
  • 用cdr做网站设计尺寸要多少网站如何做实名验证码
  • 比较好的设计网站wordpress主题代码哪里
  • 专门学习网站建设读什么专业南山网站设计公司
  • 专业网站设计模板深圳最专业的高端网站建设
  • cc域名做网站怎么样无锡个人网站建设
  • 网站模板设计报价单小学网站建设设计方案
  • 二级域名网站怎么投广告wordpress自定义输入
  • su域名注册如何做360网站优化