当ImageView在特定时间内被点击三次时触发一个动作



我有一个项目,我需要在ImageView上计数触摸。如果用户连续触摸ImageView三次,则触发一个动作。

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

这是我想要实现的抽象视图:

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

谁能告诉我如何计数手指触摸在ImageView?如果有更好的方法,请告诉我。

好了,再加上代码片段

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>

在您的ActivityFragmentonTouchEvent的实现中保持ImageView触摸的计数。如果你喜欢快速连续触摸3次,就像"三重点击"一样,使用ArrayList来记录SystemClock的时间。如果差值低于阈值,则考虑触碰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;
            }
        }
    }
}

相关内容

最新更新