提高Android应用手写流畅度之基础篇

在使用android类的手写应用时,整体上都有这样一个印象:android的手写不流畅、不自然,和苹果应用比起来相差太远。本文结合作者亲身经历,介绍一下有效提高手写流畅度的几种方法。

操作方法

  • 01

    未做任何处理的手写效果: 这是一个自定义的view,通过在onTouchEvent时间中捕获系统回调的触摸点信息,然后再onDraw方法里面刷新,可以明显地感觉到线条很生硬,并且在手写的过程中跟随感很差,反应迟钝,具体代码如下: 通过分析,发现效率低下的原因是: (1)底层回调给onTouchEvent方法中的点太少(单位时间内点信息少导致跟随感差,快速手写时点之间距离过长); (2)捕获点信息后通知View刷新时,刷新不及时(刷新区域太大); 结合查阅的MotionEvent和View的api文档,发现可以从如下两个方向着手来提高手写体验。

  • 02

    增加触摸点个数: 显然我们无法改善系统回调onTouchEvent的次数,所以只能通过插值的方式来增加触摸点个数,但遗憾的时通过插值计算出来的点是没有压力值的,不方便做笔锋效果,通过查阅MotionEvent的api文档发现,Android对触屏事件进行批量处理。传递给onTouchEvent()的每一个MotionEvent都包含上至前一个onTouchEvent()调用之间捕获的若干个坐标点。如果将这些点都加入到绘制中,可使手写效果更加平滑。Android Developers对MotionEvent的介绍如下: 将这些点取出来,跟随感有明显改善,并且随着单位时间内点数的增多,快速手写时点之间距离减小,看上去更为平滑: 修改后的代码如下:

  • 03

    减少每次刷新的区域: 通过2改善了手写流畅度和平滑度,但是还可以做进一步改善,通过减小每次刷新的区域(使用invalidate(Rect rect)方法),可以提高刷新的效率,上面的代码都是对整个view进行刷新,当view过大(比如填充整个屏幕)时,手写过程中还是能够感觉到迟钝的现象,改善后的效果如下: 代码如下:

  • 04

    后记: 由于Android的消息传递机制问题,驱动层传递给上层的点由于延时会丢失一部分,导致上层应用获取的点相对于系统给的点大大减少,虽然人眼在1秒钟内只要看到超过24帧就不能看出卡顿的现象,但由于刷新机制和由于其它原因(比如:UI线程阻塞)导致看上去不连续。本文通过增加触摸点、减少刷新区域后,手写效率和效果得到明显改善,当然通过软件的进一步处理,手写效果还能得到进一步改善,这需要通过软件做插值处理(压力值也可以考虑通过插值算法算出来)。

(0)

相关推荐

  • 如何提高高配电脑的游戏流畅度

    当我们有了一台高配置的电脑,但打游戏时仍觉得卡顿的话,应如何进行优化呢?接下来就由小编来告诉大家.调整显卡设置1.第一步,打开电脑后右键点击桌面空白处,然后点击弹出菜单中的NVIDIA控制面板选项.2 ...

  • 如何降低游戏画面效果提高游戏流畅度

    一般情况下,您可以在“游戏设置”-“画面”-“画面效果”中进行设置,降低游戏画面效果,来提高游戏流畅度。 1、“穿越火线”游戏画面效果设置界面: 2、“英雄联盟”画面效果设置界面: 3、“魔兽世界”画 ...

  • win7怎么提高运行流畅度

    win7怎么提高运行流畅度 1.先右击计算机,直接选择属性. 2.然后在"系统信息"窗口后,并在右侧找到并打开"高级系统"设置. 3.接着在"系统属性 ...

  • 腾讯手游助手中怎么设置画面的清晰度流畅度呢

    腾讯手游助手中怎么设置画面的清晰度.流畅度呢,下面小编介绍一下.具体如下:1. 打开[腾讯手游助手]APP.2. 打开页面中,点击右上角的[三]3. 弹出窗口中点击"设置中心"的选 ...

  • 如何提高华为手机流畅度

    现在有很多人在使用华为手机,时间长之后会变得卡顿,有些用户想知道如何提高流畅度,接下来小编就给大家介绍一下具体的操作步骤.具体如下:1. 首先第一步根据下图所示,找到并点击[设置]图标.2. 第二步在 ...

  • 如何提高和平精英画面流畅度

    和平精英是现在非常流行的一款手机游戏,有些用户常常会遇到卡顿问题,想知道如何提高画面流畅度,接下来小编就给大家介绍一下具体的操作步骤.具体如下:1. 首先第一步先打开手机中的[和平精英],接着根据下图 ...

  • 如何提高win10系统运行流畅度

    现在大部分电脑都是win10系统,有些用户想知道如何提高运行流畅度,接下来小编就给大家介绍一下具体的操作步骤.更改新应用存储位置1. 首先第一步根据下图箭头所指,点击左下角[开始]图标.2. 第二步在 ...

  • win10提高系统流畅度的方法

    win10系统现在越来越普及,但很多小伙伴还是不太了解一些使用方法,今天小编教大家怎样提高win10系统的流畅度. 操作方法 01 流畅度主要受系统性能影响,我们从不同方面来提升系统流畅度. 02 首 ...

  • Android手机百度手机输入法怎么设置手写

    手机输入法设置手写输入,该软件是一款功能强大的智能手机输入法,词库精准,功能全面,极大提高输入效率,是手机用户最佳选择. 操作方法 01 下载最新的百度手机输入法,安装. 02 在"设置-区 ...