陈俊彦
【摘 要】研究不同年齡段用户对各种触摸操作手势的掌握能力,测试不同手势在安卓设备上对小孩,中年人和老人的可用性。
【关键词】触摸屏操作手势;数据分析
中图分类号: TP391.41文献标识码: A文章编号: 2095-2457(2019)04-0127-002
DOI:10.19694/j.cnki.issn2095-2457.2019.04.051
0 引言
触摸屏界面有显而易见的优点,能够更快的与设备通过多点触控产生互动。[1]虽然多点触控手势在2009年之后就步入了发展高峰,但是关于智能设备上多点触控手势用户体验研究比较滞后。本文将对经常使用的8种基础手势进行实际测量研究,探讨不同年龄段的人群对操作手势的适应程度。
1 多点触控研究应用程序程序开发
多点触控(Multitouch),又称多重触控,多触控。是采用人机交互和硬件设备共同使用的技术。在没有传统输入设备的情况下,移动设备能够接收到多根手指进行手势识别、操控。常用的手势可以分为四大类8种,测试成功率和完成时间,每个受测者有两次机会,如若第一次完成,则不必第二次,反之,则需要进行第二次测试。
设计一个程序进行手势测量,目的是为了获取不同性别和年龄段对手势操作的适应度。
程序分成4部分,分别测试Tab类动作、Drag类动作、Scale类动作、Rotate类动作。
四类操作的源程序代码如下:
1.1 点击类动作
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (firstTime == 0) {
firstTime = System.currentTimeMillis();
}
break;
case MotionEvent.ACTION_UP:
break;
}
return super.onTouchEvent(event);
}
根据Android系统检测到的MotionEvent.ACTION_DOWN手势按下屏幕动作,记录按下时间。MotionEvent.ACTION_UP手势抬起屏幕动作,截止记录时间。
1.2 拖拽类动作
public boolean onTouchEvent(MotionEvent event) {
if (getFinalTime)
return false;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (startTime == 0) {
startTime = System.currentTimeMillis();
}
break;
case MotionEvent.ACTION_MOVE:
moveView(ivCat,event.getX(),event.getY() - Utils.getStatusBarHeight(this));
break;
case MotionEvent.ACTION_UP:
long l = System.currentTimeMillis();
if (Math.abs(ivCat.getX() - ivCatEmpty.getX()) < 10
&& Math.abs(ivCat.getY() - ivCatEmpty.getY()) < 10) {
mVibrator.vibrate(200);
tv1.setText("移动手势成功:" + (l - startTime) + "毫秒");
} else {
tv1.setText("移动手势失败:" + (l - startTime) + "毫秒");
}
tv1.setVisibility(View.VISIBLE);
ToastUtils.showToast("耗时:" + (l - startTime) + "毫秒");
getFinalTime = true;
break;
}
return super.onTouchEvent(event);
}
位移计算函数:
/* 设置View的布局属性,使得view随着手指移动 */
private void moveView(View view, float x, float y) {
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) view.getLayoutParams();
params.leftMargin = (int) x - ivCat.getWidth() / 2;
params.topMargin = (int) y - ivCat.getHeight() / 2;
view.setLayoutParams(params);
}
1.2.1 双指旋转
双指动作中,多了兩个MotionEvent。
case MotionEvent.ACTION_POINTER_DOWN:
case MotionEvent.ACTION_POINTER_UP:
MotionEvent.ACTION_POINTER_DOWN在多指按下屏幕时候产生,使用全局变量记录手指数量;
MotionEvent.ACTION_POINTER_UP 在多指离开屏幕时候产生,使用全局变量记录手指数量。
1.2.2 缩放类动作
双指缩放,需要处理MotionEvent.ACTION_POINTER_DOWN、MotionEvent.ACTION_POINTER_
UP两个事件。当双指接触屏幕之后,MotionEvent中返回的x,y坐标。getX(0),getY(0)返回第一指的屏幕坐标。getX(1),getY(1)返回第二指的屏幕坐标。通过spacing函数计算出两指的动态距离。然后与初始距离比较,所得的比值即为view需要缩放的倍数。
private float spacing(MotionEvent event) {
float x = event.getX(0) - event.getX(1);
float y = event.getY(0) - event.getY(1);
return (float) Math.sqrt(x * x + y * y);
}
2 实验检测结果
实验共征集了30名受测者,包括10名老年人,10名成年人及10名儿童。在测试之前,我们对受测者进行了调查,他们全部无认知障碍,拥有正常的肢体运动能力,通过得到到具体的测试数据分析得到如下结论:
(1)单击任务和长按任务在各个年龄段都表现优异。在所有任务中,成年组都较为稳定,在双击和拖拽任务中老年组表现较差,儿童组在双指旋转任务和缩小任务中表现较差。
(2)男性有着较好的任务完成成功率,随着任务变得困难,男女完成任务的成功率都逐渐降低,与女性相比,男性显然有着比较好的适应能力,女性在双指旋转的任务中成功率出现了显著地降低。
(3)儿童组在整体上学习速度较快,随着年龄的增长,速度逐渐变慢。对于完成度来说,最好的是成年组,老人组和儿童组相对较弱。
综上,对老年人手势选择应尽量简单、易完成且应用较多。成年人对手势不敏感,儿童不要选择过于精细的手势。
【参考文献】
[1]Hwayeong Kang, Gwanseob Shin. Effects of touch target location on performance and physical demands of computer touchscreen use[J]. Applied Ergonomics, 2017, 61.
[2]吕明,吕延.触摸屏的技术现状、发展趋势及市场前景[J].机床电器.2012(03).
[3]陶达,袁娟,刘双,曲行达,陈星宇.触摸屏按键特征因素对键盘输入操作可用性的影响[J].《人类工效学》,2016,22(5):1-6.