Android屏幕手勢檢測的實現(xiàn)代碼
Android 關(guān)于手勢的操作提供兩種形式:一種是針對用戶手指在屏幕上劃出的動作而進行移動的檢測,這些手勢的檢測通過android提供的監(jiān)聽器來實現(xiàn);另一種是用 戶手指在屏幕上滑動而形成一定的不規(guī)則的幾何圖形(即為多個持續(xù)觸摸事件在屏幕形成特定的形狀);本文給大家分享android屏幕手勢檢測的實現(xiàn)代碼。
Android屏幕手勢檢測的原理是由于觸摸事件的檢測與識別比較繁瑣,因此Android提供了手勢檢測器幫助開發(fā)者識別手勢。利用手勢檢測器可以自動辨別常用的幾個手勢事件,如點擊、長按、滑動等,從而使開發(fā)者專注于業(yè)務邏輯,不必在手勢的行為判斷上絞盡腦汁。
layout/activity_gesture_detector.xml界面布局代碼如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingTop="10dp"> <TextView android:id="@+id/tv_gesture" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="這里查看手勢結(jié)果" android:textColor="@color/black" android:textSize="17sp" /> </LinearLayout>
GestureDetectorActivity.java邏輯代碼如下:
package com.fukaimei.gesturedetector; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.GestureDetector; import android.view.MotionEvent; import android.widget.TextView; import com.fukaimei.gesturedetector.util.DateUtil; public class GestureDetectorActivity extends AppCompatActivity { private TextView tv_gesture; private GestureDetector mGesture; private String desc = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gesture_detector); tv_gesture = (TextView) findViewById(R.id.tv_gesture); mGesture = new GestureDetector(this, new MyGestureListener()); } public boolean dispatchTouchEvent(MotionEvent event) { mGesture.onTouchEvent(event); return true; } final class MyGestureListener implements GestureDetector.OnGestureListener { @Override public final boolean onDown(MotionEvent event) { // desc = String.format("%s%s 您按下來了\n", desc, DateUtil.getNowTime()); // tv_gesture.setText(desc); //onDown的返回值沒有作用,不影響其它手勢的處理 return true; } @Override public final boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { float offsetX = e1.getX() - e2.getX(); float offsetY = e1.getY() - e2.getY(); if (Math.abs(offsetX) > Math.abs(offsetY)) { if (offsetX > 0) { desc = String.format("%s%s 您向左滑動了一下\n", desc, DateUtil.getNowTime()); } else { desc = String.format("%s%s 您向右滑動了一下\n", desc, DateUtil.getNowTime()); } } else { if (offsetY > 0) { desc = String.format("%s%s 您向上滑動了一下\n", desc, DateUtil.getNowTime()); } else { desc = String.format("%s%s 您向下滑動了一下\n", desc, DateUtil.getNowTime()); } } tv_gesture.setText(desc); return true; } @Override public final void onLongPress(MotionEvent event) { desc = String.format("%s%s 您長按了一下下\n", desc, DateUtil.getNowTime()); tv_gesture.setText(desc); } @Override public final boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return false; } @Override public final void onShowPress(MotionEvent event) { } @Override public boolean onSingleTapUp(MotionEvent event) { desc = String.format("%s%s 您輕輕點了一下\n", desc, DateUtil.getNowTime()); tv_gesture.setText(desc); //返回true表示我已經(jīng)處理了,別處不要再處理這個手勢 return true; } } }
Demo程序運行效果界面截圖如下:
總結(jié)
以上所述是小編給大家介紹的Android屏幕手勢檢測的實現(xiàn)代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Android AccessibilityService實現(xiàn)微信搶紅包插件
這篇文章主要介紹了Android AccessibilityService實現(xiàn)微信搶紅包插件的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11Android9.0 SystemUI 網(wǎng)絡信號欄定制修改的流程解析
這篇文章主要介紹了Android9.0 SystemUI 網(wǎng)絡信號欄定制修改的流程,本文通過圖文實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11