陳俊彥
【摘 要】研究不同年齡段用戶對各種觸摸操作手勢的掌握能力,測試不同手勢在安卓設(shè)備上對小孩,中年人和老人的可用性。
【關(guān)鍵詞】觸摸屏操作手勢;數(shù)據(jù)分析
中圖分類號: TP391.41文獻(xiàn)標(biāo)識碼: A文章編號: 2095-2457(2019)04-0127-002
DOI:10.19694/j.cnki.issn2095-2457.2019.04.051
0 引言
觸摸屏界面有顯而易見的優(yōu)點(diǎn),能夠更快的與設(shè)備通過多點(diǎn)觸控產(chǎn)生互動。[1]雖然多點(diǎn)觸控手勢在2009年之后就步入了發(fā)展高峰,但是關(guān)于智能設(shè)備上多點(diǎn)觸控手勢用戶體驗(yàn)研究比較滯后。本文將對經(jīng)常使用的8種基礎(chǔ)手勢進(jìn)行實(shí)際測量研究,探討不同年齡段的人群對操作手勢的適應(yīng)程度。
1 多點(diǎn)觸控研究應(yīng)用程序程序開發(fā)
多點(diǎn)觸控(Multitouch),又稱多重觸控,多觸控。是采用人機(jī)交互和硬件設(shè)備共同使用的技術(shù)。在沒有傳統(tǒng)輸入設(shè)備的情況下,移動設(shè)備能夠接收到多根手指進(jìn)行手勢識別、操控。常用的手勢可以分為四大類8種,測試成功率和完成時間,每個受測者有兩次機(jī)會,如若第一次完成,則不必第二次,反之,則需要進(jìn)行第二次測試。
設(shè)計一個程序進(jìn)行手勢測量,目的是為了獲取不同性別和年齡段對手勢操作的適應(yīng)度。
程序分成4部分,分別測試Tab類動作、Drag類動作、Scale類動作、Rotate類動作。
四類操作的源程序代碼如下:
1.1 點(diǎn)擊類動作
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);
}
根據(jù)Android系統(tǒng)檢測到的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);
}
位移計算函數(shù):
/* 設(shè)置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 雙指旋轉(zhuǎn)
雙指動作中,多了兩個MotionEvent。
case MotionEvent.ACTION_POINTER_DOWN:
case MotionEvent.ACTION_POINTER_UP:
MotionEvent.ACTION_POINTER_DOWN在多指按下屏幕時候產(chǎn)生,使用全局變量記錄手指數(shù)量;
MotionEvent.ACTION_POINTER_UP ? 在多指離開屏幕時候產(chǎn)生,使用全局變量記錄手指數(shù)量。
1.2.2 縮放類動作
雙指縮放,需要處理MotionEvent.ACTION_POINTER_DOWN、MotionEvent.ACTION_POINTER_
UP兩個事件。當(dāng)雙指接觸屏幕之后,MotionEvent中返回的x,y坐標(biāo)。getX(0),getY(0)返回第一指的屏幕坐標(biāo)。getX(1),getY(1)返回第二指的屏幕坐標(biāo)。通過spacing函數(shù)計算出兩指的動態(tài)距離。然后與初始距離比較,所得的比值即為view需要縮放的倍數(shù)。
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 實(shí)驗(yàn)檢測結(jié)果
實(shí)驗(yàn)共征集了30名受測者,包括10名老年人,10名成年人及10名兒童。在測試之前,我們對受測者進(jìn)行了調(diào)查,他們?nèi)繜o認(rèn)知障礙,擁有正常的肢體運(yùn)動能力,通過得到到具體的測試數(shù)據(jù)分析得到如下結(jié)論:
(1)單擊任務(wù)和長按任務(wù)在各個年齡段都表現(xiàn)優(yōu)異。在所有任務(wù)中,成年組都較為穩(wěn)定,在雙擊和拖拽任務(wù)中老年組表現(xiàn)較差,兒童組在雙指旋轉(zhuǎn)任務(wù)和縮小任務(wù)中表現(xiàn)較差。
(2)男性有著較好的任務(wù)完成成功率,隨著任務(wù)變得困難,男女完成任務(wù)的成功率都逐漸降低,與女性相比,男性顯然有著比較好的適應(yīng)能力,女性在雙指旋轉(zhuǎn)的任務(wù)中成功率出現(xiàn)了顯著地降低。
(3)兒童組在整體上學(xué)習(xí)速度較快,隨著年齡的增長,速度逐漸變慢。對于完成度來說,最好的是成年組,老人組和兒童組相對較弱。
綜上,對老年人手勢選擇應(yīng)盡量簡單、易完成且應(yīng)用較多。成年人對手勢不敏感,兒童不要選擇過于精細(xì)的手勢。
【參考文獻(xiàn)】
[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]呂明,呂延.觸摸屏的技術(shù)現(xiàn)狀、發(fā)展趨勢及市場前景[J].機(jī)床電器.2012(03).
[3]陶達(dá),袁娟,劉雙,曲行達(dá),陳星宇.觸摸屏按鍵特征因素對鍵盤輸入操作可用性的影響[J].《人類工效學(xué)》,2016,22(5):1-6.