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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android dispatchtouchevent 用法,android – 检测每个触摸事件,而不会覆盖dispatchTouchEvent()?...

發布時間:2025/4/5 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android dispatchtouchevent 用法,android – 检测每个触摸事件,而不会覆盖dispatchTouchEvent()?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

回答這可能對他人有幫助.答案將有助于需要攔截觸摸事件的庫.

如果你不想覆蓋dispatchTouchEvent()(Imp,如果你是編程庫)方法的活動,那么我們可以使用Window.Callback類.創建您自己的Window.Callback實現作為下面的代碼,然后將其設置為從您的活動回調Window對象.

在下面的代碼片段中,為您獲取的Activity上下文實例做.

//set Window.Callback for getting touch event

final Window win = context.getWindow();

final Window.Callback localCallback = win.getCallback();

win.setCallback(new MyWindowCallback(localCallback));

MyWindowCallback類將為:

您將在MyWindowCallback的dispatchTouchEventMethod()中獲取TouchEvent,您可以根據需要使用這些.

import android.annotation.SuppressLint;

import android.util.Log;

import android.view.ActionMode;

import android.view.KeyEvent;

import android.view.Menu;

import android.view.MenuItem;

import android.view.MotionEvent;

import android.view.View;

import android.view.Window;

import android.view.WindowManager;

import android.view.accessibility.AccessibilityEvent;

public class MyWindowCallback implements Window.Callback{

Window.Callback localCallback;

public MyWindowCallback(Window.Callback localCallback) {

this.localCallback = localCallback;

}

@Override

public boolean dispatchKeyEvent(KeyEvent event) {

return localCallback.dispatchKeyEvent(event);

}

@SuppressLint("NewApi")

@Override

public boolean dispatchKeyShortcutEvent(KeyEvent event) {

return localCallback.dispatchKeyShortcutEvent(event);

}

@Override

public boolean dispatchTouchEvent(MotionEvent event) {

//YOU WILL GET TOUCH EVENTS HERE>> USE AS required>>

return localCallback.dispatchTouchEvent(event);

}

@Override

public boolean dispatchTrackballEvent(MotionEvent event) {

return localCallback.dispatchTrackballEvent(event);

}

@SuppressLint("NewApi")

@Override

public boolean dispatchGenericMotionEvent(MotionEvent event) {

return localCallback.dispatchGenericMotionEvent(event);

}

@Override

public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {

return localCallback.dispatchPopulateAccessibilityEvent(event);

}

@Override

public View onCreatePanelView(int featureId) {

return localCallback.onCreatePanelView(featureId);

}

@Override

public boolean onCreatePanelMenu(int featureId,Menu menu) {

return localCallback.onCreatePanelMenu(featureId,menu);

}

@Override

public boolean onPreparePanel(int featureId,View view,Menu menu) {

boolean ret = localCallback.onPreparePanel(featureId,view,menu);

return ret;

}

@Override

public boolean onMenuOpened(int featureId,Menu menu) {

return localCallback.onMenuOpened(featureId,menu);

}

@Override

public boolean onMenuItemSelected(int featureId,MenuItem item) {

return localCallback.onMenuItemSelected(featureId,item);

}

@Override

public void onWindowAttributesChanged(WindowManager.LayoutParams attrs) {

localCallback.onWindowAttributesChanged(attrs);

}

@Override

public void onContentChanged() {

localCallback.onContentChanged();

}

@Override

public void onWindowFocusChanged(boolean hasFocus) {

Log.d("","ttest onfocus changed called");

localCallback.onWindowFocusChanged(hasFocus);

}

@Override

public void onAttachedToWindow() {

localCallback.onAttachedToWindow();

}

@Override

public void onDetachedFromWindow() {

localCallback.onDetachedFromWindow();

}

@Override

public void onPanelClosed(int featureId,Menu menu) {

localCallback.onPanelClosed(featureId,menu);

}

@Override

public boolean onSearchRequested() {

return localCallback.onSearchRequested();

}

@SuppressLint("NewApi")

@Override

public ActionMode onWindowStartingActionMode(ActionMode.Callback callback) {

return localCallback.onWindowStartingActionMode(callback);

}

@SuppressLint("NewApi")

@Override

public void onActionModeStarted(ActionMode mode) {

localCallback.onActionModeStarted(mode);

}

@SuppressLint("NewApi")

@Override

public void onActionModeFinished(ActionMode mode) {

localCallback.onActionModeFinished(mode);

}

}

總結

以上是生活随笔為你收集整理的android dispatchtouchevent 用法,android – 检测每个触摸事件,而不会覆盖dispatchTouchEvent()?...的全部內容,希望文章能夠幫你解決所遇到的問題。

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