Javascript onTouch和onClick
我正试着做一个应用程序,这件事让我心碎。用户必须从我的12个图像视图中选择一个。如果它是正确的,但用户仅触摸它不到3秒钟,则会显示正常消息。但是,如果他/她触摸它超过3秒钟,就会触发一个新的和不同的信息 问题是,我有一个onClickListener来获取用户单击的ImageView的标记,并将其与正确的标记进行比较。如果正确,还必须进行下一步工作: 用户触摸它是否超过3秒?如果是,则显示消息,如果不是,则显示其他消息Javascript onTouch和onClick,javascript,android,Javascript,Android,我正试着做一个应用程序,这件事让我心碎。用户必须从我的12个图像视图中选择一个。如果它是正确的,但用户仅触摸它不到3秒钟,则会显示正常消息。但是,如果他/她触摸它超过3秒钟,就会触发一个新的和不同的信息 问题是,我有一个onClickListener来获取用户单击的ImageView的标记,并将其与正确的标记进行比较。如果正确,还必须进行下一步工作: 用户触摸它是否超过3秒?如果是,则显示消息,如果不是,则显示其他消息 @Override public void onClick(View
@Override
public void onClick(View v) {
if(v.getId()==R.id.btLogOut){ //this one is to see if the user clicked the logout Button
DBH.deletePerson();
finish();
startActivity(new Intent(Fake.this, MainActivity.class));
finish();
}
if(v.getTag().equals("the one who waits for the on touch")){
ImageView x = (ImageView)findViewById(v.getId());
x.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastDown = System.currentTimeMillis();
break;
case MotionEvent.ACTION_UP:
lastDuration = System.currentTimeMillis() - lastDown;
cambio(lastDuration);
break;
}
return false;
}
public void cambio(long ld){ //check time it has been touched
if (ld > 3000) {
Toast.makeText(getApplicationContext(), "YES", Toast.LENGTH_SHORT).show();
lastDuration = 0;
}
if (ld < 1000) {
lastDuration = 0;
Toast.makeText(getApplicationContext(), "NO", Toast.LENGTH_SHORT).show();
}
}
});
@覆盖
公共void onClick(视图v){
if(v.getId()==R.id.btLogOut){//这是为了查看用户是否单击了注销按钮
DBH.deletePerson();
完成();
startActivity(新意图(false.this,MainActivity.class));
完成();
}
if(v.getTag().equals(“等待触控的人”)){
ImageView x=(ImageView)findViewById(v.getId());
x、 setOnTouchListener(新视图。OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
开关(event.getAction()){
case MotionEvent.ACTION\u DOWN:
lastDown=System.currentTimeMillis();
打破
case MotionEvent.ACTION\u UP:
lastDuration=System.currentTimeMillis()-lastDown;
坎比奥(最后期限);
打破
}
返回false;
}
public void cambio(long ld){//检查它被触摸的时间
如果(ld>3000){
Toast.makeText(getApplicationContext(),“是”,Toast.LENGTH\u SHORT.show();
lastDuration=0;
}
如果(ld<1000){
lastDuration=0;
Toast.makeText(getApplicationContext(),“NO”,Toast.LENGTH\u SHORT.show();
}
}
});
我遇到的主要问题是:当我第一次触摸到正确的imageView时,它不会进入onTouch,只会进入onClick。
你们知道有什么更好的办法来实施这个吗
非常感谢你
在ACTION\u DOWN
事件中返回true
以获得ACTION\u UP
事件的通知操作\u取消
事件,并将其视为操作\u向上
ACTION\u DOWN
和ACTION\u UP
之间的时间间隔,并忽略超过x
秒的触摸谢谢,我需要onClick侦听器,因为如果用户单击另一个按钮/Imageview,消息/操作就会完成。所以我需要我的应用程序来侦听这些单击,但是当用户单击与我给出的标签相同的Imageview时,我希望这个Imageview侦听它关闭的时间。这很好。你做得对。返回即可在onTouch中为true,并遵循上面的其他2点。尝试使用
onLongClickListener