gpt4 book ai didi

android - 如何检测抽屉导航外的触摸事件

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:42:58 25 4
gpt4 key购买 nike

我已经在我的应用程序中实现了 Android 抽屉导航。当用户触摸抽屉导航的外侧时,我可以打开/关闭抽屉。当用户触摸/点击抽屉导航时,你们中的任何人都可以帮助我检测触摸/点击事件吗?我需要在那个事件中执行一些功能。请检查随附的屏幕截图。 enter image description here如有任何帮助,我们将不胜感激。

最佳答案

您必须在 dispatchTouchEvent() 方法中处理触摸位置。查看有关触摸层次结构的更多信息 here

@Override    
public boolean dispatchTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
if (mDrawerLayout.isDrawerOpen(mRightDrawerListView)) {

View content = findViewById(R.id.right_drawer);
int[] contentLocation = new int[2];
content.getLocationOnScreen(contentLocation);
Rect rect = new Rect(contentLocation[0],
contentLocation[1],
contentLocation[0] + content.getWidth(),
contentLocation[1] + content.getHeight());

View toolbarView = findViewById(R.id.toolbar);
int[] toolbarLocation = new int[2];
toolbarView.getLocationOnScreen(toolbarLocation);
Rect toolbarViewRect = new Rect(toolbarLocation[0],
toolbarLocation[1],
toolbarLocation[0] + toolbarView.getWidth(),
toolbarLocation[1] + toolbarView.getHeight());


if (!(rect.contains((int) event.getX(), (int) event.getY())) && !toolbarViewRect.contains((int) event.getX(), (int) event.getY())) {
isOutSideClicked = true;
} else {
isOutSideClicked = false;
}

} else {
return super.dispatchTouchEvent(event);
}
} else if (event.getAction() == MotionEvent.ACTION_DOWN && isOutSideClicked) {
isOutSideClicked = false;
return super.dispatchTouchEvent(event);
} else if (event.getAction() == MotionEvent.ACTION_MOVE && isOutSideClicked) {
return super.dispatchTouchEvent(event);
}

if (isOutSideClicked) {
//make http call/db request
Toast.makeText(this, "Hello..", Toast.LENGTH_SHORT).show();
}
return super.dispatchTouchEvent(event);
}

关于android - 如何检测抽屉导航外的触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34283170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com