【发布时间】:2016-04-05 22:54:25
【问题描述】:
我正在尝试制作一个应用程序,而这件事让我大吃一惊。用户必须从我拥有的 12 个 ImageView 中选择 1 个。如果它是正确的,但用户仅触摸它不到 3 秒,则会显示一条正常消息。但是,如果他/她触摸它超过 3 秒,它会触发一条新的和不同的消息。
问题是我有一个 onClickListener 来获取用户单击的 ImageView 的 TAG,并将其与正确的进行比较。如果它是正确的,它还必须做下一个工作: 用户触摸它的时间是否超过 3 秒?如果是则显示一条消息,如果不显示一条不同的消息。
@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();
}
}
});
我遇到的主要问题是:当我第一次触摸正确的 imageView 时,它不会进入 onTouch,而只会进入 onClick。 你们知道实现这个的更好的想法吗?
非常感谢!
【问题讨论】:
-
尝试使用
onLongClickListener
标签: javascript android