如何使用 onTouchListener 计算我点击屏幕的次数?
How do I count the number of times I tap the screen with onTouchListener?
我正在使用可穿戴设备并为其制作应用程序。我有一个计时器和其他一些东西,它们会在我单击开始按钮时开始。问题是开始按钮占用了一些 space,这让事情看起来很拥挤。我使用了 Wearable Action Drawer,但它看起来不太好,所以我求助于使用 onTouchlistner 以及放置我的对象(如计时器)的视图。
布局是FrameLayout。现在,当我使用 onTouchListner 时,我检测到的 MotionEvent 是 ACTION_DOWN 我如何计算这种情况发生 2 次以便开始我想开始的任何事情,当它是 4 次时我调用我的 AlertDialog?
frameLayout = (FrameLayout)findViewById(R.id.myscreen);
frameLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
clicked = clicked + 1;
if(event.getAction() == MotionEvent.ACTION_DOWN)
{
startTimer();
//Check flow rate
if(num == 450)
{
try {
flow.setText(String.valueOf(num));
progressBar.setIndeterminateDrawable(Circle);
progressBar.setVisibility(View.VISIBLE);
} catch (NullPointerException e) {
e.printStackTrace();
}
}
else if(num == 150)
{
try {
flow.setText(String.valueOf(num));
progressBar.setIndeterminateDrawable(Circle);
progressBar.setVisibility(View.VISIBLE);
} catch (NullPointerException e) {
e.printStackTrace();
}
}
}
else if(event.getAction() == MotionEvent.ACTION_DOWN && clicked == 4)
{
Handler mHandler = new Handler(Looper.getMainLooper());
mHandler.post(new Runnable() {
@Override
public void run() {
// Your UI updates here
AlertMessage();
}
});
}
return true;
}
});
clicked 是一个初始化为零的整数,我在使用按钮计算点击次数时使用了它。我现在想计算屏幕的点击次数,所以如果点击 2 次 ----> 如果点击 4 次则开始 --------> 调用 AlertDialog
将计数器递增逻辑与计数器检查逻辑一起移动到 if if(event.getAction() == MotionEvent.ACTION_DOWN)
子句中。
frameLayout = (FrameLayout)findViewById(R.id.myscreen);
frameLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
if(event.getAction() == MotionEvent.ACTION_DOWN)
{
if(clicked == 4)
{
Handler mHandler = new Handler(Looper.getMainLooper());
mHandler.post(new Runnable() {
@Override
public void run() {
// Your UI updates here
AlertMessage();
}
});
return true;
}
clicked = clicked + 1;
startTimer();
....
}
return true;
}
});
我正在使用可穿戴设备并为其制作应用程序。我有一个计时器和其他一些东西,它们会在我单击开始按钮时开始。问题是开始按钮占用了一些 space,这让事情看起来很拥挤。我使用了 Wearable Action Drawer,但它看起来不太好,所以我求助于使用 onTouchlistner 以及放置我的对象(如计时器)的视图。
布局是FrameLayout。现在,当我使用 onTouchListner 时,我检测到的 MotionEvent 是 ACTION_DOWN 我如何计算这种情况发生 2 次以便开始我想开始的任何事情,当它是 4 次时我调用我的 AlertDialog?
frameLayout = (FrameLayout)findViewById(R.id.myscreen);
frameLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
clicked = clicked + 1;
if(event.getAction() == MotionEvent.ACTION_DOWN)
{
startTimer();
//Check flow rate
if(num == 450)
{
try {
flow.setText(String.valueOf(num));
progressBar.setIndeterminateDrawable(Circle);
progressBar.setVisibility(View.VISIBLE);
} catch (NullPointerException e) {
e.printStackTrace();
}
}
else if(num == 150)
{
try {
flow.setText(String.valueOf(num));
progressBar.setIndeterminateDrawable(Circle);
progressBar.setVisibility(View.VISIBLE);
} catch (NullPointerException e) {
e.printStackTrace();
}
}
}
else if(event.getAction() == MotionEvent.ACTION_DOWN && clicked == 4)
{
Handler mHandler = new Handler(Looper.getMainLooper());
mHandler.post(new Runnable() {
@Override
public void run() {
// Your UI updates here
AlertMessage();
}
});
}
return true;
}
});
clicked 是一个初始化为零的整数,我在使用按钮计算点击次数时使用了它。我现在想计算屏幕的点击次数,所以如果点击 2 次 ----> 如果点击 4 次则开始 --------> 调用 AlertDialog
将计数器递增逻辑与计数器检查逻辑一起移动到 if if(event.getAction() == MotionEvent.ACTION_DOWN)
子句中。
frameLayout = (FrameLayout)findViewById(R.id.myscreen);
frameLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
if(event.getAction() == MotionEvent.ACTION_DOWN)
{
if(clicked == 4)
{
Handler mHandler = new Handler(Looper.getMainLooper());
mHandler.post(new Runnable() {
@Override
public void run() {
// Your UI updates here
AlertMessage();
}
});
return true;
}
clicked = clicked + 1;
startTimer();
....
}
return true;
}
});