所谓手势操作,类似跳舞机、EZdancer~这些利用不同动作和音符让人手舞足蹈一样,那么Android这里的手势只是让我们在游戏和软件中的操作有了更多的花样和玩法,根据玩家接触屏幕时间的长短,在屏幕上滑动的距离,按下抬起的时间等进行了包装,其实就是Android 对触屏处理做了包装和处理。
多时候,利用触摸屏的Fling、Scroll等Gesture(手势)操作来操作会使得应用程序 的用户体验大大提升,比如用Scroll手势在 浏览器中滚屏,用Fling在阅读器中翻页等。在Android 系统中,手势的识别是通过 GestureDetector.OnGestureListener接口来实现的,不过William翻遍了Android的官方文档也没有找到一个相 关的例子,API Demo中的TouchPaint也仅仅是提到了onTouch事件的处理,没有涉及到手势。Android Developer讨论组里也有不少人有和我类似的问题,结合他们提到的方法和我所做的实验,我将给大家简单讲述一下Android中手势识别的实现。
下面我讲解一个实例来说明Gesture手势操作。
private ViewFlipper flipper;
private GestureDetector detector;
detector = new GestureDetector(this);//
detector.setIsLongpressEnabled(true);
flipper = new ViewFlipper(this);
flipper.setBackgroundColor(Color.WHITE);
flipper.addView(addTextView("第一美女", 0));//
flipper.addView(addTextView("第二美女", 1));
flipper.addView(addTextView("第三美女", 2));
flipper.addView(addTextView("第四美女", 3));
flipper.addView(addTextView("第五美女", 4));
flipper.addView(addTextView("第六美女", 5));
flipper.addView(addTextView("第七美女", 6));//
flipper.addView(addTextView("第八美女", 7));
flipper.addView(addTextView("第九美女", 8));
flipper.addView(addTextView("第十美女", 9));
setContentView(flipper);
而addTextView方法的实现细节如下所示:
private View addTextView(String text, int i) {
TextView tv = new TextView(this);
tv.setText(text);
tv.setGravity(1);
LinearLayout output = new LinearLayout(this);
output.setOrientation(LinearLayout.VERTICAL);
Drawable dabg;
switch (i) {
case 0:
dabg = this.getResources().getDrawable(R.drawable.a1);
output.setBackgroundDrawable(dabg);
break;
case 1:
dabg = this.getResources().getDrawable(R.drawable.a2);
output.setBackgroundDrawable(dabg);
break;
case 2:
dabg = this.getResources().getDrawable(R.drawable.a3);
output.setBackgroundDrawable(dabg);
break;
case 3:
dabg = this.getResources().getDrawable(R.drawable.a4);
output.setBackgroundDrawable(dabg);
break;
case 4:
dabg = this.getResources().getDrawable(R.drawable.a5);
output.setBackgroundDrawable(dabg);
break;
case 5:
dabg = this.getResources().getDrawable(R.drawable.a6);
output.setBackgroundDrawable(dabg);
break;
case 6:
dabg = this.getResources().getDrawable(R.drawable.a7);
output.setBackgroundDrawable(dabg);
break;
case 7:
dabg = this.getResources().getDrawable(R.drawable.a8);
output.setBackgroundDrawable(dabg);
break;
case 8:
dabg = this.getResources().getDrawable(R.drawable.a9);
output.setBackgroundDrawable(dabg);
break;
case 9:
dabg = this.getResources().getDrawable(R.drawable.a10);
output.setBackgroundDrawable(dabg);
break;
}
output.addView(tv);
return output;
}
将图片添加到ViewFlipper对象中了。然后要通过手势操