日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android手势操作耍起来!

發布時間:2024/3/12 Android 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android手势操作耍起来! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 前言
  • 初步了解手勢操作
  • 六個重寫方法
  • 小栗子體驗一下
  • 別忘了雙擊事件
  • 最后

前言

手勢操作是Android交互當中至關重要的. 可以說, 如果一個軟件沒有好的手勢操作, 就不能將其定義為移動端的軟件. 這里來看下谷歌提供的GestureDetector類. 搭配屬性動畫使用, 效果更好哦.


初步了解手勢操作

先來一段可以快速了解手勢操作類的代碼. 這里用到了GestureDetector.SimpleOnGestureListener(), 可以暫時理解為是一個適配器, 快速實現GestureDetector.OnGestureListener接口中要實現的方法. 這樣的話, 你就可以按需實現, 不用全部重寫所有方法.

public class MainActivity extends AppCompatActivity {private GestureDetector mGestureDetector;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button btHello = (Button) findViewById(R.id.bt_hello);mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {@Overridepublic boolean onDown(MotionEvent e) {Toast.makeText(MainActivity.this,"onDown", Toast.LENGTH_SHORT).show();return false;}@Overridepublic void onShowPress(MotionEvent e) {Toast.makeText(MainActivity.this,"onShowPress", Toast.LENGTH_SHORT).show();}@Overridepublic boolean onSingleTapUp(MotionEvent e) {Toast.makeText(MainActivity.this,"onSingleTapUp", Toast.LENGTH_SHORT).show();return false;}@Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {Toast.makeText(MainActivity.this,"onScroll", Toast.LENGTH_SHORT).show();return false;}@Overridepublic void onLongPress(MotionEvent e) {Toast.makeText(MainActivity.this,"onLongPress", Toast.LENGTH_SHORT).show();}@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {Toast.makeText(MainActivity.this,"onFling", Toast.LENGTH_SHORT).show();return false;}});btHello.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {return mGestureDetector.onTouchEvent(event);}});} }

可以看到手勢操作其實就是豐富了原來的觸摸事件. 在觸摸操作實現那里進行攔截. 然后有六個可重寫的方法. 來分析一下這幾個方法.


六個重寫方法

  • onDown 這個很好理解了, 就是按下的操作.
  • onShowPress 這個的意思是按壓. 什么是按壓, 就是比按下更用力, 更多一點時間.
  • onLongPress 這個就是長按了. 比方說你一直按著按鈕, 那么執行順序就是onDown–>onShowPress–>onLongPress.
  • onSingleTapUp 這個就是單點抬手. 就是你單擊按鈕抬手的那下. 但是有一點要注意. 如果你點擊時長小于onLongPress, 它是會觸發的, 如果大于onLongPress, 它就不會觸發了.
  • onScroll 拖動相應. 就是拖著某個控件, 這個就會觸發.
  • onFling 滑動相應. 就是快速劃一下, 它就會觸發.

小栗子體驗一下

也說了一些, 我們來體驗下.

我們拎著按鈕繞了一圈, 我們看下后臺的打印.

onDown onShowPress onScroll onScroll onScroll onScroll onScroll onScroll

然后我們再來一次, 先點擊一下, 再繞一圈. 點擊時候發生了:

onDown onShowPress onSingleTapUp

繞圈時候是:

onDown onShowPress onScroll onScroll onScroll onFling

我們先看下點擊事件, 點下去就是onDown, 稍微多點一會兒就會觸發onShowPress, 然后抬手就是onSingleTapUp.

然后分析第一次繞圈, 點下去onDown, 停留onShowPress, 拖動onScroll, 之后就是多次拖動. 很好理解. 那么再看第二次, 多了一個onFling, 而且是在最后, 就是說, 我們的拖動操作, 最后抬手的時候會觸發onFling, 但是不是100%. 所以處理的時候要區分這兩種操作, 以免沖突.


別忘了雙擊事件

在pc上, 雙擊事件是非常常見的, 可以到了移動端, 這種操作就用的不那么多了. 不過我們還是來看看. 先上栗子:

@Override public boolean onDoubleTap(MotionEvent e) {Toast.makeText(MainActivity.this,"onDoubleTap", Toast.LENGTH_SHORT).show();LogUtil.i("onDoubleTap");return super.onDoubleTap(e); }

雙擊按鈕之后:

onDown onShowPress onSingleTapUp onDoubleTap onDown onShowPress

這里出現了新加入的onDoubleTap, 也就是快速點擊被識別到了.
為什么可以直接加入呢, 因為GestureDetector.SimpleOnGestureListener()之中也實現了GestureDetector.OnDoubleTapListener中的內容. 如果你不使用GestureDetector.SimpleOnGestureListener()的話, 可以使用如下代碼實現GestureDetector.OnDoubleTapListener接口.

class MyDoubleTap implements GestureDetector.OnDoubleTapListener{@Overridepublic boolean onSingleTapConfirmed(MotionEvent e) {return false;}@Overridepublic boolean onDoubleTap(MotionEvent e) {return false;}@Overridepublic boolean onDoubleTapEvent(MotionEvent e) {return false;} }

所以說GestureDetector.SimpleOnGestureListener()真的很好用啊, 但是如果你有多個對象要使用的話, 還是老實復寫吧.


最后

還有很多新的手勢操作, 絕對不止我文章中寫的這些. 但是這些已經足夠入門和大多數手勢了. 喜歡記得點贊或者關注我哦.


總結

以上是生活随笔為你收集整理的Android手势操作耍起来!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。