欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳談OnTouchListener與OnGestureListener的區(qū)別

 更新時間:2017年04月11日 11:02:43   投稿:jingxian  
下面小編就為大家?guī)硪黄斦凮nTouchListener與OnGestureListener的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

Android事件處理機(jī)制是基于Listener實現(xiàn)的,比如觸摸屏相關(guān)的事件,是通過OnTouchListener實現(xiàn)的;而手勢是通過OnGestureListener實現(xiàn)的,那么這兩者有什么關(guān)聯(lián)呢?

OnTouchListener

OnTouchListener接口中包含一個onTouch()方法,直接看一個例子:

public class MainActivity extends Activity implements OnTouchListener {
	public void onCreate(Bundle outState) {
  	super.onCreate(outState);
  	setContentView(R.layout.main);
  	TextView tv = (TextView) findViewById(R.id.tv);
  	tv.setOnTouchListener(this);
  }

  public boolean onTouch(View v, MotionEvent event) {
  	Toast.makeText(this, "Touch Touch", Toast.LENGTH_SHORT).show();
		return false ; 
  }
}

我們可以通過MotionEvent的getAction()方法來獲取Touch事件的類型,包括 ACTION_DOWN(按下觸摸屏), ACTION_MOVE(按下觸摸屏后移動受力點), ACTION_UP(松開觸摸屏)和ACTION_CANCEL(不會由用戶直接觸發(fā))。借助對于用戶不同操作的判斷,結(jié)合getRawX()、 getRawY()、getX()和getY()等方法來獲取坐標(biāo)后,我們可以實現(xiàn)諸如拖動某一個按鈕,拖動滾動條等功能。

可以看到OnTouchListener只能監(jiān)聽到三種觸摸事件,即按下,移動,松開,如果想要監(jiān)聽到雙擊、滑動、長按等復(fù)雜的手勢操作,這個時候就必須得用到OnGestureListener了。

OnGestureListener

接著上面的例子,這次加入手勢監(jiān)聽:

public class MainActivity extends Activity implements OnTouchListener, OnGestureListener {
	private GestureDetector mGestureDetector; 

	public void onCreate(Bundle outState) {
  	super.onCreate(outState);
  	setContentView(R.layout.main);

  	mGestureDetector = new GestureDetector(this);
  	TextView tv = (TextView) findViewById(R.id.tv);
  	tv.setOnTouchListener(this);
  }

  public boolean onTouch(View v, MotionEvent event) {
  	return mGestureDetector.onTouchEvent(event);
  }

  // 用戶輕觸觸摸屏,由1個MotionEvent ACTION_DOWN觸發(fā) 
  public boolean onDown(MotionEvent arg0) {
		Log.i("MyGesture", "onDown");
		Toast.makeText(this, "onDown", Toast.LENGTH_SHORT).show();   
		return true;
	}

	// 用戶輕觸觸摸屏,尚未松開或拖動,由一個1個MotionEvent ACTION_DOWN觸發(fā), 注意和onDown()的區(qū)別,強(qiáng)調(diào)的是沒有松開或者拖動的狀態(tài)
	public void onShowPress(MotionEvent e) {
		Log.i("MyGesture", "onShowPress");      
		Toast.makeText(this, "onShowPress", Toast.LENGTH_SHORT).show();
	}

	// 用戶(輕觸觸摸屏后)松開,由一個1個MotionEvent ACTION_UP觸發(fā)

	public  boolean onSingleTapUp(MotionEvent e) {
		Log.i("MyGesture", "onSingleTapUp");
		Toast.makeText(this, "onSingleTapUp", Toast.LENGTH_SHORT).show();
		return true;
	}

	// 用戶按下觸摸屏、快速移動后松開,由1個MotionEvent ACTION_DOWN, 多個ACTION_MOVE, 1個ACTION_UP觸發(fā)    

	public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {  
		Log.i("MyGesture", "onFling");
		Toast.makeText(this, "onFling", Toast.LENGTH_LONG).show();   
		return true;
	}

 	// 用戶按下觸摸屏,并拖動,由1個MotionEvent ACTION_DOWN, 多個ACTION_MOVE觸發(fā)

	public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {      
		Log.i("MyGesture", "onScroll");
 		Toast.makeText(this, "onScroll", Toast.LENGTH_LONG).show();
		return true;
 	}

 	// 用戶長按觸摸屏,由多個MotionEvent ACTION_DOWN觸發(fā)

	public  void onLongPress(MotionEvent e) {
		Log.i("MyGesture", "onLongPress");
		Toast.makeText(this, "onLongPress", Toast.LENGTH_LONG).show();
 	}
}

以上這篇詳談OnTouchListener與OnGestureListener的區(qū)別就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android手勢操作示例(上/下/左/右的判斷)

    Android手勢操作示例(上/下/左/右的判斷)

    這篇文章主要介紹了Android手勢操作方法,包含了針對上、下、左、右等方向的判斷,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • 詳解Android的網(wǎng)絡(luò)數(shù)據(jù)存儲

    詳解Android的網(wǎng)絡(luò)數(shù)據(jù)存儲

    LeanCloud是一種簡單高效的數(shù)據(jù)和文件存儲服務(wù),本文主要介紹了利用LeanCloud來進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)的存儲的實現(xiàn)方法。具有很好的參考價值,需要的朋友一起來看下吧
    2016-12-12
  • 詳解Android 在 ViewPager 中使用 Fragment 的懶加載

    詳解Android 在 ViewPager 中使用 Fragment 的懶加載

    本篇文章主要介紹了Android 在 ViewPager 中使用 Fragment 的懶加載,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Android開發(fā)vsts?agent支持自定義task過程詳解

    Android開發(fā)vsts?agent支持自定義task過程詳解

    這篇文章主要介紹了Android開發(fā)vsts?agent支持自定義task過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • Activity生命周期實例講解

    Activity生命周期實例講解

    這篇文章介紹了Activity中7個與生命周期有關(guān)的函數(shù),使用實例代碼說明他們的使用方法
    2013-11-11
  • mac開發(fā)android環(huán)境搭建步驟圖解

    mac開發(fā)android環(huán)境搭建步驟圖解

    這里比較詳細(xì)的來總結(jié)下mac開發(fā)android的環(huán)境搭建步驟安裝過程,希望對一些正準(zhǔn)備配置Android開發(fā)環(huán)境的小伙伴們有一定幫助
    2014-01-01
  • Android高級UI特效仿直播點贊動畫效果

    Android高級UI特效仿直播點贊動畫效果

    這篇文章主要介紹了Android高級UI特效仿直播點贊動畫效果,最近比較火的抖音快手直播視頻都有這樣的效果,下面腳本之家小編給大家?guī)韆ndroid 仿直播點贊效果的實現(xiàn)代碼,需要的朋友參考下吧
    2018-03-03
  • 更新至Android Studio4.1后發(fā)現(xiàn)as打不開的解決方法(原因分析)

    更新至Android Studio4.1后發(fā)現(xiàn)as打不開的解決方法(原因分析)

    這篇文章主要介紹了更新至Android Studio4.1后發(fā)現(xiàn)as打不開的解決方案,本文給大家分享問題所在原因給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Android 添加系統(tǒng)服務(wù)的方法詳解

    Android 添加系統(tǒng)服務(wù)的方法詳解

    這篇文章主要介紹了Android 添加系統(tǒng)服務(wù)的方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Android多線程之同步鎖的使用

    Android多線程之同步鎖的使用

    本篇文章主要介紹了Android多線程之同步鎖的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論