<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Android手勢學(xué)習之單點(diǎn)手勢

Android手勢學(xué)習之單點(diǎn)手勢

作者: 時(shí)間:2016-10-08 來(lái)源:網(wǎng)絡(luò ) 收藏

說(shuō)在前面,很早時(shí),android就開(kāi)始有支持單點(diǎn)手勢(單點(diǎn)觸控),到android2.2開(kāi)始支持多點(diǎn)觸控.

本文引用地址:http://dyxdggzs.com/article/201610/305460.htm

不同的動(dòng)作序列合起來(lái)表示不同的手勢。比如Fling手勢包括三個(gè)過(guò)程:將手指按觸在屏幕上,然后快速掃過(guò),最后

抬起手指,并且在抬起手指仍然在運動(dòng)(也就是說(shuō)抬起手指前,運動(dòng)的速度并不會(huì )減少).每一個(gè)步操作都會(huì )觸發(fā)相應的事件。

在View控件內,開(kāi)發(fā)人員可以像處理普通的單擊事件時(shí)使用setOnClickListener()和setOnLongClickListener()

方法一樣處理手勢。onTouchEvent()回調方法用于探測View區域內的用戶(hù)動(dòng)作。

onTouchEvent()回調方法只接收一個(gè)參數。MotionEvent對象。MotionEvent對象包含在View內觸發(fā)的所有類(lèi)型動(dòng)作

的細節,通過(guò)收集和分析連續的MotionEvent對象,開(kāi)發(fā)人員可以確定產(chǎn)生了何種手勢。你可以使用MotionEvent數據

來(lái)識別的探測任何你能想像的手勢。不過(guò)你也可以使用Android SDK 內置的手勢探測器來(lái)探測普通的用戶(hù)動(dòng)作。

android目前擁有兩個(gè)不同的類(lèi)用于手勢探測。

(1) GestureDetector類(lèi)可以用于探測一般的單點(diǎn)觸控手勢。

(2) ScaleGestureDetector可以用來(lái)探測多點(diǎn)縮放操作手勢。

除了普通的方向性手勢,你還可以使用API level 4中引入的android.gesture包中的GestureOverlayView來(lái)識別命令手勢。

下面主要是處理普通單點(diǎn)觸控手勢

API level 1中引入的GestureDetector類(lèi)可以用來(lái)探測單個(gè)手勢。GestureDetector類(lèi)所支持的單指手勢包括以下幾種。

onDown:當用戶(hù)第一次按觸屏幕時(shí)觸發(fā)。

onShowPress:當用戶(hù)按觸屏幕,并且在抬起或移動(dòng)手指之前觸發(fā):用于顯示顯示地指示按觸事件確已探測到。

onSingleTapUp:作為單擊(sinlge-tap)事件的一部分,在用戶(hù)從觸屏上抬起手指(使用抬起MotionEvent)時(shí)觸發(fā)。

onSingleTabConfirmed:單擊事件發(fā)生時(shí)調用。

onDoubleTab:雙擊(double-tap)事件發(fā)生時(shí)調用。

onDoubleTabEvent:在任何雙擊手勢發(fā)生時(shí)調用,包括按下(down),移動(dòng),或抬起(up)MotionEvent.

onLongPress:與onSingleTapUp類(lèi)似,但只在用戶(hù)保持按觸狀態(tài)且不移動(dòng)一定時(shí)間,并且不是標準的單擊操作時(shí)調用。

onScroll:用戶(hù)按下手指并且勻速移動(dòng)手指后,在抬起手指前調用。通常也稱(chēng)為“拖曳”(dragging).

onFling:在用戶(hù)按下并且加速移動(dòng)手指后,在抬起手指前調用,通常也稱(chēng)為拂動(dòng)(flick)手勢。

提示:你可以使用GestureDetector.SimpleOnGestureListener類(lèi)來(lái)監聽(tīng)由GestureDetector識別的任何手勢。

實(shí)例:在A(yíng)ndroid中實(shí)現圖片左右滑動(dòng)效果。

參考來(lái)自:

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

原文比較詳細,在此不轉。注意的一點(diǎn)就是,為了不帶那些不用的方法,可以繼承SimpleOnGestureListener類(lèi)。

說(shuō)一下,我個(gè)人的感受。

1.受到一些網(wǎng)上不正確的文章,實(shí)習OnTouchListener了。

結果,本來(lái)應該重寫(xiě)GestureDetector.OnGestureListener接口的

onTouchEvent方法時(shí),實(shí)現了onTouch()方法,害我老是看不到效果,這里弄,那里查,結果,找了開(kāi)始那本書(shū)學(xué)習。

系統學(xué)習之后,然后我看源代碼。發(fā)現了GestureDetector類(lèi)這樣的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**/

上面那個(gè)ensure讓我覺(jué)得應該檢查下是不是實(shí)現了。然后,結果就出來(lái)了。哈哈。太不小心了。

關(guān)于判斷手勢效果的代碼:

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.上面觸發(fā)事件時(shí),我寫(xiě)有Toast提醒代碼,但是實(shí)際上,用戶(hù)看不到。

2.第二 上面判斷手勢距離要求120px有點(diǎn)大長(cháng)了。

下面學(xué)習下其中起到關(guān)鍵作用的另外一個(gè)類(lèi)。ViewFlipper.

ViewFlipper的類(lèi)繼承關(guān)系如下:

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

看一下類(lèi)描述:(中文翻譯來(lái)自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中的兩個(gè)或兩個(gè)以上的視圖之間將執行一個(gè)簡(jiǎn)單的ViewAnimator動(dòng)畫(huà)。

1一次僅能顯示一個(gè)子視圖。如果需要,可以設置間隔時(shí)間使子視圖像幻燈片一樣自動(dòng)顯示。

1(譯者注:com.example.android.apis.view/Animation_2.java包含該類(lèi)示例程序)

2

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

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

5 */

經(jīng)過(guò)使用SimpleOnGestureListener類(lèi)后的全部Java代碼如下:

01package me.banxi.slideapp;

02

03import android.app.Activity;


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>