锤子发布会中提到的两个杀手级功能让我这个十分初级的Android开发者产生了一些思考,那就是这两个功能是如何实现的?
这两个功能应该属于系统级的功能,手指接触屏幕的区域大小让我想到之前看过的一篇关于Android触摸事件的文章,其中提到了Android有关于触摸区域大小的Api,接下来找到了一篇2013年的博客
MotionEvent的几个函数
下面的方法都支持多点触摸,即可以对单个触摸点调用下面的方法
1.1 getPressure()
这个api 可以获取到手指触摸屏幕时候的压力,但是需要硬件和驱动支持...
它有助于我们做出更加拟物化的设计,比如:手绘。可以根据手指压力更好地模拟画笔的出息和颜色的深浅,让人感觉更真实。
对控件的点击操作。 可以根据手指压力来设置控件(如按钮)的pressed效果,比如下凹的幅度。
新操作方式。及手指不离开屏幕,通过调整手指压力来达到操作目的,比如模拟汽车加油门
1.2 getSize()
获取手指触摸屏幕时与屏幕的接触面积
这个可以用来识别fattouch events,也就是很大面积的触摸事件,这个时候往往有可能是用户的误操作。
1.3 getToolType()
获取触发当前事件的物体类型:手指、触控笔或者鼠标(触控版)
这个我也没想到有啥用处。。。ClipData
ClipData.addItem(ClipData.Item item)
这个api可以将文本、资源地址和Intent放在一个ClipData对象里面,然后保存在系统的剪切板中,而系统的剪切板是可以跨应用程序传递数据的,因此可以支持以下功能:跨应用程序复制、粘贴各种文件(图片、视频)等,类似windows的剪切板。
由于资源地址可以是本地或者来自网络,因此还可以直接copy网络端的资源,类似于PC端的有道云笔记,直接将网页的内容copy到本地。ClipData本身已经支持带HTML标签的格式化文本了。。
直接copy应用程序的快捷方式,Intent就相当于启动一个界面的快捷方式,因此理论上讲可以copy跳转到应用程序任何界面的快捷方式,比如拨打某人的电话,发起和某人的视频聊天。
1.3 Vibrator
Vibrator.vibrate (long[] pattern, intrepeat)
这个api可以控制震动马达的节奏,可以支持一下功能:
- 让用户自定义震动节奏,iOS已经有这个功能了。
- 内置几套震动节奏,和闹铃铃音配合好,增加趣味性。