在特定时间 - Android中轻击ImageView三次时触发一个动作

时间:2016-08-17 17:37:33

标签: java android android-layout android-gesture

我有项目,我需要计算ImageView的触摸。如果用户连续三次触摸ImageView,则触发操作。

我尝试过使用setOnTouchListener,但找不到任何可以返回整数计数器的方法。

以下是我想要实现的内容的抽象视图:

if(touches == 3) {
//perform the action.
}

有谁能告诉我如何计算ImageView上的fingertouches?如果有更好的方法,请告诉我。

3 个答案:

答案 0 :(得分:0)

ImageViewActivity或[{1}}的实施中保持Fragment次触摸次数。如果您希望快速连续进行3次触摸,例如“三次点击”,请使用onTouchEvent来记录ArrayList的时间。如果差异低于您的阈值,请考虑触摸3次。

答案 1 :(得分:0)

如果你想每隔3次做一些动作就试试这段代码

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    public static int i = 0;
    ImageView myimage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myimage = (ImageView) findViewById(R.id.myimg);
        myimage.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case (R.id.myimg): {
                ++i;
                if (i % 3 == 0) {
//your logic here every 3rd attempt
// if you want to check it on only first 3 attempt if(i==3){some action}

                    Toast.makeText(this, "image is clicked", Toast.LENGTH_LONG).show();
                }
                break;
            }

        }
    }
}

答案 2 :(得分:0)

在这里你可以加上code snippet

package com.pavneet.activitydemo.DB;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import com.pavneet.activitydemo.R;

/**
 * Created by Pavneet Singh on 20/06/16.
 */
public class TestA extends AppCompatActivity {

    private int i=0;
    private ImageView imageView;

    Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            if (msg.what==100){
                i=0;
            }
        }
    };

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test_ab);
        imageView=(ImageView) findViewById(R.id.imageButtontest);

        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (i==0){
                    ++i;
                    handler.sendEmptyMessageDelayed(100,3000); // 3000 equal 3sec , you can set your own limit of secs
                }else if(i==2){
                    Toast.makeText(TestA.this, "Three Touch Clicked" , Toast.LENGTH_SHORT).show();
                    i=0;
                    handler.removeMessages(100);
                }else
                    ++i;
            }
        });

    }
}

布局代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_margin="16dp"
    android:layout_height="match_parent">
<ImageView
    android:src="@mipmap/ic_launcher"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageButtontest"
        android:layout_gravity="center_horizontal" />
</LinearLayout>