私はアプリを作ろうとしており、このことは私の脳を壊しています。私が持っている12のImageViewのうち1つを選択する必要があります。それが正しいが、ユーザーが3秒未満しか触れない場合は、通常のメッセージが表示されます。しかし、3秒以上タッチすると、新しいメッセージが表示されます。onTouch and onClick
問題は、ユーザーがクリックしたImageViewのタグを取得するためにonClickListenerを持っていることと、正しいものと比較することです。正しい場合は、次の作業も行う必要があります。 ユーザーは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();
}
}
});
私がいる主な問題は次のとおりです。私はそれが唯一のonClickで、onTouchに入っていない正しいImageViewのに初めて触れたとき。 あなたはこれを実装するための良いアイデアを知っていますか?
大変ありがとうございます!
ACTION_UP
イベント
ACTION_CANCEL
イベントを処理し、ACTION_UP
としてそれを扱うために通知を得るためにACTION_DOWN
イベントで
'onLongClickListener'を試してみてください –