您的位置 首页 开关

Android手势学习之单点手势

说在前面,很早时,android就开始有支持单点手势(单点触控),到android2.2开始支持多点触控.不同的动作序列合起来表示不同的手势。比如Fling手势包括三个

说在前面,很早时,android就开端有支撑单点手势(单点触控),到android2.2开端支撑多点触控.

不同的动作序列合起来表明不同的手势。比方Fling手势包括三个进程:将手指按触在屏幕上,然后快速扫过,最终

抬起手指,而且在抬起手指仍然在运动(也便是说抬起手指前,运动的速度并不会削减).每一个步操作都会触发相应的事情。

在View控件内,开发人员能够像处理一般的单击事情时运用setOnClickListener()和setOnLongClickListener()

办法相同处理手势。onTouchEvent()回调办法用于勘探View区域内的用户动作。

onTouchEvent()回调办法只接纳一个参数。MotionEvent目标。MotionEvent目标包括在View内触发的一切类型动作

的细节,通过搜集和剖析接连的MotionEvent目标,开发人员能够确认产生了何种手势。你能够运用MotionEvent数据

来辨认的勘探任何你能想像的手势。不过你也能够运用Android SDK 内置的手势勘探器来勘探一般的用户动作。

android现在具有两个不同的类用于手势勘探。

(1) GestureDetector类能够用于勘探一般的单点触控手势。

(2) ScaleGestureDetector能够用来勘探多点缩放操作手势。

除了一般的方向性手势,你还能够运用API level 4中引进的android.gesture包中的GestureOverlayView来辨认指令手势。

下面主要是处理一般单点触控手势

API level 1中引进的GestureDetector类能够用来勘探单个手势。GestureDetector类所支撑的单指手势包括以下几种。

onDown:当用户第一次按触屏幕时触发。

onShowPress:当用户按触屏幕,而且在抬起或移动手指之前触发:用于显现显现地指示按触事情确已勘探到。

onSingleTapUp:作为单击(sinlge-tap)事情的一部分,在用户从触屏上抬起手指(运用抬起MotionEvent)时触发。

onSingleTabConfirmed:单击事情产生时调用。

onDoubleTab:双击(double-tap)事情产生时调用。

onDoubleTabEvent:在任何双击手势产生时调用,包括按下(down),移动,或抬起(up)MotionEvent.

onLongPress:与onSingleTapUp相似,但只在用户坚持按触状况且不移动必定时刻,而且不是规范的单击操作时调用。

onScroll:用户按下手指而且匀速移动手指后,在抬起手指前调用。一般也称为“拖曳”(dragging).

onFling:在用户按下而且加快移动手指后,在抬起手指前调用,一般也称为拂动(flick)手势。

提示:你能够运用GestureDetector.SimpleOnGestureListener类来监听由GestureDetector辨认的任何手势。

实例:在Android中完成图片左右滑动作用。

参阅来自:

http://www.cnblogs.com/hanyonglu/archive/2012/02/13/2349827.html

原文比较具体,在此不转。留意的一点便是,为了不带那些不必的办法,能够承继SimpleOnGestureListener类。

说一下,我个人的感触。

1.遭到一些网上不正确的文章,实习OnTouchListener了。

成果,原本应该重写GestureDetector.OnGestureListener接口的

onTouchEvent办法时,完成了onTouch()办法,害我老是看不到作用,这里弄,那里查,成果,找了开端那本书学习。

体系学习之后,然后我看源代码。发现了GestureDetector类这样的javadoc:

1/**

2* To use this class:

3 *

    4 *

  • Create an instance of the {@code GestureDetector} for your {@link View}

    5 *

  • In the {@link View#onTouchEvent(MotionEvent)} method ensure you call

    6 * {@link #onTouchEvent(MotionEvent)}. The methods defined in your callback

    7 * will be executed when the events occur.

    8 *

9**/

上面那个ensure让我觉得应该查看下是不是完成了。然后,成果就出来了。哈哈。太不当心了。

关于判别手势作用的代码:

1Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT);

2 if (e1.getX() – e2.getX() > 120) {

3 this.mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));

4 this.mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));

5this.mFlipper.showNext();

6 return true;

7 }

1.上面触发事情时,我写有Toast提示代码,可是实际上,用户看不到。

2.第二 上面判别手势间隔要求120px有点大长了。

下面学习下其间起到关键作用的别的一个类。ViewFlipper.

ViewFlipper的类承继联系如下:

ViewFlipper->ViewAnimator->FrameLayout->ViewGroup->View->Object

看一下类描绘:(中文翻译来自Android中文翻译组)

1/**

2 * Simple {@link ViewAnimator} that will animate between two or more views

3 * that have been added to it. Only one child is shown at a time. If

4 * requested, can automatically flip between each child at a regular interval.

5 *

6被添加到ViewFlipper中的两个或两个以上的视图之间将履行一个简略的ViewAnimator动画。

1一次仅能显现一个子视图。假如需求,能够设置间隔时刻使子视图画幻灯片相同主动显现。

1(译者注:com.example.android.apis.view/Animation_2.java包括该类示例程序)

2

3 * @attr ref android.R.styleable#ViewFlipper_flipInterval

4 * @attr ref android.R.styleable#ViewFlipper_autoStart

5 */

通过运用SimpleOnGestureListener类后的悉数Java代码如下:

01package me.banxi.slideapp;

02

03import android.app.Activity;

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/kaiguan/298244.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部