Android屏幕手勢(shì)檢測(cè)的實(shí)現(xiàn)代碼
Android 關(guān)于手勢(shì)的操作提供兩種形式:一種是針對(duì)用戶手指在屏幕上劃出的動(dòng)作而進(jìn)行移動(dòng)的檢測(cè),這些手勢(shì)的檢測(cè)通過(guò)android提供的監(jiān)聽(tīng)器來(lái)實(shí)現(xiàn);另一種是用 戶手指在屏幕上滑動(dòng)而形成一定的不規(guī)則的幾何圖形(即為多個(gè)持續(xù)觸摸事件在屏幕形成特定的形狀);本文給大家分享android屏幕手勢(shì)檢測(cè)的實(shí)現(xiàn)代碼。
Android屏幕手勢(shì)檢測(cè)的原理是由于觸摸事件的檢測(cè)與識(shí)別比較繁瑣,因此Android提供了手勢(shì)檢測(cè)器幫助開(kāi)發(fā)者識(shí)別手勢(shì)。利用手勢(shì)檢測(cè)器可以自動(dòng)辨別常用的幾個(gè)手勢(shì)事件,如點(diǎn)擊、長(zhǎng)按、滑動(dòng)等,從而使開(kāi)發(fā)者專注于業(yè)務(wù)邏輯,不必在手勢(shì)的行為判斷上絞盡腦汁。
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="這里查看手勢(shì)結(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 您按下來(lái)了\n", desc, DateUtil.getNowTime());
// tv_gesture.setText(desc);
//onDown的返回值沒(méi)有作用,不影響其它手勢(shì)的處理
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 您向左滑動(dòng)了一下\n", desc, DateUtil.getNowTime());
} else {
desc = String.format("%s%s 您向右滑動(dòng)了一下\n", desc, DateUtil.getNowTime());
}
} else {
if (offsetY > 0) {
desc = String.format("%s%s 您向上滑動(dòng)了一下\n", desc, DateUtil.getNowTime());
} else {
desc = String.format("%s%s 您向下滑動(dòng)了一下\n", desc, DateUtil.getNowTime());
}
}
tv_gesture.setText(desc);
return true;
}
@Override
public final void onLongPress(MotionEvent event) {
desc = String.format("%s%s 您長(zhǎng)按了一下下\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 您輕輕點(diǎn)了一下\n", desc, DateUtil.getNowTime());
tv_gesture.setText(desc);
//返回true表示我已經(jīng)處理了,別處不要再處理這個(gè)手勢(shì)
return true;
}
}
}
Demo程序運(yùn)行效果界面截圖如下:

總結(jié)
以上所述是小編給大家介紹的Android屏幕手勢(shì)檢測(cè)的實(shí)現(xiàn)代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Android AccessibilityService實(shí)現(xiàn)微信搶紅包插件
這篇文章主要介紹了Android AccessibilityService實(shí)現(xiàn)微信搶紅包插件的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
Android編程顯示網(wǎng)絡(luò)上的圖片實(shí)例詳解
這篇文章主要介紹了Android編程顯示網(wǎng)絡(luò)上的圖片,結(jié)合實(shí)例形式詳細(xì)分析了Android顯示網(wǎng)絡(luò)圖片的流程與具體操作技巧,需要的朋友可以參考下2016-10-10
Android升級(jí)支持庫(kù)版本遇到的兩個(gè)問(wèn)題詳解
安卓平臺(tái)其中一個(gè)很牛逼的地方在于它支持各種不同的設(shè)備。從你的平板電腦,到你的手機(jī),電視等,安卓無(wú)處不在。這篇文章主要給大家介紹了關(guān)于Android升級(jí)支持庫(kù)版本遇到的兩個(gè)問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-10-10
Android9.0 SystemUI 網(wǎng)絡(luò)信號(hào)欄定制修改的流程解析
這篇文章主要介紹了Android9.0 SystemUI 網(wǎng)絡(luò)信號(hào)欄定制修改的流程,本文通過(guò)圖文實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11
Flutter實(shí)現(xiàn)漸變色加描邊字體效果
這篇文章介紹了Flutter實(shí)現(xiàn)漸變色描邊字體效果的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-11-11
Android檢測(cè)url地址是否可達(dá)的兩種方法
今天小編就為大家分享一篇Android檢測(cè)url地址是否可達(dá)的兩種方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Android開(kāi)發(fā)從相機(jī)或相冊(cè)獲取圖片裁剪
當(dāng)我們需要上傳圖片時(shí),想要裁剪成我們需要的尺寸大小,android手機(jī)都帶有這個(gè)功能,很容易,那么此功能是如何實(shí)現(xiàn)的呢?下面小編給大家介紹Android開(kāi)發(fā)從相機(jī)或相冊(cè)獲取圖片裁剪,需要的朋友可以參考下2015-10-10
Android編程開(kāi)發(fā)中的正則匹配操作示例
這篇文章主要介紹了Android編程開(kāi)發(fā)中的正則匹配操作,結(jié)合具體實(shí)例形式分析了Android針對(duì)手機(jī)號(hào)、郵箱及IP的正則匹配操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-06-06

